225 / 736TARGET

Mining Target

Angka yang tidak boleh dilampaui hasil penambang

Jana tahu para penambang mengulang perhitungan, tetapi ia masih bertanya-tanya apa yang mereka tunggu. Setiap percobaan menghasilkan hash, yang dapat dipahami sebagai angka sangat besar. Tidak sembarang hasil memenuhi syarat: nilainya harus di bawah batas tertentu, dan nilai yang tepat sama juga diperbolehkan. Batas itu disebut Mining Target. Semakin rendah batasnya, semakin jarang keberhasilan. Peserta jaringan lain kemudian dapat dengan mudah memeriksa apakah hasil itu benar-benar memenuhi syarat.

Mining Target adalah angka pembanding bagi hash header blok, yaitu ringkasan data inti sebuah blok. Bukti kerja yang sah mengharuskan hash tidak lebih tinggi dari target yang benar. Di jaringan Bitcoin, target harus positif dan sesuai aturan untuk blok tersebut; penambang tidak bebas memilihnya.

Sebagai ilustrasi saja, bayangkan batas 20: hasil 19 dan 20 akan lolos, tetapi 21 tidak. Penambangan nyata memakai angka jauh lebih besar, tetapi hubungannya sama: hash ≤ target. Tanda itu berarti lebih kecil atau sama dengan, bukan hanya lebih kecil. Bitcoin Core adalah perangkat lunak yang digunakan peserta jaringan untuk memeriksa blok dan transaksi. Versi v29.0 yang dirujuk di sini membandingkan hash seluruh header dengan cara tersebut. Nonce, nilai yang diubah penambang selama pencarian, adalah salah satu masukan. Yang dibandingkan dengan target adalah hash hasil perhitungan. [1]

Jana melihat gambar hash yang berhasil dengan deretan nol panjang di awal. Itu gambaran yang berguna: untuk penulisan dengan panjang sama, lebih banyak nol di depan berarti angka lebih kecil. Namun, dua hash dengan jumlah nol awal yang sama bisa berada di sisi target yang berbeda. Digit sisanya juga menentukan. Nol tidak menggantikan perbandingan lengkap hash ≤ target. Aturan ini menuntut kondisi angka yang tepat, bukan pola karakter yang menarik. [1]

Bit menyimpan nol atau satu; delapan bit membentuk satu byte. Agar tidak menyimpan seluruh angka panjang dalam header, Bitcoin memakai kolom nBits berukuran 32 bit. Kolom ini mengodekan target dalam ruang angka 256 bit menggunakan koefisien, eksponen penentu pergeseran, dan bit tanda. Sebagai contoh, 0x04123456 didekode menjadi 0x12345600; awalan 0x menandakan notasi heksadesimal yang juga memakai huruf. Ini contoh pengodean, bukan target jaringan saat ini. Untuk pemahaman dasar, cukup bedakan angka itu sendiri dari bentuk ringkasnya. [3] [5]

Dalam data mentah, angka yang sama bisa tampak terbalik. Di header berukuran 80 byte, nBits menempati empat byte dengan urutan little-endian: byte dengan nilai tempat terendah lebih dahulu. Jadi, angka 0x1d00ffff tampil dalam data sebagai ff ff 00 1d. Urutan byte tidak mengubah target, melainkan menjelaskan penyimpanan. Detail ini penting saat mengolah data mentah; pembaca biasa penjelajah blok tidak perlu membalik angka di layar. [2]

Jana mungkin mengusulkan menyimpan angka lebih besar agar pencarian lebih mudah. Namun, perangkat lunak memeriksa lebih dari sekadar bisa membaca nBits. DeriveTarget dalam Bitcoin Core v29.0 menolak target negatif, nol, luapan di luar rentang angka, dan nilai di atas powLimit, target tertinggi yang diizinkan jaringan tersebut. Dekode yang berhasil hanya menjelaskan angka yang diwakili kode itu; bukan izin untuk menggunakannya. [1]

Bahkan target dalam rentang yang diizinkan bisa salah untuk blok tertentu. Bitcoin Core membandingkan nBits dengan GetNextWorkRequired, perhitungan berdasarkan blok sebelumnya dan aturan jaringan. Ketidakcocokan menghasilkan bad-diffbits. Hash rendah di bawah target buatan sendiri yang lebih mudah tidak membenarkan nilai header yang salah. Jana tidak bisa memperoleh blok yang diterima hanya dengan menurunkan persyaratan: node lain, komputer yang memeriksa aturan, akan menolaknya. [4]

Dalam model hash 256 bit yang tersebar seragam, semua hasil yang mungkin memiliki peluang sama. Untuk target T yang diizinkan, nilai yang diterima adalah dari nol sampai T, termasuk kedua ujungnya. Maka p = (T + 1) / 2^256 untuk satu percobaan; p adalah peluang berhasil. Tambahan satu menghitung nilai nol juga. Hubungan ini menjelaskan mengapa target lebih rendah menyulitkan pencarian. Namun, ia tidak menentukan jumlah percobaan mesin per detik atau kapan tepatnya blok berikutnya muncul. [1]

Ketika Jana memenuhi syarat, ia membuktikan kerja komputasi yang diperlukan, bukan kebenaran seluruh isi blok. Bitcoin Core juga memeriksa sidik jari gabungan transaksi, transaksi imbalan khusus bernama coinbase, batas blok, dan keabsahan transaksi. Di sini coinbase adalah nama teknis transaksi pertama dalam blok, bukan bursa. Hash rendah tidak memperbaiki isi yang tidak sah. Target adalah bagian penting dari aturan, bukan izin melewati aturan lainnya. [4]

Untuk gambaran yang lebih utuh, baca entri ini bersama Share Difficulty, Proof of Work, Nonce, Block Header, Bitcoin. Entri ini juga dirujuk dari ASIC Miner, Nonce, Mining Share, Share Difficulty.

DOC · 001Bitcoin Core v29.0 — Proof-of-work checksSumber primer DOC · 002Bitcoin Developer Reference — Block headers and nBitsDokumentasi DOC · 003Bitcoin Core v29.0 — Compact arithmeticSumber primer DOC · 004Bitcoin Core v29.0 — Contextual and block validationSumber primer DOC · 005NIST — Binary data unitsDokumentasi
Direvisi: Utamakan sumber · Bukan nasihat investasi