Apakah Pokok Merkle? Panduan Pemula untuk Komponen Blockchain ini

Merkle Trees ialah komponen asas blockchain yang menyokong fungsinya. Mereka membenarkan pengesahan yang cekap dan selamat bagi struktur data yang besar, dan dalam kes rantaian blok, set data yang berpotensi tanpa sempadan.

Pelaksanaan pokok Merkle dalam rantaian blok mempunyai pelbagai kesan. Ia membolehkan mereka membuat skala sambil turut menyediakan seni bina berasaskan cincang untuk mereka mengekalkan integriti data dan cara remeh untuk mengesahkan integriti data.

Fungsi cincang kriptografi ialah teknologi asas yang membolehkan pokok Merkle berfungsi, jadi pertama sekali, adalah penting untuk memahami apakah fungsi cincang kriptografi.

Keputusan Pantas: Pepohon Merkle ialah struktur data yang terdiri daripada cincang kriptografi yang membenarkan pengesahan integriti yang cekap dan pemetaan set data yang besar, menjadikannya komponen penting sistem seperti blok blok dan kawalan versi teragih.


Fakta Pantas

Perkara utamaPenerangan Produk
Fungsi cincang kriptografiFungsi cincang yang mengambil input daripada sebarang saiz dan mengeluarkan nilai cincang panjang tetap. Digunakan dalam pokok Merkle.
Struktur pokok MerkleStruktur data pokok di mana setiap nod bukan daun ialah cincangan nod anaknya. Membolehkan pemetaan yang cekap dan pengesahan set data yang besar.
Hash akarHash di bahagian atas pokok Merkle yang mewakili hash keseluruhan pokok. Bertindak sebagai cap jari untuk set data penuh.
Bukti MerkleBenarkan pengesahan integriti data dan kedudukan dalam pepohon tanpa memerlukan set data penuh, hanya cincang akar.
Pelaksanaan dalam BitcoinPokok Merkle menyimpan transaksi dalam blok. Cincang akar yang disimpan dalam pengepala blok membolehkan nod SPV mengesahkan transaksi.
Pelaksanaan blockchain lainDigunakan dalam banyak blockchain seperti Ethereum yang menggunakan Merkle Patricia Trees yang lebih kompleks.
Sistem teragihBenarkan sistem kawalan versi seperti Git & IPFS untuk mengesahkan data yang dikongsi antara rakan sebaya dengan mudah.

Fungsi Hash Kriptografi

Ringkasnya, fungsi cincang ialah sebarang fungsi yang digunakan untuk memetakan data saiz (input) arbitrari kepada output saiz tetap. Algoritma pencincangan digunakan pada input data dan output panjang tetap yang terhasil dirujuk sebagai cincang.

Banyak algoritma pencincangan tersedia secara meluas dan boleh dipilih berdasarkan keperluan anda.

Hash yang terhasil daripada input sewenang-wenangnya bukan sahaja tetap panjang, ia juga benar-benar unik untuk input dan fungsi itu sendiri adalah deterministik. Iaitu, tidak kira berapa kali anda menjalankan fungsi pada input yang sama, output akan sentiasa sama.

Sebagai contoh, jika anda mempunyai set data berikut di bawah sebagai input, output yang terhasil adalah unik untuk setiap input. Perhatikan bagaimana dalam contoh kedua dan ketiga, walaupun perbezaan input hanya satu perkataan, output yang terhasil adalah berbeza sama sekali.

Ini sangat penting kerana ia membolehkan "cap jari" data.

Fungsi cincang kriptografi, Imej daripada Wikipedia

Memandangkan panjang output (jumlah cincang dalam contoh) sentiasa sama seperti yang ditentukan oleh algoritma pencincangan yang digunakan, sejumlah besar data boleh dikenal pasti melalui cincangan yang terhasil.

Dengan sistem yang mengandungi sejumlah besar data, faedah dapat menyimpan dan mengenal pasti data dengan output panjang tetap boleh mencipta penjimatan storan yang besar dan membantu meningkatkan kecekapan.

Dalam rantaian blok, algoritma pencincangan digunakan untuk menentukan keadaan rantaian blok.

Blockchain ialah senarai terpaut yang mengandungi data dan penuding cincang yang menghala ke blok sebelumnya, mewujudkan rantaian blok yang disambungkan, oleh itu dinamakan "chain block".

Setiap blok disambungkan antara satu sama lain melalui penuding cincang, iaitu cincangan data di dalam blok sebelumnya bersama-sama dengan alamat blok sebelumnya. Dengan memautkan blok data dalam format ini, setiap cincangan yang terhasil bagi blok sebelumnya mewakili keseluruhan keadaan rantaian blok kerana semua data cincang bagi blok sebelumnya dicincang menjadi satu cincang.

