Bahan dasar: fungsi hash
Proof of work berdiri di atas satu alat: fungsi hash kriptografis. Bitcoin memakai SHA-256, dan menjalankannya dua kali berturut-turut. Fungsi ini menerima data sepanjang apa pun dan mengeluarkan 64 karakter heksadesimal. Ada tiga sifat yang membuatnya berguna:
- Masukan yang sama selalu menghasilkan keluaran yang sama.
- Perubahan sekecil apa pun pada masukan menghasilkan keluaran yang sama sekali berbeda.
- Tidak ada jalan pintas untuk menebak masukan dari keluarannya; satu-satunya cara adalah mencoba.
Lihat buktinya. Kalimat di bawah hanya berbeda satu titik di ujungnya, tetapi hash SHA-256-nya tidak punya kemiripan:
"CakraKoin blok 7 | Andi kirim 2 koin ke Sari"
1d2b68b3a99f173920a0f67ef8f3b71cdfb300d2cd2f5044bfcc72f9a2ff0d36
"CakraKoin blok 7 | Andi kirim 2 koin ke Sari."
edebd333a3baffb43735001acd25a192ea01d9a00d88bd3749df9cca422f450b
Nonce: angka yang diubah-ubah
Penambang tidak bisa mengubah isi transaksi sesuka hati. Yang boleh diubah adalah nonce, sebuah angka di kepala blok. Tugasnya: temukan nonce yang membuat hash blok lebih kecil dari target, yang dalam tampilan heksadesimal terlihat sebagai deretan nol di depan. Tabel berikut dihitung sungguhan dengan SHA-256 (satu putaran, untuk kesederhanaan) atas teks contoh di atas yang disambung angka nonce:
| Syarat awalan | Nonce ditemukan | Hash yang dihasilkan |
|---|---|---|
| 0 | 41 | 0c7fed6fb13342f1cda9cd3418ef00e6f0fd6239b577d6da2eb5aa6bfad8436a |
| 00 | 56 | 003b7b1f708a5efe3ad91bcf46f35b5a6b5d7fdd5ca88b8ac11758fd436f5cd4 |
| 000 | 2.417 | 00069d7379123ca954eab998360e5d6b9bb89d052dbd7cd0a9858dde5a066691 |
| 0000 | 79.221 | 0000b31cf010226a9775c907964b6ed4d58f2440a726bcb8870d07a9f7e48b73 |
Setiap tambahan satu nol heksadesimal membuat rata-rata jumlah percobaan naik 16 kali lipat: sekitar 16, 256, 4.096, lalu 65.536 percobaan. Angka nonce di tabel kadang lebih kecil atau lebih besar dari rata-rata karena faktor keberuntungan. Target jaringan Bitcoin sungguhan jauh lebih ketat, sehingga seluruh penambang di dunia bersama-sama butuh sekitar sepuluh menit untuk menemukan satu jawaban.
Coba menambang blok mainan
Alat di bawah menjalankan SHA-256 di peramban Anda. Ketik isi blok, pilih jumlah nol, lalu tekan tombol. Hash dihitung dengan menyambung teks dan angka nonce, persis seperti tabel di atas.
sim://pow Penambang mainan
Nonce: 2.417 · Percobaan: 2.418
00069d7379123ca954eab998360e5d6b9bb89d052dbd7cd0a9858dde5a066691
Yang sebenarnya di-hash: kepala blok 80 byte
Pada Bitcoin, penambang tidak meng-hash seluruh isi blok berulang-ulang. Yang di-hash hanyalah kepala blok berukuran 80 byte, yang terdiri dari enam kolom:
| Kolom | Ukuran | Isi |
|---|---|---|
| Versi | 4 byte | Versi aturan blok |
| Hash blok sebelumnya | 32 byte | Pengikat ke blok sebelumnya |
| Merkle root | 32 byte | Ringkasan semua transaksi dalam blok |
| Waktu | 4 byte | Cap waktu |
| Target (bits) | 4 byte | Tingkat kesulitan dalam bentuk ringkas |
| Nonce | 4 byte | Angka yang diubah-ubah penambang |
Nonce 4 byte hanya menyediakan sekitar 4,29 miliar kemungkinan, jumlah yang habis dicoba mesin modern dalam waktu sangat singkat. Karena itu penambang juga mengubah bagian lain, misalnya data tambahan di transaksi coinbase yang otomatis mengubah Merkle root, lalu mulai lagi dari nonce nol. Karena setiap transaksi ikut menentukan Merkle root, mengubah satu transaksi saja akan membatalkan seluruh kerja pada blok itu.
Tingkat kesulitan yang menyesuaikan diri
Jika semakin banyak mesin bergabung, jawaban akan ditemukan lebih cepat. Untuk menjaga ritme, Bitcoin menghitung ulang target setiap 2.016 blok, kira-kira dua minggu. Logikanya bisa dihitung sederhana:
- 2.016 blok × 10 menit = 20.160 menit, atau tepat 14 hari. Inilah waktu yang diharapkan.
- Misalkan 2.016 blok terakhir selesai dalam 12 hari. Jaringan terlalu cepat, sehingga kesulitan dinaikkan kira-kira 14 ÷ 12, atau sekitar 16,7%.
- Jika selesai dalam 16 hari, kesulitan diturunkan kira-kira 14 ÷ 16, atau sekitar 12,5%.
Mekanisme inilah yang membuat pendapatan penambang tidak otomatis naik ketika mereka membeli mesin baru: pesaing juga membeli, dan target ikut mengetat. Dampaknya bagi hitungan biaya dibahas di mining kripto.
Aturan rantai dengan kerja terbanyak
Kadang dua penambang menemukan blok hampir bersamaan, sehingga jaringan sempat punya dua versi ujung rantai. Node menyelesaikannya dengan aturan sederhana: ikuti rantai yang mengandung akumulasi kerja terbanyak. Begitu blok berikutnya ditambang di atas salah satu versi, versi itu menjadi lebih berat dan yang lain ditinggalkan. Karena itulah transaksi dianggap makin aman setelah ditimpa beberapa blok; jumlah blok penimpa ini yang tampil sebagai “konfirmasi” di block explorer.
Mengapa kerja ini disebut keamanan
Untuk menulis ulang sejarah, penyerang harus mengulang kerja semua blok yang ingin diubah dan menyalip rantai jujur yang terus bertambah. Itu hanya realistis jika ia menguasai lebih dari separuh daya hash jaringan, kondisi yang dikenal sebagai serangan 51%. Pada jaringan besar, biayanya luar biasa mahal. Pada jaringan kecil dengan sedikit penambang, ancaman ini jauh lebih nyata.
Inilah pertukaran utama proof of work: keamanan dibeli dengan energi. Pendekatan lain menggantinya dengan modal yang dikunci, yang dijelaskan di proof of stake. Hadiah yang membayar kerja penambang pun menyusut terjadwal, seperti diuraikan di halving Bitcoin.
