MSTR Cat

Blockchain/Tahap II · Mekanisme/2.3 Blok dan rantaian/Pelajaran 2

Pokok Merkle

Cap jari 32 bait yang mengikat ribuan transaksi

BahanPeneroka blok dengan visualisasi cabang MerkleEmpat label alfanumerik pendek (A, B, C, D)Alat penghasihan SHA-256 berganda

Ingin tahu

  1. Bagaimanakah satu nilai hash dapat membuktikan kewujudan empat ribu transaksi yang berbeza?
  2. Mengapa Satoshi memilih untuk menggabungkan entri terakhir yang bersendirian dengan dirinya sendiri, dan apa kos yang ditanggung akibat pilihan tersebut?
  3. Apakah kelemahan khusus yang diperkenalkan oleh peraturan pasangan pendua dalam pelaksanaan awal Bitcoin?

Teroka

  1. Ralph Merkle memfailkan paten bagi pokok hash binari pada tahun 1979 (diluluskan pada 1982), iaitu struktur data yang direka untuk meringkaskan set data besar dengan cekap. Dalam Bitcoin, seni bina ini meringkaskan ribuan pengenal transaksi kepada satu nilai 32 bait yang dikenali sebagai akar Merkle. Akar ini dibenamkan terus ke dalam kepala blok 80 bait, mewujudkan komitmen kriptografi yang tidak boleh diubah terhadap setiap transaksi dalam blok tersebut.
  2. Pembinaan dilakukan secara rekursif dari bawah ke atas. ID transaksi digabungkan secara berpasangan dan diproses melalui hashing SHA-256 berganda untuk menghasilkan nod induk. Pemasangan ini diteruskan tahap demi tahap sehingga tinggal satu hash akar. Jika mana-mana tahap mengandungi bilangan entri yang ganjil, entri terakhir dipasangkan dengan dirinya sendiri untuk mengekalkan struktur binari, memastikan pokok seimbang dengan betul pada setiap peringkat.
  3. Sifat logaritma struktur ini membolehkan pengesahan pembayaran ringkas (SPV). Klien ringan tidak memuat turun blok penuh; sebaliknya, ia meminta cabang Merkle daripada nod penuh. Cabang ini hanya terdiri daripada hash sibling di sepanjang laluan dari transaksi tertentu hingga ke akar. Bagi blok yang mengandungi 4,000 transaksi, bukti ini memerlukan kira-kira dua belas nilai hash, iaitu sebahagian kecil daripada jumlah saiz data.
  4. Dengan menggabungkan hash transaksinya sendiri dengan hash sibling yang diberikan, klien ringan mengira semula akar Merkle dan membandingkannya dengan nilai dalam kepala blok yang telah dimuat turun. Jika kedua-duanya sepadan, kemasukan transaksi itu disahkan secara kriptografi tanpa perlu menyimpan keseluruhan rantaian. Mekanisme ini membolehkan dompet mudah alih berfungsi dengan selamat pada peranti yang mempunyai storan dan kuasa pemprosesan terhad.
  5. Segregated Witness (SegWit), yang diaktifkan pada Ogos 2017, memperkenalkan struktur pokok Merkle kedua. Jika pokok asal memberi komitmen kepada ID transaksi, pokok witness pula memberi komitmen kepada ID transaksi witness. Akar pokok kedua ini tidak disimpan dalam kepala blok; sebaliknya ia dikomitkan dalam output OP_RETURN transaksi coinbase, yang dianggap sebagai data biasa oleh nod lama, sekali gus mengekalkan keserasian.
  6. Peraturan pasangan sendiri ini menyembunyikan satu kecacatan (CVE-2012-2459). Oleh sebab entri terakhir yang bersendirian dipasangkan dengan dirinya sendiri, senarai transaksi yang berakhir dengan pasangan pendua menghasilkan akar Merkle yang sama seperti senarai tanpa pendua itu. Penyerang boleh menyebarkan varian cacat bagi blok yang sah itu; nod yang menolaknya boleh menandakan hash blok yang tulen sebagai tidak sah lalu tidak lagi seiring dengan rangkaian. Pembaikan pada 2012 menjadikan nod mengenali corak ini dan bukannya menyimpan blok itu dalam cache sebagai rosak.

Fakta utama

  • Akar Merkle ialah satu hash 32 bait yang disimpan dalam kepala blok dan memberi komitmen kepada semua transaksi dalam blok tersebut.
  • Bitcoin menggunakan pengiraan hash SHA-256 berganda pada setiap peringkat pembinaan pokok Merkle.
  • Bilangan entri yang ganjil pada mana-mana tahap ditangani dengan memasangkan entri terakhir dengan dirinya sendiri.
  • Bukti Merkle bagi satu transaksi dalam blok yang besar biasanya memerlukan kira-kira dua belas hash sibling.
  • SegWit menambah pokok Merkle kedua bagi ID transaksi witness, yang dikomitkan dalam transaksi coinbase.
  • CVE-2012-2459 ialah pepijat yang berkaitan dengan logik pasangan pendua dalam versi awal Bitcoin Core.

Latihan sembilan, enam, tiga, satu

9KumpulSenaraikan 9 sistem atau protokol dunia sebenar yang menggunakan pokok hash untuk pengesahan integriti data.
6KelompokkanKumpulkan 9 item tersebut kepada 6 kumpulan berdasarkan apa yang mereka lindungi: fail, pakej perisian, sijil, pangkalan data, blockchain, atau yang lain.
3SaringKurangkan 6 kumpulan tersebut kepada 3 sebab utama mengapa struktur bukti logaritma lebih disukai berbanding pengimbasan linear untuk set data yang besar.
1KristalkanTulis satu ayat yang menerangkan bagaimana perubahan satu bit dalam nod daun mengubah keseluruhan hash akar.

Semakan fakta

Tarikh, angka dan dakwaan telah disemak berbanding dengan sumber yang diterbitkan yang disenaraikan di bawah.

Buka dalam akademi interaktif →

EN PT ES ZH JA KO RU DE FR