Extranonce adalah data tambahan yang dapat diubah dan biasanya ditempatkan perangkat lunak penambangan dalam coinbase, transaksi pertama yang khusus menetapkan imbalan penambangan dalam blok. Perubahan data ini mengubah sidik jari gabungan transaksi di header blok sehingga tersedia masukan baru untuk pencarian. Kolom nonce yang terpisah di header tidak bertambah besar.
Header adalah ringkasan data blok. Bit menyimpan nol atau satu; delapan bit membentuk satu byte. Di dalam header terdapat kolom nonce sepanjang 32 bit yang menyediakan 2^32 nilai jika semua data lain tetap. Menghitung ulang header yang sama dengan nonce yang sama menghasilkan hash dan hasil yang sama pula. Extranonce tidak memperpanjang kolom ini, melainkan mengubah data lain untuk menyiapkan header baru. Alena dapat membayangkannya sebagai tugas baru yang memungkinkan semua nilai pencacah dicoba lagi. Dalam praktik, bagian header lain juga dapat diubah selama mengikuti aturan yang berlaku. [1] [5]
Coinbase di sini berarti transaksi pertama pada setiap blok, bukan bursa. Ketika perangkat lunak mengubah extranonce-nya, data transaksi yang dikodekan serta TXID, pengenal yang dihitung dari transaksi, ikut berubah. Melalui struktur pohon yang menggabungkan sidik jari secara bertahap, perubahan itu sampai ke Merkle root, sidik jari gabungan transaksi yang disimpan dalam header. Perangkat lunak harus menghitung ulang cabang yang terdampak. Transaksi lain boleh tetap sama, tetapi akar lama tidak bisa begitu saja dipertahankan. Rangkaian inilah yang memberikan masukan baru untuk penambangan. [1]
Dalam model sederhana, pertahankan semua data lain dan izinkan dua byte extranonce diubah sepenuhnya. Tersedia 2^16 variasi; jika digabungkan dengan nonce 32 bit, jumlahnya menjadi 2^48 kombinasi masukan. Ini adalah jumlah kemungkinan percobaan, bukan jumlah blok yang ditemukan. Alena tidak memperoleh syarat yang lebih mudah ataupun kepastian berhasil dalam kumpulan ini. Manfaatnya praktis: masih ada ruang baru untuk ditelusuri. Menambahkan ruang bebas juga tidak dengan sendirinya mempercepat mesin yang harus benar-benar menjalankan perhitungan. [1]
Ruang extranonce bukan formulir kosong tanpa aturan. BIP 34, salah satu aturan khusus Bitcoin, mewajibkan tinggi blok yang dikodekan dengan benar di awal kolom data masukan coinbase bernama scriptSig. Tinggi blok berarti posisinya dalam rantai. Batas 100 byte berlaku untuk seluruh coinbase scriptSig, bukan hanya extranonce. Perangkat lunak harus menyediakan tempat bagi data wajib dan mempertahankan format yang sah. Jika Alena menimpanya, perhitungan berikutnya justru mencari solusi untuk blok yang tidak valid. [3] [4]
Dalam penambangan bersama melalui pool, mesin yang berbeda sebaiknya mencari variasi yang berbeda. Stratum V2, protokol pembagian tugas penambangan, turut menggunakan pembagian extranonce untuk itu. Server di sisi atas, upstream, memberikan extranonce_prefix yang tetap, yaitu bagian awal data ini. Perantara lokal dapat mencadangkan bagian lain bagi kliennya, lalu meneruskan sisanya ke sisi bawah, downstream. Arah ini relatif terhadap sambungan yang bersangkutan. Prefiks yang diberikan tidak otomatis menjadi bagian yang bebas diubah penambang akhir; mempertahankannya membantu memisahkan pekerjaan para peserta. [2]
Pada kanal diperluas Stratum V2, SubmitSharesExtended mengirimkan byte yang diubah bersama hasilnya. Coinbase disusun dengan urutan coinbase_tx_prefix, extranonce_prefix, extranonce, lalu coinbase_tx_suffix. Nama-nama ini menunjukkan bagian data yang dipertukarkan oleh program penambangan. Kolom extranonce harus memiliki panjang yang disepakati. Walaupun penulisan yang lebih pendek tampak seperti angka yang sama, urutan byte berbeda dapat menghasilkan transaksi berbeda. Komputer membandingkan data persis, bukan perkiraan makna menurut manusia. [2]
Standard Job dalam Stratum V2 adalah tugas dengan Merkle root tetap. Perangkat akhir hanya boleh mengubah bagian yang diizinkan pada version, nonce, dan nTime: versi, pencacah, serta waktu header. Karena itu, perangkat tidak mengirim extranonce sendiri seperti pada kanal diperluas. Perangkat lunak di atasnya dapat menyiapkan coinbase serta akar baru, kemudian memberikan tugas lain. Alena mungkin tidak menemukan pengaturan extranonce di alatnya, meskipun mekanisme ini digunakan dalam keseluruhan sistem. [2]
Bayangkan prefiks baru datang ketika hasil pekerjaan sebelumnya sedang diproses. SetExtranoncePrefix dalam Stratum V2 berlaku untuk tugas yang dikirim setelah pesan itu pada kanal terkait, yaitu sesi penambangan tersebut. Hasil harus tetap terhubung dengan job_id yang benar, pengenal tugas, serta ruang yang diberikan untuknya. Mengganti semua prefiks dengan yang terbaru dapat mengubah data asal hasil lama. Extranonce berguna untuk membuat percobaan berbeda dan menjaga keterkaitannya, bukan menulis ulang tugasnya setelah selesai. [2]
Untuk gambaran yang lebih utuh, baca entri ini bersama Nonce, Merkle Tree, Mining Share, Block Template, Bitcoin. Entri ini juga dirujuk dari ASIC Miner, Stratum V1, Stratum V2, Block Template.