Dasar-Dasar Blockchain
Sekarang setelah Anda memahami mengapa sistem terdistribusi pada dasarnya sulit dan mengapa Masalah Jenderal Bizantium tampak tidak dapat dipecahkan, mari kita jelajahi bagaimana blockchain sebenarnya bekerja.
Terobosan ini muncul dari kombinasi dua inovasi utama: mekanisme konsensus baru dan penggunaan primitif kriptografi yang cerdas.
Mekanisme Konsensus
Ilmuwan komputer sebenarnya telah memecahkan Masalah Jenderal Bizantium secara matematis pada tahun 1980-an, menunjukkan bahwa untuk mentolerir f pengkhianat, Anda membutuhkan setidaknya 3f+1
total peserta.
Pertimbangkan kasus klasik satu pengkhianat di antara empat jenderal. Jika jenderal yang memimpin adalah pengkhianat, dia mungkin memberi tahu dua jenderal untuk "menyerang" dan satu untuk "mundur". Jika para jenderal hanya mengikuti perintah mereka, rencana tersebut akan gagal. Solusinya memerlukan putaran komunikasi tambahan di mana semua jenderal melaporkan perintah yang mereka terima satu sama lain.
Putaran komunikasi tambahan ini mengungkapkan penipuan komandan. Setiap jenderal yang setia melihat bahwa "menyerang" adalah perintah mayoritas (dua banding satu) dan bertindak sesuai dengan itu. Karena semua jenderal yang setia mencapai kesimpulan yang sama, konsensus tercapai dan pengkhianat dikalahkan.
Solusi matematis di balik ini berhasil, tetapi tidak praktis:
- Anda harus tahu persis siapa semua peserta terlebih dahulu
- Beberapa putaran pesan antara setiap pasangan peserta
- Kompleksitas komunikasi tumbuh secara eksponensial
- Dalam sistem tanpa izin, penyerang dapat membuat identitas palsu tanpa batas
Untuk memecahkan masalah ini, alih-alih menghitung identitas, blockchain menghitung sesuatu yang mahal untuk dipalsukan: pekerjaan komputasi atau uang yang dipertaruhkan.
Bukti Kerja (POW)
Dalam sistem POW, untuk mengusulkan apa yang harus terjadi selanjutnya, Anda harus membuktikan bahwa Anda telah melakukan pekerjaan komputasi yang mahal:
- Penambang mengumpulkan transaksi yang tertunda ke dalam "blok"
- Penambang harus menemukan angka acak (disebut "nonce") yang, ketika dikombinasikan dengan data blok dan di-hash, menghasilkan hasil yang dimulai dengan beberapa nol
- Penambang pertama yang menemukan angka ini menyiarkan solusi mereka ke jaringan
- Peserta lain dapat langsung memverifikasi bahwa solusinya benar dan menerima blok baru
Ini berhasil karena menemukan nonce bisa memerlukan triliunan tebakan acak, tetapi memverifikasi solusinya hanya membutuhkan waktu beberapa milidetik.
Setiap blok juga mereferensikan hash blok sebelumnya, menciptakan sebuah rantai. Untuk menulis ulang sejarah, penyerang harus mengulang semua pekerjaan komputasi berikutnya sementara penambang jujur terus memperpanjang rantai yang asli.
Asumsi keamanannya adalah biaya serangan dalam bentuk listrik lebih besar daripada yang bisa didapatkan penyerang.
Proof of Stake
Dalam sistem POS, alih-alih membakar listrik, peserta menempatkan uang mereka sendiri pada risiko:
- Peserta mengunci token cryptocurrency sebagai jaminan
- Protokol secara acak memilih validator untuk mengusulkan blok, berdasarkan bobot stake mereka
- Validator yang terpilih mengusulkan blok, dan validator lain memberikan suara untuk menerima atau menolak
- Perilaku jujur mendapatkan imbalan; perilaku tidak jujur mengakibatkan "slashing," di mana sebagian dari token yang dipertaruhkan disita atau dirampas. Hukuman pastinya bervariasi tergantung jaringan dan tingkat keparahan pelanggaran.
Ini berhasil karena validator memiliki "skin in the game". Menyerang jaringan akan menghancurkan nilai token yang dipertaruhkan mereka (melalui slashing). Selain itu, tidak seperti Proof of Work, Proof of Stake dapat memberikan finalitas ekonomi. Setelah blok diselesaikan oleh supermayoritas validator, membalikkannya akan mengharuskan penyerang untuk secara terbukti menghancurkan sejumlah besar modal, membuat pembalikan menjadi sangat mahal.
Trilema Blockchain
Sama seperti sistem terdistribusi menghadapi Teorema CAP, blockchain menghadapi trade-off yang mustahil mereka sendiri. Trilema Blockchain menyatakan bahwa konsensus blockchain dapat mengoptimalkan paling banyak dua dari tiga properti ini:
- Keamanan: Ketahanan terhadap serangan dan penyensoran
- Skalabilitas: Throughput transaksi yang tinggi
- Desentralisasi: Tidak ada titik kontrol tunggal
Bitcoin memilih keamanan dan desentralisasi daripada skalabilitas. Sistem pembayaran tradisional seperti Visa memilih skalabilitas dan keamanan daripada desentralisasi. Tantangan yang terus berlanjut adalah menemukan cara untuk mencapai ketiganya secara bersamaan.
Primitif Kriptografi
Mekanisme konsensus menyelesaikan masalah "siapa yang memutuskan", tetapi bagaimana kita memastikan data itu sendiri dapat dipercaya?
Di sinilah primitif kriptografi berperan: alat matematika yang telah teruji dalam pertempuran selama beberapa dekade.
Blockchain mengandalkan tiga alat kriptografi utama yang bekerja bersama untuk menciptakan sistem yang tidak dapat diubah dan dapat diverifikasi:
Fungsi Hash
Bayangkan Anda perlu memverifikasi bahwa dokumen besar tidak diubah, tetapi Anda hanya dapat mengirim sedikit informasi untuk membuktikannya. Inilah yang dilakukan oleh fungsi hash.
Fungsi hash mengambil input apa pun (baik itu kata "Hello," seluruh karya Shakespeare, atau blok yang berisi ribuan transaksi) dan menghasilkan output dengan ukuran tetap yang berfungsi sebagai sidik jari digital yang unik.
Fungsi hash memiliki tiga sifat utama:
- Deterministik: Input yang sama selalu menghasilkan output yang sama.
- Tidak dapat dibalik: Fungsi ini mudah dihitung dalam satu arah, tetapi secara komputasi tidak mungkin dibalik. Dengan hash tertentu, Anda tidak dapat dengan mudah menemukan input asli kecuali dengan cara brute force atau tabel pencarian.
- Efek Avalanche: Perubahan kecil pada input (seperti mengubah huruf besar pada satu huruf) menghasilkan hash output yang benar-benar berbeda.
Perhatikan hash SHA-256 berikut, yang menunjukkan efek avalanche:
SHA-256("Hello") = 185f8db32271fe25f561a6fc938b2e264306ec304eda518007d1764826381969
SHA-256("hello") = 2cf24dba5fb0a30e26e83b2ac5b9e29e1b161e5c1fa7425e73043362938b9824
Perhatikan bagaimana mengubah hanya kapitalisasi satu huruf menciptakan hash yang benar-benar berbeda.
Meskipun sangat mudah untuk menghitung hash dari input apa pun, secara komputasi tidak mungkin untuk membalikkan prosesnya. Dengan hash tertentu, Anda tidak dapat mengetahui input aslinya karena ini akan memakan waktu lebih lama dari umur alam semesta untuk fungsi hash yang aman.
Dalam blockchain, hash digunakan untuk integritas. Setiap blok berisi hash dari blok sebelumnya, menciptakan rantai yang tidak dapat dipatahkan. Jika seseorang mencoba memodifikasi transaksi dari minggu lalu, mereka akan mengubah hash blok tersebut. Karena blok berikutnya mereferensikan hash lama, modifikasi tersebut akan memutus rantai. Untuk memperbaikinya, mereka perlu menghitung ulang hash setiap blok berikutnya sementara jaringan terus menambahkan blok baru, yang praktis merupakan permainan kejar-kejaran yang mustahil dilakukan.
Tanda tangan digital
Autentikasi tradisional bergantung pada rahasia bersama seperti kata sandi, tetapi blockchain beroperasi tanpa otoritas tepercaya atau saluran aman untuk berbagi rahasia. Karena alasan ini, mereka menggunakan tanda tangan digital, yang memungkinkan autentikasi tanpa mengungkapkan informasi rahasia apapun.
Tanda tangan digital menggunakan kriptografi asimetris yang mengandalkan hubungan matematis yang mudah dihitung dalam satu arah tetapi hampir mustahil untuk dibalik. Ketika Anda membuat tanda tangan digital, Anda menghasilkan dua angka yang berhubungan secara matematis yang disebut kunci privat dan kunci publik; kunci privat harus tetap rahasia sementara kunci publik dapat dibagikan secara bebas.
- Kunci privat dapat digunakan untuk membuat tanda tangan digital untuk transaksi tertentu
- Tanda tangan tersebut unik untuk kunci privat Anda dan konten transaksi yang tepat.
- Siapa pun dapat menggunakan kunci publik Anda untuk memverifikasi bahwa tanda tangan hanya dapat dibuat oleh seseorang dengan kunci privat yang sesuai.
Tanpa kunci privat Anda, secara komputasi mustahil untuk membuat tanda tangan yang valid, bahkan dengan akses ke jutaan tanda tangan sebelumnya. Untuk mencegah penyerang memutar ulang transaksi lama, setiap tanda tangan harus menyertakan sepotong data unik, seringkali penghitung sederhana yang disebut "nonce", memastikan setiap tanda tangan bersifat unik.
Ini menciptakan "non-repudiation": setelah Anda menandatangani transaksi, Anda tidak bisa mengklaim bahwa Anda tidak mengotorisasinya. Bukti matematis ini tidak terbantahkan.
Dalam blockchain, beginilah cara dompet bekerja. "Dompet" Anda tidak menyimpan mata uang kripto; koin tersebut ada sebagai entri di blockchain. Sebaliknya, dompet menyimpan kunci privat dan membantu membuat tanda tangan digital untuk membuktikan bahwa Anda dapat menggunakan koin tersebut. Pada dasarnya, dompet adalah pengelola tanda tangan digital.
Pohon Merkle
Bagaimana Anda memverifikasi bahwa transaksi tertentu ada dalam blok yang berisi ribuan transaksi lain tanpa mengunduh seluruh blok?
Pohon Merkle mengatur data dalam pohon biner di mana setiap daun mewakili transaksi, dan setiap simpul induk berisi hash dari dua anaknya. Ini berlanjut naik ke pohon sampai Anda mencapai satu hash root yang mewakili seluruh kumpulan data.
Karena alasan ini, untuk membuktikan bahwa transaksi apa pun ada di pohon, Anda hanya memerlukan transaksi dan "jalur Merkle": hash saudara yang diperlukan untuk merekonstruksi root. Ini berarti bahwa untuk pohon dengan satu juta transaksi, Anda hanya memerlukan sekitar 20 hash untuk membuktikan inklusi.
Dalam blockchain, pohon Merkle membuat verifikasi transaksi menjadi sangat mudah dengan hanya beberapa kilobyte bukti. Jaminan keamanannya tetap identik: jika jalur Merkle diverifikasi dengan benar, Anda dapat secara matematis yakin bahwa transaksi tersebut disertakan dalam blok itu.
The creation of a Trustless System
Konsensus dan primitif kriptografi bekerja sama untuk menciptakan sistem "tanpa kepercayaan". Untuk pertama kalinya dalam sejarah, kepercayaan ditempatkan pada matematika dan bukan pada orang:
- Fungsi hash memastikan bahwa setiap perubahan pada data historis langsung terlihat jelas.
- Tanda tangan digital membuktikan otorisasi tanpa memerlukan perantara tepercaya untuk memverifikasi identitas.
- Pohon Merkle membuat verifikasi klaim kompleks menjadi praktis tanpa mengunduh data dalam jumlah besar.
Ketika dikombinasikan dengan mekanisme konsensus, alat-alat ini menciptakan sistem di mana setiap peserta dapat secara independen memverifikasi seluruh riwayat sistem hanya dengan menggunakan sumber daya komputasi mereka sendiri. Tanpa otoritas tepercaya, tanpa rahasia bersama, tanpa titik kegagalan pusat.
Inilah mengapa blockchain mewakili pergeseran yang sangat mendasar. Sistem tradisional mencapai keamanan dengan mengendalikan akses dan membatasi partisipasi. Blockchain mencapai keamanan dengan membuat verifikasi murah dan universal sementara membuat penipuan menjadi mahal dan jelas terlihat.
Memahami primitif-primitif ini sangat penting karena mereka mendefinisikan apa yang dapat dan tidak dapat dilakukan oleh blockchain. Mereka menjelaskan mengapa transaksi blockchain tidak dapat dibalik (biaya ekonomi untuk membalik transaksi yang telah diselesaikan dirancang agar sangat tinggi), mengapa sistem blockchain dapat beroperasi tanpa otoritas pusat (semua orang dapat memverifikasi semuanya secara independen), dan mengapa sistem tetap aman bahkan ketika sepenuhnya terbuka untuk partisipasi publik.