26 / 736MRKL

Merkle Tree

pohon Merkle

Cara merangkum transaksi menjadi satu sidik jari dan memeriksa masuknya pembayaran tanpa mengunduh seluruh blok.

Merkle Tree menggabungkan sidik jari kriptografis data secara bertahap menjadi satu hasil. Di Bitcoin, hasilnya adalah Merkle root yang disimpan dalam header blok. Beberapa sidik jari tambahan memungkinkan pemeriksaan bahwa transaksi tertentu sesuai dengan akar tersebut tanpa mentransfer seluruh transaksi lainnya.

Dompet menampilkan bahwa pembayaran sudah masuk ke sebuah blok. Bagaimana memeriksanya tanpa mengunduh seluruh isi? Di sinilah Merkle Tree berguna. Transaksi mula-mula diwakili oleh hash, yakni sidik jari kriptografis singkat. Hash kemudian digabungkan bertahap menjadi satu sidik jari bersama, disebut akar. Header memuat Merkle root ini dan menghubungkan blok dengan transaksinya. Akar bukan arsip yang bisa dibaca kembali untuk mendapatkan semua pembayaran; fungsinya memverifikasi data yang diberikan. [1] [2]

Bayangkan empat transaksi A, B, C, dan D. Ambil sidik jarinya, gabungkan A dengan B, lalu hitung hash baru AB. Lakukan hal yang sama pada C dan D untuk mendapatkan CD. Terakhir, gabungkan sidik jari AB dan CD untuk menghitung akar. Huruf-huruf ini hanya nama transaksi dan hasil antara, bukan hash sungguhan. Prosesnya seperti pohon terbalik: banyak daun bertemu melalui cabang menuju satu akar. Lebih banyak transaksi menambah tingkat, tetapi prinsipnya tetap sama. [3]

Untuk memeriksa B, Anda memiliki datanya dan menghitung sidik jarinya. Cukup dapatkan sidik jari A dan gabungan CD, beserta urutannya yang benar. Dari A dan B Anda membuat AB, lalu dari AB dan CD menghitung akar untuk dibandingkan dengan akar dalam header. Jalur pelengkap ini disebut Merkle proof. Isi A, C, dan D tidak diperlukan. Pada pohon seimbang dengan 1024 transaksi, jalurnya memiliki 10 hash saudara. Jadi, ketika blok membesar, buktinya bertambah jauh lebih lambat daripada seluruh daftar transaksi. [2] [3]

Bukti yang cocok dengan akar tidak berarti header yang diberikan boleh dipercaya begitu saja. Proof of Work juga harus diperiksa: apakah hasil perhitungan penambangan memenuhi tingkat kesulitan yang diwajibkan? Selain itu, header harus terhubung dengan rantai yang sesuai. Bahkan setelah itu, Merkle proof tidak memeriksa semua tanda tangan dan aturan seluruh transaksi di blok. Itu dilakukan oleh Full Node. Karena itu, verifikasi pembayaran sederhana SPV dalam whitepaper memiliki asumsi keamanan berbeda dari validasi penuh. Reorganisasi juga bisa memindahkan blok keluar dari cabang aktif: isinya masih dapat dibuktikan, tetapi posisi pembayaran dalam riwayat terkini bisa berubah. [2]

Pada pohon Bitcoin biasa, daun adalah pengenal txid dalam urutan transaksi blok, dimulai dengan Coinbase Transaction, transaksi khusus yang digunakan penambang untuk mengklaim imbalan blok. Pasangan digabungkan sebagai byte dan di-hash dua kali dengan SHA-256. Jika tingkat tertentu berakhir dengan satu hash tanpa pasangan, hash itu digandakan untuk perhitungan; tidak ada pembayaran tambahan. Jika hanya satu transaksi, txid-nya langsung menjadi akar. Penggandaan ini membutuhkan pemeriksaan duplikat yang cermat dalam implementasi. Pembaruan protokol SegWit juga memisahkan data witness, seperti tanda tangan. Sidik jari kriptografis lain, yang dicatat dalam Coinbase Transaction, menghubungkan data ini dengan blok. Sidik jari ini disebut witness commitment. Karena itu, pohon txid biasa tidak boleh disamakan dengan pohon witness. [3] [4]

Untuk gambaran yang lebih utuh, baca entri ini bersama Block, Transaksi, Block Header. Entri ini juga dirujuk dari Block Header, Hash, SHA-256, Konfirmasi.

DOC · 001Bitcoin Developer Guide — Merkle TreesDokumentasi DOC · 002Bitcoin whitepaper — Simplified Payment VerificationSumber primer DOC · 003Bitcoin Core — Merkle tree implementationSumber primer DOC · 004BIP141: witness commitmentSumber primer
Direvisi: Utamakan sumber · Bukan nasihat investasi