50 / 691NONCE

Nonce

Penghitung penambangan dalam header blok

Nonce dalam penambangan Bitcoin adalah kolom 32-bit pada header blok 80-byte. Penambang mengubahnya untuk mencari hash double-SHA-256 yang nilai angkanya kurang dari atau sama dengan target Proof of Work.

Nonce penambangan adalah parameter pencarian publik bertipe uint32, bukan rahasia ataupun nonce tanda tangan. Dengan kolom header lain tetap, tersedia 2^32 nilai yang cepat dihabiskan ASIC modern. Perangkat lunak memperbarui ruang pencarian dengan mengubah Extranonce dalam transaksi coinbase dan kemudian Merkle root, atau mengubah nTime dan bit version yang diizinkan.

Header Bitcoin berisi 80 byte: version, hash blok sebelumnya, Merkle root, time, nBits, dan Nonce empat byte. Nonce merupakan bilangan bulat 32-bit tanpa tanda yang diserialisasi dalam urutan little-endian. Mengubah kolom ini mengubah header terserialisasi dan hash double-SHA-256 tanpa dengan sendirinya mengubah daftar transaksi. [Bitcoin Developer Reference — Block headers]

Perubahan kecil masukan SHA-256 tidak memberikan arah berguna menuju keberhasilan. Menambah Nonce satu menghasilkan hash 256-bit yang praktis tidak berkaitan, sehingga header berbeda dapat dimodelkan sebagai percobaan probabilistik independen. Mengulang header yang persis sama selalu menghasilkan hash yang sama; tidak ada gradien berguna menuju nilai yang berhasil. [Bitcoin Developer Reference — Block headers] [Bitcoin Developer Guide — Mining]

Nonce empat byte menyediakan tepat 4.294.967.296 nilai, yaitu 2^32, selama kolom header lain tetap. ASIC modern dapat menjelajahi rentang ini berkali-kali per detik, sehingga kolom Nonce saja tidak memadai untuk penambangan modern. Menghabiskan rentang tidak menjamin ditemukannya Proof of Work yang sah. [Bitcoin Developer Reference — Block headers] [BIP 320 — nVersion bits for general purpose use]

Mining Pool dan perangkat lunak penambangan memakai Extranonce di dalam transaksi coinbase. Meski namanya mirip, ini bukan kolom header tambahan. Perubahan Extranonce mengubah coinbase txid lalu Merkle root header, membuka ruang baru berisi 2^32 nilai Nonce penambangan. [Bitcoin Developer Guide — Mining] [Bitcoin Developer Reference — Transactions]

Transaksi coinbase membentuk daun pohon Merkle. Saat pohon dihitung ulang, perubahan txid-nya merambat ke Merkle root dalam header. Penambang memperoleh header baru dengan hash blok sebelumnya yang sama dan isi blok hampir sama; transaksi lain tidak harus diubah untuk itu. [Bitcoin Developer Reference — Block headers] [Bitcoin Developer Guide — Mining]

Ruang tambahan diperoleh dengan mengubah nTime dalam batas yang diizinkan atau bit version yang diizinkan melalui version rolling. BIP320 mengusulkan penggunaan umum sejumlah bit nVersion; usulan itu sendiri tidak berarti semua bit bebas diubah. Aturan konsensus dan tugas penambangan tetap berlaku, dan hash akhir harus memenuhi target. [BIP 23 — getblocktemplate pooled mining] [BIP 320 — nVersion bits for general purpose use]

Dalam penambangan bersama, Mining Pool atau koordinator tugas memberi worker parameter coinbase/Extranonce berbeda atau parameter lain agar perangkat tidak membuang kerja dengan menghash header identik. BIP23 juga menjelaskan parameter opsional noncerange. Protokol Stratum membagi ruang pencarian ke banyak perangkat ASIC. [BIP 23 — getblocktemplate pooled mining] [Bitcoin Developer Guide — Mining]

Nilai angka Nonce sendiri tidak baik ataupun buruk. Full Node menghash seluruh header tertentu dan membandingkan hasilnya dengan target sah yang diturunkan dari nBits. Nonce kecil tidak membuktikan apa pun; hash seluruh header harus kurang dari atau sama dengan target. Memenuhi kondisi ini tidak menggantikan pemeriksaan aturan keabsahan blok lainnya. [Bitcoin Developer Reference — Block headers] [Bitcoin Core v30.0 — Proof of Work validation]

Nonce juga digunakan dalam tanda tangan kriptografis. Kesalahan menggunakan ulang skalar rahasia tanda tangan untuk pesan berbeda dapat membocorkan Private Key. Nonce penambangan merupakan data header publik yang tidak perlu dirahasiakan. Data publik tanda tangan tidak boleh disamakan dengan skalar rahasianya ataupun penghitung penambangan. [BIP 340 — Schnorr Signatures]

Bitcoin Core melalui getblockheader secara bawaan mengembalikan keluaran terperinci berisi nonce, bits, time, dan kolom lain. Parameter verbose bernilai false mengembalikan header terserialisasi dalam heksadesimal. Untuk pemeriksaan independen, susun atau dekode tepat 80 byte, hitung double-SHA-256, lalu bandingkan angka hash dengan target sah dengan mengikuti urutan byte Bitcoin. [Bitcoin Developer Reference — Block headers] [Bitcoin Core RPC — getblockheader] [Bitcoin Core v30.0 — Proof of Work validation]

Untuk gambaran yang lebih utuh, baca entri ini bersama Header blok, Penambangan Bitcoin, Proof of Work, Mining Target, Transaksi coinbase, Bitcoin. Entri ini juga dirujuk dari Header blok, Transaksi coinbase, ASIC Miner, Mining Target.

DOC · 001Bitcoin Developer Reference — Block headersDokumentasi ↗DOC · 002Bitcoin Developer Guide — MiningDokumentasi ↗DOC · 003Bitcoin Developer Reference — TransactionsDokumentasi ↗DOC · 004BIP 23 — getblocktemplate pooled miningSpesifikasi ↗DOC · 005BIP 320 — nVersion bits for general purpose useSpesifikasi ↗DOC · 006Bitcoin Core RPC — getblockheaderDokumentasi ↗DOC · 007Bitcoin Core RPC — getblocktemplateDokumentasi ↗DOC · 008Bitcoin Core v30.0 — Proof of Work validationSumber primer ↗DOC · 009BIP 340 — Schnorr SignaturesSpesifikasi ↗
Utamakan sumber · Bukan nasihat investasi