Penambang menghitung hash, yaitu sidik jari numerik header blok. Agar memenuhi Proof of Work (yaitu bukti kerja komputasi), hasilnya harus kurang dari atau sama dengan batas yang disebut target. Nonce merupakan salah satu nilai yang dapat diubah untuk menyiapkan percobaan berikutnya. Ini bukan kata sandi atau kunci rahasia: siapa pun dapat melihatnya setelah blok dipublikasikan.
Anna memiliki perangkat penambangan yang mencoba menghasilkan blok transaksi baru. Dari header, kumpulan ringkas informasi tentang blok, perangkat menghitung sidik jari numerik bernama hash menggunakan SHA-256. Bitcoin menjalankan perhitungan itu dua kali, sehingga disebut double-SHA-256. Jika hasilnya melebihi batas, perangkat mengubah, misalnya, Nonce dari 10 menjadi 11 lalu mencoba lagi. Anna tidak menebak angka secara manual; perangkat melakukan sangat banyak percobaan secara otomatis. Nonce lebih tinggi tidak berarti hash lebih rendah atau semakin dekat dengan tujuan. Header yang persis sama selalu menghasilkan hash yang sama, sehingga menghitungnya lagi tidak menambah peluang baru. [1] [2]
Nonce mendapat ruang empat byte, atau 32 bit. Ruang ini menampung bilangan bulat dari 0 sampai 4.294.967.295, termasuk kedua batasnya: total 4.294.967.296 kemungkinan, atau 2^32. Jumlah itu besar bagi manusia, tetapi perangkat khusus penambangan bernama ASIC dapat menelusurinya dengan cepat. Mencoba semua nilai tidak menjamin berhasil. Jika data header lainnya tetap, memulai dari awal hanya mengulangi hasil sebelumnya. Karena itu, perangkat lunak juga perlu menyiapkan header yang berbeda. [1] [5]
Salah satu caranya adalah mengubah Extranonce. Nama yang mirip dapat membingungkan: ini bukan kolom header tambahan, melainkan data dalam transaksi coinbase, transaksi pertama blok yang mengalokasikan imbalan penambangan. Perubahannya mengubah pengenal transaksi tersebut, txid, lalu Merkle root, sidik jari gabungan transaksi yang tersimpan di header. Perangkat kini mendapat masukan berbeda. Nilai Nonce yang sama dapat digunakan lagi, tetapi kali ini yang dihitung adalah hash header berbeda. Tambahan 2^32 kemungkinan itu tetap tidak menjamin penemuan blok. [2] [3]
Penjelajah blok mungkin menunjukkan Nonce kecil pada satu blok dan besar pada blok lain. Angka itu sendiri tidak menunjukkan seberapa sulit blok ditemukan atau apakah bloknya lebih baik. Full Node, program yang memeriksa blok dan transaksi secara mandiri berdasarkan aturan Bitcoin, menghitung hash seluruh header dan membandingkannya dengan target yang sah, yang bentuk ringkasnya disimpan dalam nBits. Yang menentukan adalah hash kurang dari atau sama dengan batas itu, bukan besarnya Nonce. Pemeriksaan juga harus mencakup transaksi dan aturan keabsahan blok lainnya. [1] [8]
Nonce juga muncul dalam pembahasan tanda tangan transaksi. Di sana, nonce dapat berarti angka bantu rahasia, secara teknis disebut skalar, yang dipakai algoritma bersama Private Key, kunci privat untuk mengizinkan pengeluaran dana. Menggunakannya kembali secara keliru untuk pesan berbeda dapat membocorkan kunci. Nonce penambangan berbeda: nilainya terbuka dan angka yang sama boleh muncul dalam header berbeda. Bagian publik tanda tangan juga bukan angka bantu rahasia tersebut. Aturan untuk satu penggunaan tidak bisa begitu saja diterapkan pada penggunaan lainnya. [9]
Ketika banyak perangkat bekerja bersama dalam Mining Pool, perangkat-perangkat itu sebaiknya mendapat header berbeda untuk dihitung hashnya. Pengulangan tidak menambah percobaan baru. Koordinator pun membagikan data berbeda, misalnya untuk coinbase dan Extranonce. Protokol seperti Stratum menyampaikan tugas; unit penambangan yang terhubung juga disebut workers. BIP23 turut menjelaskan parameter opsional noncerange untuk menentukan rentang Nonce. Ini bukan berarti setiap pool harus memakainya atau boleh mengubah aturan keabsahan blok. [4] [2]
Merkle Tree menggabungkan sidik jari transaksi secara bertahap menjadi satu sidik jari bersama, Merkle root. Pengenal transaksi coinbase, txid-nya, masuk ke perhitungan sebagai salah satu daun pohon. Perubahan Extranonce menghasilkan txid baru lalu Merkle root baru. Penambang dapat mempertahankan transaksi lain serta rujukan ke blok sebelumnya sambil memperoleh header berbeda. Ini tidak menulis ulang blok terkonfirmasi: yang berubah adalah rancangan blok baru yang masih membutuhkan Proof of Work yang sah. [1] [2]
Perangkat lunak dapat membuat variasi header tambahan dengan mengubah waktu, nTime, dalam batas yang diperbolehkan atau mengubah bit versi yang diizinkan. Cara kedua disebut version rolling. BIP320 mengusulkan penggunaan umum bit nVersion tertentu; usulan itu sendiri tidak membolehkan semua bit diubah sesuka hati. Aturan jaringan dan tugas penambangan yang diberikan tetap berlaku. Tidak satu pun cara ini menghapus kewajiban agar hash hasilnya memenuhi target yang sah. BIP323 yang lebih baru mengusulkan lebih banyak bit dan masih berstatus Draft atau rancangan. [4] [5] [10]
Untuk membaca dokumentasi teknis, formatnya juga berguna diketahui. Header berisi 80 byte: versi, hash blok sebelumnya, Merkle root, waktu, nBits, dan Nonce empat byte. Nonce adalah bilangan bulat 32-bit tanpa tanda, bertipe uint32. Penyimpanannya memakai urutan little-endian, dengan byte yang mewakili posisi bernilai paling rendah terlebih dahulu. Mengubah Nonce saja mengubah header dan hash double-SHA-256, bukan daftar transaksi. Perangkat lunak memerlukan format tepat ini, meskipun memahami penambangan tidak menuntut kita merangkainya secara manual. [1]
Pembaca tingkat lanjut dapat memakai getblockheader di Bitcoin Core dengan hash blok tertentu. Keluaran terperinci bawaan mencakup nonce, bits, dan time. Mengatur parameter verbose menjadi false mengembalikan tepat 80 byte header dalam heksadesimal. Dari sana, double-SHA-256 dapat dihitung dan hasil numeriknya dibandingkan dengan target yang sah. Implementasi sendiri harus mengikuti urutan byte Bitcoin: membalik byte secara keliru mengubah perbandingan. Membaca Nonce di penjelajah blok saja tidak menggantikan verifikasi ini. [1] [6] [8]
Untuk gambaran yang lebih utuh, baca entri ini bersama Block Header, Penambangan, Proof of Work, Mining Target, Transaksi coinbase, Bitcoin. Entri ini juga dirujuk dari Block Header, Transaksi coinbase, ASIC Miner, Stratum V1.