Pokok Merkle membenarkan komputer di rangkaian untuk mengesahkan rekod individu tanpa perlu menyemak dan membandingkan versi keseluruhan pangkalan data. Mereka melakukannya dengan menggunakan kriptografi yang memperlihatkan catatan individu dan juga menjamin bahawa semua rekod lain dalam pangkalan data belum diubah. Pertama kali dipatenkan pada tahun 1979 oleh Ralph Merkle, pokok Merkle telah menjadi kunci penting untuk pengesahan pangkalan data sepanjang sejarah komputer.

Merkle Trees sangat berguna untuk rangkaian yang diedarkan di mana beberapa komputer menyimpan salinan pangkalan data atau lejar yang sama. Semasa Satoshi mencipta Bitcoin, menggunakan Merkle tree untuk pengesahan transaksi adalah tidak perlu. Kerana sifat blockchain yang diedarkan, kami memerlukan cara yang selamat dan cepat untuk memastikan semua orang di rangkaian mempunyai lejar yang sama.

Sekiranya anda mempelajari blockchain, anda mungkin pernah mendengar tentang pokok Merkle dan akar Merkle. Walau bagaimanapun, ramai pelabur dan peminat tidak tahu bagaimana mereka berfungsi. Memandangkan mereka adalah bahagian utama keselamatan dan kepercayaan blockchain, perlu memahami asasnya. Mekanisme pintar ini memungkinkan penyimpanan dan pengambilan berjuta-juta transaksi blockchain dapat dilakukan.

Keperluan untuk Pengesahan yang Efisien

Mari kita mulakan dengan asas-asasnya. Mengapa kita memerlukan pokok Merkle dan apa yang menjadikannya berguna dalam konteks blockchain?

Untuk menjawab soalan itu, pertimbangkan dunia tanpa pokok Merkle untuk pengesahan. Sekiranya Bitcoin tidak mempunyai pohon Merkle, setiap simpul di rangkaian harus menyimpan salinan lengkap setiap transaksi yang pernah berlaku di Bitcoin. Kemudian, ketika mengesahkan transaksi yang lalu, simpul harus menghubungi jaringan dan mendapatkan salinan lejar dari rakan sejawatnya. Garis demi garis, simpul perlu membandingkan setiap entri dengan rekodnya sendiri untuk memastikan lejar rangkaian sesuai dengan tepat. Sekiranya ada perubahan yang dilakukan, ia akan menjejaskan keselamatan rangkaian.

Kerana mengesahkan data memerlukan memiliki data itu sendiri, setiap permintaan pengesahan di Bitcoin akan memerlukan sebilangan besar maklumat dihantar melalui rangkaian. Kemudian, komputer yang mengesahkan perlu mendedikasikan kuasa pemprosesan untuk membandingkan lejar untuk memastikan tidak ada perubahan.

Pokok merkle menyelesaikan masalah ini dengan mencantumkan rekod dalam lejar. Ini secara berkesan melepaskan bukti data dari data itu sendiri. Hash ini adalah pesanan berukuran lebih kecil daripada lejar itu sendiri, jadi membuktikan kesahihan transaksi hanya melibatkan pengiriman paket kecil di seluruh rangkaian. Ini membolehkan anda membuktikan bahawa dua versi lejar sesuai dengan kuasa pengkomputeran minimum dan lebar jalur rangkaian.

Sekiranya kedengarannya hebat, itu kerana memang begitu. Pokok Merkle adalah penemuan kriptografi yang sangat hebat. Jadi, sekarang persoalannya bagaimana mereka berfungsi?

Penyegaran Pantas mengenai Hashing

Sebelum kita mengetahui dengan terperinci mengenai pokok Merkle, kita memerlukan asas kriptografi dalam pencetakan. Blockchains menggunakan hashing di semua tempat, dari bukti algoritma kerja hingga pengesahan fail. Hashing adalah asas kriptografi moden.

Tanpa terlalu jauh ke rumpai, hash adalah sejenis algoritma yang mengambil input apa pun, tidak kira panjangnya, dan menghasilkan output rawak panjang standard. Sebagai contoh, dalam Bitcoin, transaksi “Alice mengirimkan Bob 1 BTC” akhirnya kelihatan seperti rentetan watak rawak:

