Ralph C. Merkle adalah kriptografer yang karyanya turut membentuk dasar kriptografi modern. Teka-teki Merkle membahas pembentukan rahasia bersama melalui koneksi yang disadap; Merkle Tree membuktikan bahwa suatu item termasuk dalam daftar tertentu tanpa mengunduh seluruh daftar. Keduanya tugas berbeda, dan tidak satu pun sendirian menentukan keabsahan transaksi Bitcoin.
Anda ingin mengirim pesan terenkripsi. Penerima memerlukan kunci rahasia untuk membacanya, tetapi bagaimana menyerahkan kunci jika seseorang mengamati seluruh komunikasi? Dalam makalah tahun 1978, Ralph Merkle menjelaskan cara yang mengejutkan: pengirim menyiapkan banyak teka-teki terenkripsi; penerima memilih dan memecahkan satu secara acak, lalu mengirim kembali secara terbuka pengenal yang tersembunyi di dalamnya. Keduanya kini mengetahui kunci bersama. Penyadap juga melihat pengenal itu, tetapi tidak tahu teka-teki mana yang memuatnya. Dalam model tersebut, beban kerjanya bertambah secara kuadratik terhadap ukuran tugas, sedangkan kerja peserta bertambah secara linear. Kesenjangannya kuadratik, bukan eksponensial. Terobosan bersejarah ini bukan anjuran masa kini untuk mengenkripsi pesan. [1]
Kemampuan lawan dalam makalah 1978 perlu diperhatikan. Ia boleh menyadap, tetapi perubahan dan pemalsuan tetap diasumsikan dapat dideteksi. Bayangkan seseorang yang membaca surat, lalu seseorang yang juga menulis ulang dan menandatanganinya atas nama Anda. Kasus kedua memerlukan perlindungan tambahan: memastikan siapa sebenarnya lawan bicara Anda. Perbedaan beban komputasi tidak menjawab pertanyaan itu. Karena itu, teka-teki tersebut tidak menjamin keamanan sembarang komunikasi melalui perantara aktif. Sumbangannya adalah menunjukkan bahwa kesepakatan dapat dicapai tanpa kunci rahasia yang sudah dibagikan sebelumnya, dengan asumsi yang dinyatakan. [1]
Merkle Tree menangani persoalan lain. Pohon autentikasi ini dijelaskan dalam disertasi Merkle tahun 1979. Bayangkan arsip kontrak: Anda ingin memeriksa satu kontrak tanpa mengunduh seluruh arsip. Setiap item diolah menjadi hash, sidik jari digital yang pendek. Pasangan sidik jari digabungkan dan di-hash kembali sampai tersisa satu akar bersama. Hashing tidak mengenkripsi isi; fungsinya mendukung pemeriksaan kecocokan. Anda harus memiliki akar yang sudah diautentikasi, yaitu sidik jari yang telah dipastikan berasal dari arsip yang benar. Jika penipu boleh memberikan dokumen sekaligus akar sembarang, kecocokan keduanya tidak membuktikan apa pun tentang arsip asli. [2]
Ambil pohon biner seimbang berisi 8 item. Untuk memeriksa satu daun yang dipilih, Anda memerlukan 3 hash saudara: sidik jari cabang sebelah pada setiap tingkat. Dari daun Anda dan sidik jari tersebut, akar dihitung lalu dibandingkan dengan akar yang telah diautentikasi. Daun itu sendiri dan akar tidak termasuk dalam hitungan hash pendukung. Struktur pohon dan urutan penggabungan juga harus diketahui: tetangga ditempatkan di kiri atau kanan? Penghematan ini bukan sulap dengan data tersembunyi. Bagian arsip yang jauh diwakili sidik jarinya, sehingga dokumen lengkapnya tidak diperlukan untuk pemeriksaan khusus ini. [2]
Merkle Tree membuktikan hubungan antara suatu item dan kumpulan data tertentu. Itu tidak membuat informasi keliru menjadi benar. Arsip contoh kita dapat memuat kontrak dengan nama yang salah; bukti bisa mengonfirmasi keberadaannya dengan benar tanpa menemukan kesalahan nama tersebut. Sidik jari juga tidak membuktikan kewenangan pembuat dokumen. Pisahkan pertanyaannya: apakah item cocok dengan akar ini, dari mana saya mengetahui akar itu, dan aturan apa yang menentukan penerimaan isinya? Pembedaan ini membantu menjelaskan kemampuan teknik yang sama dalam Bitcoin dan tugas yang harus ditangani komponen lain. [2]
Bitcoin menggunakan Merkle Tree untuk menghubungkan transaksi dengan header blok, catatan ringkas blok tersebut. Akar menjadi bagian header; perubahan transaksi yang dimuat memengaruhi sidik jari gabungannya. Satoshi Nakamoto menjelaskan konstruksi ini pada bagian 7 whitepaper dan mencantumkan karya Merkle sebagai rujukan. Ini mendokumentasikan pengaruh teknis, bukan kepengarangan Bitcoin. Pohon tidak memilih riwayat yang sah atau memeriksa tanda tangan transaksi menggantikan node. Bitcoin menggabungkannya dengan aturan lain, termasuk verifikasi transaksi dan Proof of Work, bukti kerja komputasi. Memahami satu komponen lebih berguna daripada menganggapnya mampu melakukan seluruh tugas sistem. [3]
Bagian 8 whitepaper menjelaskan SPV, verifikasi pembayaran sederhana. Klien ringan memakai header blok dan cabang pohon yang menghubungkan transaksi dengan blok pilihan. Ini menghemat data, tetapi bergantung pada asumsi tentang rantai dengan kerja kumulatif terbesar serta perilaku penambang. Bukti penyertaan saja tidak memeriksa seluruh aturan transaksi seperti Full Node, node yang memvalidasi sepenuhnya. Bukti itu juga tidak menunjukkan apakah suatu keluaran dibelanjakan kemudian; diperlukan informasi tentang kejadian setelahnya. Bagi pemula, penting untuk tidak menyamakan “pembayaran ini ada dalam blok ini” dengan pemeriksaan lengkap dana yang tersedia sekarang. [3]
Disertasi 1979 juga menggunakan pohon autentikasi untuk sejumlah terbatas tanda tangan digital sekali pakai. Tanda tangan digital memungkinkan pemeriksaan bahwa pemegang kunci rahasia tertentu menyetujui pesan; bukan gambar tanda tangan di kertas. Pohon dapat menghubungkan banyak nilai verifikasi dengan satu akar yang diketahui. Namun, dalam konstruksi tersebut, jumlah tanda tangan terbatas dan akar akhirnya harus diperbarui. Ini tidak membolehkan penggunaan ulang tanpa batas atas kunci sekali pakai yang sama. Bagian karya Merkle yang lebih lanjut ini memperlihatkan gagasan yang konsisten: memeriksa bagian yang diperlukan dengan bukti kecil, sambil memahami tepatnya asumsi yang menopang pemeriksaan itu. [2]
Untuk gambaran yang lebih utuh, baca entri ini bersama David Chaum, Timothy May, Merkle Tree, Block Header. Entri ini juga dirujuk dari David Chaum, Timothy May.