Ini diwakili (dalam kes algoritma SHA-256) oleh output (cincang) seperti ini:

b09a57d476ea01c7f91756adff1d560e579057ac99a28d3f30e259b30ecc9dc7

Cincang di atas ialah cap jari bagi keseluruhan keadaan rantaian blok sebelum itu. Keadaan blockchain sebelum blok baharu (sebagai data cincang) ialah input, dan cincang yang terhasil ialah output.

Walaupun adalah mungkin untuk menggunakan cincang kriptografi tanpa pokok Merkle, ia adalah sangat tidak cekap dan tidak boleh berskala. Menggunakan cincang untuk menyimpan data dalam blok dalam format siri memakan masa dan menyusahkan.

Seperti yang anda akan lihat, pepohon Merkle membenarkan penyelesaian remeh integriti data serta pemetaan data tersebut melalui keseluruhan pepohon menggunakan bukti Merkle.


Pokok Merkle dan Bukti Merkle

Dinamakan sempena Ralph Merkle, yang mempatenkan konsep itu pada tahun 1979, pokok Merkle pada asasnya ialah pokok struktur data di mana setiap nod bukan daun ialah cincangan nod anak masing-masing.

Nod daun adalah peringkat nod terendah dalam pokok. Pada mulanya, ia mungkin kedengaran sukar untuk difahami, tetapi jika anda melihat angka yang biasa digunakan di bawah, ia akan menjadi lebih mudah untuk difahami.

Pokok Hash

Contoh pokok cincang binari, Imej daripada Wikipedia

Yang penting, perhatikan bagaimana nod bukan daun atau "cabang" (diwakili oleh Hash 0-0 dan Hash 0-1) di sebelah kiri, ialah cincangan anak masing-masing L1 dan L2. Selanjutnya, perhatikan cara Hash cawangan 0 ialah cincangan anak-anaknya yang bercantum, Hash cawangan 0-0 dan Hash 0-1.

Contoh di atas adalah bentuk pokok Merkle yang paling biasa dan ringkas yang dikenali sebagai Pokok Merkle Binari. Seperti yang anda lihat, terdapat cincang atas yang merupakan cincangan keseluruhan pokok, yang dikenali sebagai cincang akar. Pada asasnya, pepohon Merkle ialah struktur data yang boleh mengambil bilangan "n" cincang dan mewakilinya dengan cincang tunggal.

Struktur pepohon membolehkan pemetaan yang cekap bagi jumlah data yang besar secara sewenang-wenangnya dan membolehkan pengecaman mudah di mana perubahan dalam data itu berlaku. Konsep ini membolehkan pembuktian Merkle, yang dengannya, seseorang boleh mengesahkan bahawa pencincangan data adalah konsisten sehingga ke atas pokok dan dalam kedudukan yang betul tanpa perlu melihat keseluruhan set cincang.

Sebaliknya, mereka boleh mengesahkan bahawa sebahagian data adalah konsisten dengan cincang akar dengan hanya menyemak subset kecil cincang dan bukannya keseluruhan set data.

Selagi cincangan akar diketahui umum dan dipercayai, sesiapa sahaja yang ingin melakukan carian nilai kunci pada pangkalan data boleh menggunakan bukti Merkle untuk mengesahkan kedudukan dan integriti sekeping data dalam pangkalan data yang mempunyai akar tertentu.

Apabila cincang akar tersedia, pokok cincang boleh diterima daripada mana-mana sumber yang tidak dipercayai dan satu cabang pokok itu boleh dimuat turun pada satu masa dengan pengesahan segera integriti data, walaupun keseluruhan pokok itu belum tersedia.

Salah satu faedah terpenting struktur pokok Merkle ialah keupayaan untuk mengesahkan set data yang besar secara sewenang-wenangnya melalui mekanisme pencincangan serupa yang digunakan untuk mengesahkan jumlah data yang lebih kecil.

Pokok ini berfaedah untuk mengedarkan set data yang besar ke bahagian yang lebih kecil yang boleh diurus di mana halangan untuk pengesahan integriti dikurangkan dengan ketara walaupun saiz data keseluruhannya lebih besar.

Cincang akar boleh digunakan sebagai cap jari untuk keseluruhan set data, termasuk keseluruhan pangkalan data atau mewakili keseluruhan keadaan rantaian blok. Dalam bahagian berikut, kita akan membincangkan bagaimana Bitcoin dan sistem lain melaksanakan pokok Merkle.


