Pohon Merkle adalah metode penataan data yang memungkinkan sejumlah besar informasi diverifikasi keakuratannya dengan sangat cepat dan efisien. Setiap pohon Merkle menghasilkan satu string data, yang dikenal sebagai akar Merkle. Dengan root Merkle, ditambah beberapa data lainnya, komputer mana pun dapat memvalidasi semua entri lain di pohon Merkle secara efisien. Dalam teknologi blockchain, entri ini adalah nomor identifikasi transaksi.
Jika Anda berkecimpung dalam dunia blockchain, Anda mungkin pernah menemukan ungkapan “pohon merkle” sebelumnya. Meskipun pohon Merkle bukanlah konsep yang dipahami secara luas, namun konsepnya juga tidak terlalu rumit. Postingan ini akan menjelaskan pohon Merkle dalam bahasa Inggris sederhana dan membantu Anda memahami bagaimana pohon Merkle memungkinkan teknologi blockchain.
Kisah Merkle Trees dimulai pada tahun 1979 dengan seorang pria bernama Ralph Merkle. Saat kuliah pascasarjana di Universitas Stanford, Merkle menulis makalah akademis berjudul “Tanda Tangan Digital Bersertifikat.” Dalam esai ini, Merkle menjelaskan metode pembuatan tanda tangan digital dan menetapkan metode baru yang sangat efisien dalam membuat bukti kriptografi. Dengan kata lain, dia merancang proses verifikasi data yang memungkinkan komputer melakukan pekerjaannya jauh lebih cepat dibandingkan sebelumnya.
Merkle menyebut idenya “Tree Signatures” atau “Tree Authentication. Saat ini, ide ini lebih dikenal dengan nama Pohon Merkle, yang diambil dari nama penemunya.
Tidaklah berlebihan untuk mengatakan bahwa Merkle Trees merevolusi dunia kriptografi dan, lebih jauh lagi, cara kerja protokol komputer terenkripsi. Faktanya, Merkle Trees disebutkan berulang kali dalam esai Satoshi Nakamoto tahun 2008 yang memperkenalkan Bitcoin ke dunia. Mereka digunakan secara luas dalam protokol Bitcoin.
Jadi, apa sebenarnya Pohon Merkle itu? Mari kita cari tahu.
Pertama, penting untuk memahami konsep fungsi hash kriptografi. Sederhananya, fungsi hash adalah fungsi matematika yang tidak dapat diubah yang mengambil masukan dengan panjang berapa pun—dari satu karakter hingga teks seluruh rangkaian ensiklopedia—dan menghasilkan keluaran acak dengan panjang tetap. Karena keluarannya tampak acak dan panjangnya tetap, penyerang tidak memiliki petunjuk tentang masukan apa yang menghasilkan keluaran tertentu. Fungsi hash juga bersifat deterministik sehingga masukan yang sama akan selalu menghasilkan keluaran yang sama. Terakhir, fungsi hash tidak dapat diubah, jadi sama sekali tidak ada cara untuk memastikan masukan hanya dari pengetahuan keluarannya saja.
Semua properti ini mengaktifkan fungsi hash untuk membuat sidik jari elektronik dari input tertentu. Dengan menggunakan fungsi hash, jaringan blockchain membuat hash kriptografi—sidik jari elektronik—dari setiap transaksi. Hash kriptografi suatu transaksi disebut ID transaksi. Untuk hampir setiap protokol blockchain, setiap ID transaksi adalah string data alfanumerik 64 karakter (256-bit).
Jika Anda mempertimbangkan bahwa blockchain biasanya terdiri dari ratusan ribu blok, dengan setiap blok berisi beberapa ribu transaksi, Anda dapat membayangkan betapa cepatnya verifikasi transaksi menjadi sulit secara komputasi. Oleh karena itu, sebaiknya gunakan data sesedikit mungkin saat memproses dan memverifikasi transaksi. Hal ini meminimalkan waktu pemrosesan CPU sekaligus memastikan tingkat keamanan tertinggi.
Ya, itulah yang dilakukan Merkle Trees. Sederhananya, Merkle Trees mengambil sejumlah besar ID transaksi, menyusunnya dengan cara tertentu, dan menggunakan fungsi hash kriptografi untuk mendapatkan satu string alfanumerik 64 karakter yang bertindak sebagai sidik jari elektronik untuk seluruh kumpulan data. .
Rangkaian data ini, yang disebut Merkle Root, sangat penting karena memungkinkan komputer mana pun dengan cepat memverifikasi bahwa transaksi tertentu terjadi pada blok tertentu seefisien mungkin.
String tunggal 256-bit yang dihasilkan Merkle Tree disebut Merkle Root. Setiap blok dalam blockchain memiliki tepat satu blok. Dan, seperti yang baru saja kami sebutkan, Merkle Root adalah bagian data yang penting karena memungkinkan komputer memverifikasi informasi dengan kecepatan dan efisiensi luar biasa.
Mari selami lebih dalam. Bagaimana Merkle Root diproduksi? Langkah pertama adalah mengatur semua input data yang dalam hal ini adalah ID transaksi. Merkle Trees, secara desain, selalu mengelompokkan semua masukan menjadi berpasangan. Jika jumlah input ganjil, input terakhir disalin dan kemudian dipasangkan dengan dirinya sendiri. Hal ini berlaku untuk semua ID transaksi yang ditulis ke dalam blok blockchain.
Misalnya, satu blok berisi total 512 transaksi. Merkle Tree akan dimulai dengan mengelompokkan 512 ID transaksi tersebut menjadi 256 pasang. Kemudian, 256 pasang ID transaksi tersebut akan melalui proses matematis— fungsi hashing atau algoritma hashing, demikian sebutannya—dan kita akan memiliki 256 hash kriptografi baru dengan 64 karakter.
Proses yang persis sama terjadi lagi. 256 hash baru tersebut akan dipasangkan dan diubah menjadi 128 hash. Proses ini diulangi, setiap kali jumlah hash dipotong setengahnya, hingga hanya tersisa satu hash. Hash tunggal itu adalah Merkle Root kami.
Untuk memperjelas konsep ini, mari kita lihat contoh sederhana Pohon Merkle. Bayangkan ada 8 transaksi yang dilakukan dalam satu blok tertentu. Pada kenyataannya, ID transaksi terdiri dari 64 karakter, namun demi kesederhanaan, anggap saja panjangnya hanya 8 karakter. Untuk mempermudahnya, mari gunakan angka saja (dan abaikan huruf sama sekali).
Jadi, dalam contoh ini, delapan ID transaksi kita adalah:
Sekarang anggap saja metode untuk melakukan hashing ID transaksi bersama-sama adalah dengan mengambil digit pertama, ketiga, kelima, dan ketujuh dari masing-masing dua ID yang digabungkan, lalu cukup gabungkan angka-angka tersebut untuk membentuk kode 8 digit yang baru.
Tentu saja, pada kenyataannya, matematika di balik algoritma hashing jauh lebih rumit dari ini. Namun untuk demonstrasi sederhana ini, sistem dasar ini sudah cukup.
Seperti inilah tampilan Pohon Merkle kami:
Perhatikan bahwa jumlah kode dipotong setengahnya setiap langkah menuruni Pohon Merkle. Kita mulai dengan 8 ID transaksi dan, hanya setelah 3 langkah, berakhir dengan satu kode—Merkle Root. Dalam contoh ini, Merkle Root kami adalah kode di kotak bawah: 12345678.
Manfaat utama Merkle Trees adalah memungkinkan verifikasi data yang sangat cepat. Jika kita ingin memvalidasi satu ID transaksi, kita tidak perlu memeriksa ulang setiap transaksi di blok tersebut. Sebaliknya, kami hanya perlu memverifikasi “cabang” tertentu dari Pohon Merkle kami.
Misalkan kita ingin memvalidasi ID transaksi dalam contoh kita saat ini. Bob mengatakan bahwa dia membayar Alice sejumlah Bitcoin dan memberi tahu kita bahwa ID transaksinya adalah 88888888. Dia juga mengirimi kami 3 hash: 77777777, 55556666, dan 11223344. Itu saja info yang perlu dikirim atau diterima untuk memverifikasi pembayaran Bob ke Alice.
Ketiga hash ini, bersama dengan ID transaksi yang dimaksud dan Merkle Root blok khusus ini, adalah satu-satunya data yang diperlukan untuk memverifikasi pembayaran Bob kepada Alice. Data ini jauh lebih sedikit dibandingkan data yang diperlukan untuk memverifikasi seluruh Merkle Tree. Hasilnya, proses verifikasi menjadi jauh lebih cepat dan efisien bagi semua orang.
Begini cara kerjanya. Kami sudah memiliki Merkle Root di blok tersebut, jadi Bob tidak perlu mengirimkannya kepada kami. Dia mengirimi kami ID transaksinya dan 3 hash tambahan yang kami cantumkan di atas. Dia juga mengirimkan sedikit informasi tentang urutan dan penempatan penggunaan hash. Sekarang, yang harus kita lakukan adalah menjalankan algoritma hashing pada kumpulan data yang disediakan Bob.
Kita mulai dengan hashing kode pertama 77777777 dengan ID transaksi 88888888, yang menghasilkan hasil 77778888. Bob tidak mengirimi kami kode ini tetapi dia tidak perlu mengirimkannya karena kami menggunakan algoritma hashing yang sama dengannya. Oleh karena itu, kami menerima hasil yang persis sama.
Kami kemudian mengambil kode kedua yang dikirimkan Bob kepada kami, 55556666, dan melakukan hash dengan kode baru 77778888 yang baru saja kami peroleh. Hal ini tentu saja menghasilkan angka 55667788.
Terakhir, kami melakukan hash terhadap kode ketiga yang diberikan Bob, 11223344, dengan kode baru lainnya yang kami terima, 55667788, dan kami mendapatkan Merkle Root yang benar: 12345678.
Perhatikan bahwa kita hanya memerlukan 3 kode dari Bob dan hanya perlu menjalankan algoritma hashing sebanyak tiga kali untuk melihat bahwa transaksi Bob valid. Itu berarti komputer kita telah melakukan kurang dari separuh pekerjaan yang diperlukan untuk memverifikasi seluruh Merkle Tree. Diagram Merkle Tree asli memiliki 15 angka dan algoritma hashing perlu dijalankan sebanyak 7 kali. Namun lebih dari separuh pohon itu tidak diperlukan untuk memverifikasi transaksi Bob!
Prosedur ini cukup untuk memverifikasi bahwa Bob, pada kenyataannya, membayar Alice sejumlah Bitcoin tertentu karena kami memperoleh angka-angka yang, ketika di-hash bersama dengan kode-kode lain yang dikirimkan Bob kepada kami, menghasilkan Merkle Root yang sama yang telah kami ketahui kebenarannya. blok khusus ini.
Bob tidak dapat memalsukan transaksi karena hal itu memerlukan pencarian ID transaksi palsu dan serangkaian kode palsu tambahan yang, jika dimasukkan melalui fungsi hashing, akan menghasilkan Merkle Root yang sebenarnya. Peluang terjadinya hal ini sangat kecil sehingga kita dapat dengan yakin mengatakan bahwa hal ini mustahil.
Dalam contoh sederhana ini, penghematan daya komputasi mungkin tidak tampak besar. Namun, jika Anda mempertimbangkan bahwa blok dalam blockchain mungkin berisi beberapa ribu transaksi, mudah untuk melihat bagaimana Merkle Trees meningkatkan efisiensi secara dramatis.
Singkatnya, itulah manfaat utama Pohon Merkle. Hal ini memungkinkan komputer untuk memverifikasi informasi dengan sangat efisien dan dengan data yang jauh lebih sedikit dibandingkan yang dibutuhkan tanpa Merkle Tree.
Merkle Trees juga merupakan konsep dasar dalam solusi Platform Komodo terhadap masalah skalabilitas blockchain. Solusi penskalaan Komodo memungkinkan interoperabilitas blockchain yang lengkap dan memungkinkan Komodo memproses transaksi lebih cepat dibandingkan layanan pemrosesan pembayaran lainnya di planet ini. Saat ini, teknologi penskalaan baru Komodo memproses lebih dari 20.000 transaksi per detik dalam lingkungan pengujian.
Pohon Merkle adalah metode penataan data yang memungkinkan sejumlah besar informasi diverifikasi keakuratannya dengan sangat cepat dan efisien. Setiap pohon Merkle menghasilkan satu string data, yang dikenal sebagai akar Merkle. Dengan root Merkle, ditambah beberapa data lainnya, komputer mana pun dapat memvalidasi semua entri lain di pohon Merkle secara efisien. Dalam teknologi blockchain, entri ini adalah nomor identifikasi transaksi.
Jika Anda berkecimpung dalam dunia blockchain, Anda mungkin pernah menemukan ungkapan “pohon merkle” sebelumnya. Meskipun pohon Merkle bukanlah konsep yang dipahami secara luas, namun konsepnya juga tidak terlalu rumit. Postingan ini akan menjelaskan pohon Merkle dalam bahasa Inggris sederhana dan membantu Anda memahami bagaimana pohon Merkle memungkinkan teknologi blockchain.
Kisah Merkle Trees dimulai pada tahun 1979 dengan seorang pria bernama Ralph Merkle. Saat kuliah pascasarjana di Universitas Stanford, Merkle menulis makalah akademis berjudul “Tanda Tangan Digital Bersertifikat.” Dalam esai ini, Merkle menjelaskan metode pembuatan tanda tangan digital dan menetapkan metode baru yang sangat efisien dalam membuat bukti kriptografi. Dengan kata lain, dia merancang proses verifikasi data yang memungkinkan komputer melakukan pekerjaannya jauh lebih cepat dibandingkan sebelumnya.
Merkle menyebut idenya “Tree Signatures” atau “Tree Authentication. Saat ini, ide ini lebih dikenal dengan nama Pohon Merkle, yang diambil dari nama penemunya.
Tidaklah berlebihan untuk mengatakan bahwa Merkle Trees merevolusi dunia kriptografi dan, lebih jauh lagi, cara kerja protokol komputer terenkripsi. Faktanya, Merkle Trees disebutkan berulang kali dalam esai Satoshi Nakamoto tahun 2008 yang memperkenalkan Bitcoin ke dunia. Mereka digunakan secara luas dalam protokol Bitcoin.
Jadi, apa sebenarnya Pohon Merkle itu? Mari kita cari tahu.
Pertama, penting untuk memahami konsep fungsi hash kriptografi. Sederhananya, fungsi hash adalah fungsi matematika yang tidak dapat diubah yang mengambil masukan dengan panjang berapa pun—dari satu karakter hingga teks seluruh rangkaian ensiklopedia—dan menghasilkan keluaran acak dengan panjang tetap. Karena keluarannya tampak acak dan panjangnya tetap, penyerang tidak memiliki petunjuk tentang masukan apa yang menghasilkan keluaran tertentu. Fungsi hash juga bersifat deterministik sehingga masukan yang sama akan selalu menghasilkan keluaran yang sama. Terakhir, fungsi hash tidak dapat diubah, jadi sama sekali tidak ada cara untuk memastikan masukan hanya dari pengetahuan keluarannya saja.
Semua properti ini mengaktifkan fungsi hash untuk membuat sidik jari elektronik dari input tertentu. Dengan menggunakan fungsi hash, jaringan blockchain membuat hash kriptografi—sidik jari elektronik—dari setiap transaksi. Hash kriptografi suatu transaksi disebut ID transaksi. Untuk hampir setiap protokol blockchain, setiap ID transaksi adalah string data alfanumerik 64 karakter (256-bit).
Jika Anda mempertimbangkan bahwa blockchain biasanya terdiri dari ratusan ribu blok, dengan setiap blok berisi beberapa ribu transaksi, Anda dapat membayangkan betapa cepatnya verifikasi transaksi menjadi sulit secara komputasi. Oleh karena itu, sebaiknya gunakan data sesedikit mungkin saat memproses dan memverifikasi transaksi. Hal ini meminimalkan waktu pemrosesan CPU sekaligus memastikan tingkat keamanan tertinggi.
Ya, itulah yang dilakukan Merkle Trees. Sederhananya, Merkle Trees mengambil sejumlah besar ID transaksi, menyusunnya dengan cara tertentu, dan menggunakan fungsi hash kriptografi untuk mendapatkan satu string alfanumerik 64 karakter yang bertindak sebagai sidik jari elektronik untuk seluruh kumpulan data. .
Rangkaian data ini, yang disebut Merkle Root, sangat penting karena memungkinkan komputer mana pun dengan cepat memverifikasi bahwa transaksi tertentu terjadi pada blok tertentu seefisien mungkin.
String tunggal 256-bit yang dihasilkan Merkle Tree disebut Merkle Root. Setiap blok dalam blockchain memiliki tepat satu blok. Dan, seperti yang baru saja kami sebutkan, Merkle Root adalah bagian data yang penting karena memungkinkan komputer memverifikasi informasi dengan kecepatan dan efisiensi luar biasa.
Mari selami lebih dalam. Bagaimana Merkle Root diproduksi? Langkah pertama adalah mengatur semua input data yang dalam hal ini adalah ID transaksi. Merkle Trees, secara desain, selalu mengelompokkan semua masukan menjadi berpasangan. Jika jumlah input ganjil, input terakhir disalin dan kemudian dipasangkan dengan dirinya sendiri. Hal ini berlaku untuk semua ID transaksi yang ditulis ke dalam blok blockchain.
Misalnya, satu blok berisi total 512 transaksi. Merkle Tree akan dimulai dengan mengelompokkan 512 ID transaksi tersebut menjadi 256 pasang. Kemudian, 256 pasang ID transaksi tersebut akan melalui proses matematis— fungsi hashing atau algoritma hashing, demikian sebutannya—dan kita akan memiliki 256 hash kriptografi baru dengan 64 karakter.
Proses yang persis sama terjadi lagi. 256 hash baru tersebut akan dipasangkan dan diubah menjadi 128 hash. Proses ini diulangi, setiap kali jumlah hash dipotong setengahnya, hingga hanya tersisa satu hash. Hash tunggal itu adalah Merkle Root kami.
Untuk memperjelas konsep ini, mari kita lihat contoh sederhana Pohon Merkle. Bayangkan ada 8 transaksi yang dilakukan dalam satu blok tertentu. Pada kenyataannya, ID transaksi terdiri dari 64 karakter, namun demi kesederhanaan, anggap saja panjangnya hanya 8 karakter. Untuk mempermudahnya, mari gunakan angka saja (dan abaikan huruf sama sekali).
Jadi, dalam contoh ini, delapan ID transaksi kita adalah:
Sekarang anggap saja metode untuk melakukan hashing ID transaksi bersama-sama adalah dengan mengambil digit pertama, ketiga, kelima, dan ketujuh dari masing-masing dua ID yang digabungkan, lalu cukup gabungkan angka-angka tersebut untuk membentuk kode 8 digit yang baru.
Tentu saja, pada kenyataannya, matematika di balik algoritma hashing jauh lebih rumit dari ini. Namun untuk demonstrasi sederhana ini, sistem dasar ini sudah cukup.
Seperti inilah tampilan Pohon Merkle kami:
Perhatikan bahwa jumlah kode dipotong setengahnya setiap langkah menuruni Pohon Merkle. Kita mulai dengan 8 ID transaksi dan, hanya setelah 3 langkah, berakhir dengan satu kode—Merkle Root. Dalam contoh ini, Merkle Root kami adalah kode di kotak bawah: 12345678.
Manfaat utama Merkle Trees adalah memungkinkan verifikasi data yang sangat cepat. Jika kita ingin memvalidasi satu ID transaksi, kita tidak perlu memeriksa ulang setiap transaksi di blok tersebut. Sebaliknya, kami hanya perlu memverifikasi “cabang” tertentu dari Pohon Merkle kami.
Misalkan kita ingin memvalidasi ID transaksi dalam contoh kita saat ini. Bob mengatakan bahwa dia membayar Alice sejumlah Bitcoin dan memberi tahu kita bahwa ID transaksinya adalah 88888888. Dia juga mengirimi kami 3 hash: 77777777, 55556666, dan 11223344. Itu saja info yang perlu dikirim atau diterima untuk memverifikasi pembayaran Bob ke Alice.
Ketiga hash ini, bersama dengan ID transaksi yang dimaksud dan Merkle Root blok khusus ini, adalah satu-satunya data yang diperlukan untuk memverifikasi pembayaran Bob kepada Alice. Data ini jauh lebih sedikit dibandingkan data yang diperlukan untuk memverifikasi seluruh Merkle Tree. Hasilnya, proses verifikasi menjadi jauh lebih cepat dan efisien bagi semua orang.
Begini cara kerjanya. Kami sudah memiliki Merkle Root di blok tersebut, jadi Bob tidak perlu mengirimkannya kepada kami. Dia mengirimi kami ID transaksinya dan 3 hash tambahan yang kami cantumkan di atas. Dia juga mengirimkan sedikit informasi tentang urutan dan penempatan penggunaan hash. Sekarang, yang harus kita lakukan adalah menjalankan algoritma hashing pada kumpulan data yang disediakan Bob.
Kita mulai dengan hashing kode pertama 77777777 dengan ID transaksi 88888888, yang menghasilkan hasil 77778888. Bob tidak mengirimi kami kode ini tetapi dia tidak perlu mengirimkannya karena kami menggunakan algoritma hashing yang sama dengannya. Oleh karena itu, kami menerima hasil yang persis sama.
Kami kemudian mengambil kode kedua yang dikirimkan Bob kepada kami, 55556666, dan melakukan hash dengan kode baru 77778888 yang baru saja kami peroleh. Hal ini tentu saja menghasilkan angka 55667788.
Terakhir, kami melakukan hash terhadap kode ketiga yang diberikan Bob, 11223344, dengan kode baru lainnya yang kami terima, 55667788, dan kami mendapatkan Merkle Root yang benar: 12345678.
Perhatikan bahwa kita hanya memerlukan 3 kode dari Bob dan hanya perlu menjalankan algoritma hashing sebanyak tiga kali untuk melihat bahwa transaksi Bob valid. Itu berarti komputer kita telah melakukan kurang dari separuh pekerjaan yang diperlukan untuk memverifikasi seluruh Merkle Tree. Diagram Merkle Tree asli memiliki 15 angka dan algoritma hashing perlu dijalankan sebanyak 7 kali. Namun lebih dari separuh pohon itu tidak diperlukan untuk memverifikasi transaksi Bob!
Prosedur ini cukup untuk memverifikasi bahwa Bob, pada kenyataannya, membayar Alice sejumlah Bitcoin tertentu karena kami memperoleh angka-angka yang, ketika di-hash bersama dengan kode-kode lain yang dikirimkan Bob kepada kami, menghasilkan Merkle Root yang sama yang telah kami ketahui kebenarannya. blok khusus ini.
Bob tidak dapat memalsukan transaksi karena hal itu memerlukan pencarian ID transaksi palsu dan serangkaian kode palsu tambahan yang, jika dimasukkan melalui fungsi hashing, akan menghasilkan Merkle Root yang sebenarnya. Peluang terjadinya hal ini sangat kecil sehingga kita dapat dengan yakin mengatakan bahwa hal ini mustahil.
Dalam contoh sederhana ini, penghematan daya komputasi mungkin tidak tampak besar. Namun, jika Anda mempertimbangkan bahwa blok dalam blockchain mungkin berisi beberapa ribu transaksi, mudah untuk melihat bagaimana Merkle Trees meningkatkan efisiensi secara dramatis.
Singkatnya, itulah manfaat utama Pohon Merkle. Hal ini memungkinkan komputer untuk memverifikasi informasi dengan sangat efisien dan dengan data yang jauh lebih sedikit dibandingkan yang dibutuhkan tanpa Merkle Tree.
Merkle Trees juga merupakan konsep dasar dalam solusi Platform Komodo terhadap masalah skalabilitas blockchain. Solusi penskalaan Komodo memungkinkan interoperabilitas blockchain yang lengkap dan memungkinkan Komodo memproses transaksi lebih cepat dibandingkan layanan pemrosesan pembayaran lainnya di planet ini. Saat ini, teknologi penskalaan baru Komodo memproses lebih dari 20.000 transaksi per detik dalam lingkungan pengujian.