“3cbcf3e1075b0b3357140de438336733bd6927cd1e78d36cc278324fcce932ad”

Rentetan watak ini adalah hash, dan itu deterministik. Itu bermaksud bahawa “A -> B 1BTC ”sentiasa mempunyai output yang sama.

Walau bagaimanapun, hash mempunyai harta lain. Bahkan perubahan kecil input masuk ke perubahan drastik dalam output. Sekiranya kita sedikit mengubah urus niaga menjadi “A-> B 1.1BTC, ”maka hash menjadi sama sekali berbeza. Oleh itu, jelas jika rekod telah diubah walaupun oleh satu watak.

Hash mengagumkan kerana alasan lain juga, tetapi memahami bahawa hash bersifat deterministik dan perubahan menghasilkan air terjun sudah cukup untuk mendapatkan bagaimana pokok Merkle berfungsi.

Bagaimana Anda Membuat Pokok Merkle

pokok merkle sederhana

Pokok Merkle. Pokok Blockchain Merkle merangkumi ribuan hash. Hanya 8 yang digambarkan di sini.

Sekarang, sudah tiba masanya untuk membina pokok Merkle kami. Kami akan memanggil transaksi Allice / Bob kami di atas “Transaksi A.” Apabila transaksi itu ditambahkan ke blockchain, ia menjadi bahagian blok dengan transaksi lain. Untuk kesederhanaan, kami hanya akan memanggil urus niaga B, C, dan D.

Setiap transaksi tersebut dicincang, jadi kami tidak perlu menyimpan perincian tentang siapa dan berapa transaksi itu. Tetapi, kami masih dapat membuktikan bahawa transaksi tersebut tidak diubah kerana kami memiliki semua hash. Sekarang, kita mempunyai H (A), H (B), H (C), dan H (D).

Memegang empat hash bukanlah masalah besar. Namun, setiap blok Bitcoin mengandungi sekitar 2,000 transaksi, jadi menyimpan dan menghantar semua hash tersebut terlalu banyak penyimpanan dan lebar jalur. Pokok Merkle menyelesaikan masalah itu dengan memasangkan transaksi dan menyatukannya.

Sekarang, H (A) + H (B) = H (AB) dan H (C) + H (D) = H (CD). Dengan menggabungkan dan mencantumkan transaksi, kami mengurangkan jumlah hash yang harus kami simpan separuh. Kita boleh melakukan perkara yang sama sekali lagi sehingga H (AB) + H (CD) = H (ABCD). Dengan melakukannya, kami hanya memiliki satu hash untuk menyimpan yang bersifat deterministik berdasarkan hash semua transaksi yang mendasari. Hash tunggal ini dipanggil root Merkle.

Mengesahkan Transaksi Menggunakan Merkle Root

Hash akar pokok Merkle adalah bahagian penting dari setiap blok Bitcoin yang dihubungkan ke blok seterusnya dalam rantaian.

Setiap blok Bitcoin mempunyai root Merkle yang terdapat di header blok. Begitulah cara kami mengesahkan kandungan blok dan konsistensi berbilang lejar. Sekiranya salinan blockchain saya mempunyai root Merkle yang sama untuk blok seperti salinan blockchain anda, maka kami tahu semua transaksi di blok itu sama dan kami bersetuju dengan lejar. Bahkan sedikit ketidakkonsistenan akan menyebabkan akar Merkle sangat berbeza kerana sifat hash.

merkle mengesahkan tx

Untuk mengesahkan Transaksi D, seseorang hanya perlu mengetahui H (AB), H (C), H (D), dan H (EFGH).

Sekiranya terdapat perbezaan dalam root Merkle, saya boleh meminta dua sub-hash dari pihak berkuasa yang dipercayai. Dari sana, kami dapat mempersempit rekod mana yang tidak kami setujui dengan meminta sub-hash lebih lanjut. Akibatnya, kita dapat mengenal pasti perbezaan tanpa perlu melalui baris demi baris melalui keseluruhan lejar.

Kesimpulannya

Rantai blok, pangkalan data, dan jaringan di seluruh dunia menggunakan pohon Merkle untuk mengkoordinasikan rekod dengan cepat dan berkesan di beberapa komputer. Setelah anda memahami asasnya, mudah untuk mengetahui mengapa kaedah penstrukturan data ini menjadikan blockchain selamat dan cekap.