Pokok Merkle dalam Bitcoin

Fungsi cincang kriptografi yang digunakan oleh Bitcoin ialah algoritma SHA-256. Ini bermaksud "Algoritma Hashing Selamat", yang outputnya ialah 256 bit panjang tetap. Fungsi asas pokok Merkle dalam Bitcoin adalah untuk menyimpan, dan akhirnya memangkas transaksi di setiap blok.

Seperti yang dinyatakan sebelum ini, blok dalam blok disambungkan melalui cincang blok sebelumnya. Dalam Bitcoin, setiap blok mengandungi semua transaksi dalam blok tersebut serta pengepala blok yang terdiri daripada:

  • Sekat Nombor Versi
  • Hash Sekat Sebelumnya
  • Timestamp
  • Sasaran Kesukaran Perlombongan
  • Nonce
  • Merkle Root Hash

Imej di bawah adalah daripada kertas putih Bitcoin dan menggambarkan bagaimana pokok Merkle sesuai dengan setiap blok.

Pokok Merkle

Urus niaga dimasukkan ke dalam blok oleh pelombong dan dicincang sebagai sebahagian daripada pokok Merkle, yang membawa kepada akar Merkle yang disimpan dalam pengepala blok. Reka bentuk ini mempunyai beberapa faedah yang berbeza.

Paling ketara, seperti yang digariskan dalam kertas putih, ini membolehkan kewujudan nod Pengesahan Pembayaran Mudah (SPV), juga dikenali sebagai "pelanggan ringan". Nod ini tidak perlu memuat turun keseluruhan blockchain Bitcoin, hanya pengepala blok rantai terpanjang.

Nod SPV boleh mencapai ini dengan menanyakan nod rakan sebaya mereka sehingga mereka yakin bahawa pengepala blok tersimpan yang mereka kendalikan adalah sebahagian daripada rantaian terpanjang. Nod SPV kemudiannya dapat menentukan status transaksi dengan menggunakan bukti Merkle untuk memetakan urus niaga ke pepohon Merkle tertentu dengan cincang akar pepohon Merkle masing-masing dalam pengepala blok yang merupakan sebahagian daripada rantaian terpanjang.

Selain itu, pelaksanaan Bitcoin bagi pokok Merkle membolehkan pemangkasan rantaian blok untuk menjimatkan ruang. Ini adalah hasil daripada hanya cincang akar yang disimpan dalam pengepala blok, oleh itu, blok lama boleh dipangkas dengan mengalihkan dahan pokok Merkle yang tidak diperlukan sambil hanya mengekalkan yang diperlukan untuk bukti Merkle.


Pelaksanaan Pokok Merkle dalam Rantaian dan Sistem Blok Lain

Walaupun Bitcoin adalah blok pertama yang melaksanakan pokok Merkle, banyak blok lain melaksanakan struktur pokok Merkle yang serupa atau versi yang lebih kompleks.

Selanjutnya, pelaksanaan pokok Merkle bukan sahaja terhad kepada rantaian blok dan digunakan pada pelbagai sistem lain.

Ethereum, sebagai mata wang kripto lain yang paling dikenali, juga merupakan contoh hebat pelaksanaan pokok Merkle yang berbeza. Oleh kerana Ethereum adalah turing-lengkap sebagai platform untuk membina aplikasi yang lebih kompleks, ia menggunakan versi yang lebih kompleks bagi pokok Merkle yang dipanggil Pokok Merkle Patricia yang sebenarnya merupakan 3 pokok Merkle berasingan yang digunakan untuk tiga jenis objek. Anda boleh mengetahui lebih lanjut mengenai pokok-pokok ini di sini.

Akhir sekali, pokok Merkle adalah komponen penting sistem kawalan versi teragih seperti Git dan IPFS. Keupayaan mereka untuk memastikan dan mengesahkan dengan mudah integriti data yang dikongsi antara komputer dalam format P2P menjadikan mereka tidak ternilai kepada sistem ini.


Kesimpulan

Pokok Merkle adalah komponen penting dalam rantaian blok dan secara berkesan membolehkannya berfungsi dengan kebolehubahan yang boleh dibuktikan dan integriti transaksi.

Memahami peranan yang mereka mainkan dalam rangkaian teragih dan teknologi asas fungsi cincang kriptografi mereka adalah penting untuk memahami konsep asas dalam mata wang kripto sambil ia terus berkembang menjadi sistem yang lebih besar dan lebih kompleks.

Sumber: https://blockonomi.com/merkle-tree/