Mengenal Merkle Tree, Cara Kerja, Fungsi, dan Perannya dalam Blockchain

Volubit.id — Merkle tree adalah struktur enkripsi data yang digunakan dalam aplikasi manajemen data. Data dikirim melalui algoritma hashing dengan berbagai cara untuk menghasilkan sebuah hash yang mewakili seluruh data dalam sebuah file.

Konsep Merkle Tree yang awalnya dikenal dengan hash tree, pertama kali diperkenalkan oleh Ralph Merkle pada 1979 dalam makalah berjudul “A Digital Signature Based on a Conventional Encryption Function.” Ide ini lahir sebagai solusi untuk menyediakan cara yang efisien sekaligus aman dalam memverifikasi data dalam sebuah kumpulan data (data set) agar tidak mengalami perubahan, tanpa harus membawa atau memeriksa keseluruhan data.

Mekanisme ini menjadi terobosan penting dalam dunia komputasi terdistribusi karena mampu menjaga integritas data dengan memanfaatkan struktur hash tree. Seiring perkembangan teknologi, Merkle Tree kini banyak digunakan di berbagai sistem modern, mulai dari blockchain seperti Bitcoin dan Ethereum, jaringan distribusi file peer-to-peer (P2P), dan lainnya.

Bitcoin dan blockchain lainnya menggunakan Merkle tree sebagai cara untuk mengodekan data blockchain secara lebih efisien dan aman, dengan cara melakukan hashing terhadap transaksi, lalu menggabungkan hasil hash tersebut ke dalam sebuah Merkle root.

Cara Kerja Merkle Tree

Merkle Tree merupakan cara untuk menyusun data menggunakan fungsi hash sehingga lebih mudah diverifikasi. Bentuknya mirip seperti sebuah pohon terbalik, yang di bagian paling bawahnya ada “daun” yang disebut leaf node.

Setiap daun ini berisi hash dari data asli, misalnya data transaksi atau blok. Jadi, setiap transaksi diubah dulu menjadi kode unik berbentuk deretan alfanumerik berupa hash.

Naik satu tingkat, ada node internal atau branches (cabang), yaitu simpul yang bukan daun. Node ini tidak menyimpan data asli, melainkan hash hasil gabungan (concatenate) dari dua daun/atau dua node di bawahnya, yang juga disebut parent node (simpul induk).

Jika jumlah leaf nodes ternyata ganjil, maka simpul terakhir akan diduplikasi agar jumlahnya menjadi genap. Hal ini dilakukan agar setiap leaf bisa dipasangkan, karena struktur Merkle Tree membutuhkan pasangan hash di tiap tingkatannya.

Proses pairing dan hashing ini diulang terus pada setiap level, naik satu tingkat demi satu tingkat, hingga akhirnya tersisa hanya satu hash di puncak pohon. Hash terakhir ini disebut Merkle Root, ringkasan dari seluruh isi pohon yang merepresentasikan semua data di dalamnya dalam bentuk satu hash tunggal.

Jika ada satu saja data di bagian bawah yang berubah, misalnya satu transaksi dimodifikasi, maka hash daunnya berubah, lalu berantai mengubah hash di level atas, hingga akhirnya Merkle Root ikut berubah.

Dengan cara ini, sistem bisa langsung tahu ada data yang tidak sesuai, tanpa harus memeriksa satu per satu semua transaksi.

Sumber: ResearchGate

Ukuran Merkle tree bergantung pada jumlah data yang di-hash untuk dimasukkan dan bagaimana blockchain diprogram. Namun, Merkle tree dari sebuah blok tidak memakan banyak ruang penyimpanan dalam blockchain.

Sebagai contoh, blok Bitcoin #854,473 memiliki 2.530 transaksi, dan setiap hash transaksi berukuran 64 byte. Maka, Merkle tree pada blok tersebut hanya memakan ruang 161,92 KB dari total ukuran blok 1,54 MB.

Penggunaan dalam Blockchain

Merkle Tree memiliki peran yang sangat penting dalam berbagai aplikasi modern, terutama di dunia blockchain. Dalam Bitcoin, misalnya, setiap blok menyimpan Merkle Root pada bagian block header.

Nilai Merkle Root ini mewakili seluruh transaksi yang terdapat dalam blok tersebut. Apabila ada satu transaksi saja yang dihapus, diubah, atau ditambahkan, maka Merkle Root akan langsung berubah. Konsekuensinya, blok tersebut menjadi tidak valid sehingga integritas data otomatis terjaga tanpa perlu pemeriksaan manual.

Selain menjaga integritas data, Merkle Tree juga memungkinkan adanya mekanisme lightweight client atau Simple Payment Verification (SPV). Pada dasarnya, klien SPV tidak perlu menyimpan seluruh data transaksi yang ada di blockchain.

Yang disimpan hanyalah block headers, bagian ringkas dari setiap blok yang memuat informasi penting, termasuk Merkle Root. Karena hanya menyimpan ringkasan, ukuran data yang dibutuhkan jauh lebih kecil dibandingkan full node.

Klien SPV bisa memastikan sebuah transaksi benar-benar tercatat dalam blockchain dengan meminta Merkle Proof dari full node. Merkle Proof merupakan jalur hash dari transaksi tertentu menuju Merkle Root.

Dengan jalur ini, klien bisa memverifikasi apakah transaksi tersebut memang bagian dari blok yang sah, tanpa harus mengunduh semua transaksi di dalam blok tersebut.

Contohnya, ada sebuah blok dengan ribuan transaksi. Klien SPV hanya ingin mengecek satu transaksi. Daripada mengunduh ribuan transaksi itu, klien cukup menerima beberapa hash dari full node untuk membuktikan transaksi yang dicari memang tersambung ke Merkle Root.

Dengan cara ini, perangkat yang memiliki keterbatasan memori dan bandwidth tetap bisa melakukan verifikasi transaksi secara aman, cepat, dan efisien, tanpa harus menjadi full node.

Kelebihan & Kekurangan Merkle Tree

Merkle Tree memiliki sejumlah keunggulan yang menjadikannya sangat penting dalam sistem kriptografi dan blockchain, namun juga menyimpan tantangan yang perlu diperhatikan.

Dari sisi kelebihan, Merkle Tree memungkinkan verifikasi data yang cepat tanpa perlu mengakses seluruh isi pohon. Misalnya, untuk memastikan sebuah transaksi valid, cukup dengan memeriksa satu leaf dan jalur hash yang relevan, bukan seluruh data blok.

Hal ini membuat penggunaan bandwidth dan penyimpanan menjadi lebih hemat. Dari aspek keamanan, struktur hash berlapis membuat perubahan sekecil apa pun pada data daun akan menyebabkan perubahan drastis pada Merkle Root sehingga integritas data bisa dipastikan.

Selain itu, Merkle Tree juga mendukung keberadaan klien ringan atau Simple Payment Verification (SPV), yang memungkinkan perangkat dengan keterbatasan sumber daya tetap bisa memverifikasi transaksi. Secara umum, mekanisme ini sangat mendorong terciptanya sistem terdistribusi yang aman dan terpercaya.

Namun, ada juga kekurangan dan tantangannya. Untuk pohon berukuran besar, proses hashing berulang di banyak level dapat menimbulkan beban komputasi dan memori yang signifikan, terutama ketika pohon sering berubah sehingga Merkle Root harus dihitung ulang berkali-kali.

Selain itu, pengaturan fungsi hash dan urutan penggabungan hash harus benar-benar konsisten. Kesalahan kecil dapat menciptakan celah keamanan. Masalah lain adalah potensi serangan hash collision jika fungsi hash yang digunakan tidak cukup kuat.

Terakhir, keberhasilan verifikasi juga bergantung pada ketersediaan sibling path atau bukti hash terkait. Jika bukti ini rusak atau tidak diberikan, proses verifikasi akan gagal meskipun datanya benar.

Leave a Reply

Your email address will not be published. Required fields are marked *