Transaksi coinbase menetapkan penerima imbalan blok: bitcoin baru yang diizinkan dan biaya transaksi lainnya. Berbeda dari pembayaran biasa, transaksi ini tidak membelanjakan dana yang diterima sebelumnya. Namun, ia hanya valid di dalam blok valid, dan imbalannya tidak bisa langsung dipakai. Nama ini menunjuk jenis transaksi, bukan bursa Coinbase.
Bayangkan Anna menyiapkan calon blok untuk ditambang. Ia mengumpulkan pembayaran pengguna lalu menempatkan transaksi khusus di depannya yang menentukan penerima imbalan. Dalam contoh ini, aturan mengizinkan 3,125 BTC baru dan pembayaran terpilih menyumbang biaya 0,075 BTC. Jadi, Anna boleh mengambil paling banyak 3,2 BTC. Transaksi pertama ini adalah coinbase. Menuliskannya belum berarti Anna memperoleh imbalan: blok harus memenuhi persyaratan penambangan dan semua kondisi lain yang diperiksa sendiri oleh node penerima. Jika jumlahnya berlebih, mereka menolak seluruh blok, sebanyak apa pun energi yang dihabiskan untuk menemukannya. Tidak ada rekening pusat yang mengirim pembayaran. Koin baru muncul sesuai aturan bersama di dalam blok yang diterima. Dari 3,2 BTC pada contoh, hanya 3,125 BTC yang baru; sisanya dibayar pengguna. Ini contoh imbalan, bukan laba: biaya penambangan belum dikurangi. [6] [4]
Penerbitan baru yang diizinkan disebut Block Subsidy dan dipotong separuh secara berkala saat Halving. Satoshi adalah satuan terkecil bitcoin. Biaya bergantung pada pembayaran di dalam blok, sehingga dua blok dapat menghasilkan imbalan berbeda. Batas imbalan adalah penerbitan baru yang diizinkan pada ketinggian blok, dihitung oleh GetBlockSubsidy dalam Bitcoin Core, ditambah biaya semua transaksi sah lainnya dalam blok. Hanya penerbitan yang menambah pasokan; biaya berasal dari satoshi yang sudah ada. Penambang boleh mengambil lebih sedikit, tetapi tidak dapat menagih selisihnya kemudian: bagian penerbitan yang tidak diambil tidak pernah terbit, sedangkan biaya yang tidak diambil selamanya tidak dapat dibelanjakan. Satu satoshi berlebih saja membuat seluruh blok tidak sah. [4] [6]
Imbalan sering masuk ke pool yang mengoordinasikan kerja beberapa penambang. Skrip pengunci adalah program singkat yang menetapkan syarat untuk membelanjakan keluaran nantinya. PPS, FPPS, dan PPLNS merupakan cara berbeda pool membagikan pendapatan kepada peserta. Keluaran menggunakan skrip pengunci biasa. Imbalan dapat masuk ke satu alamat pengumpul, dibagi ke beberapa penerima, atau mencakup bagian operator pool. Node memeriksa jumlah dan syarat pembelanjaan, bukan kontrak atau pemilik sebenarnya. PPS, FPPS, PPLNS, batas minimum pembayaran, dan transfer berikutnya kepada peserta adalah aturan pool, bukan aturan konsensus Bitcoin. [6] [7]
Anna melihat imbalan dalam blok, tetapi belum bisa memakainya untuk membayar listrik. Bukan bursa yang menahannya: aturan Bitcoin sendiri mewajibkan waktu tunggu. Ketinggian blok adalah nomor posisinya dalam rantai; H di sini menunjukkan ketinggian blok tempat imbalan tercipta. COINBASE_MATURITY mensyaratkan selisih minimal 100 antara ketinggian blok yang membelanjakan keluaran dan ketinggian pembuatannya. Keluaran pada H pertama kali boleh dibelanjakan dalam blok sah H+100. Jumlah konfirmasi di dompet dapat terlihat berbeda karena blok pembuat sudah dihitung sebagai konfirmasi pertama. Yang menentukan adalah selisih ketinggian, bukan perkiraan jam. Terpenuhinya syarat tidak menjamin blok akan selamanya berada dalam rantai. [5]
Reorganisasi berarti node beralih ke cabang valid lain dengan akumulasi kerja tambang lebih besar. UTXO adalah keluaran yang belum dibelanjakan, yakni jumlah-jumlah dana yang tersedia. Imbalan dapat hilang dari catatan itu bersama blok pembuatnya. Reorganisasi dapat mengeluarkan blok semula dari rantai aktif yang sah dengan akumulasi kerja terbesar. Keluaran coinbase-nya pun hilang dari himpunan UTXO aktif. Transaksi yang membelanjakan imbalan itu juga dapat terpengaruh. Menunggu 100 blok membatasi dampak reorganisasi pendek, tetapi bukan jaminan mutlak. Pool harus membedakan imbalan pada rantai aktif, kesiapan untuk dibelanjakan, dan kewajibannya kepada penambang. [4] [5]
Beberapa nama menjelaskan formatnya: masukan biasanya menunjuk dana yang dibelanjakan, sedangkan keluaran menetapkan jumlah dan syarat pemakaiannya. Txid mengenali transaksi, versi menentukan format, dan locktime dapat membatasi kapan transaksi dimasukkan. Blok harus memuat setidaknya satu transaksi; hanya transaksi pertama yang boleh berupa coinbase. Transaksi ini mempunyai satu masukan dengan rujukan kosong ke keluaran sebelumnya: hash berupa 32 byte nol dan indeks 0xffffffff. Rujukan yang disebut outpoint ini tidak membelanjakan apa pun sebelumnya, sehingga tidak ada pemeriksaan tanda tangan biasa untuk pengeluaran tersebut. Transaksi tetap memiliki txid, versi, locktime, serta satu atau lebih keluaran. [1] [2] [3]
Ketinggian adalah nomor posisi blok. BIP34 menamai usulan yang aturannya diadopsi Bitcoin; scriptSig adalah kolom data masukan, dan CScript merupakan cara menuliskan instruksi serta angka skrip. BIP34 mewajibkan scriptSig diawali ketinggian blok sebagai angka CScript dengan pengodean minimal. Seluruh kolom berukuran 2–100 byte. Setelahnya bisa ada extra nonce, identitas pool, atau data penambangan gabungan. Ketinggian atau panjang yang keliru menyebabkan penolakan. Walaupun masukan ini tidak menjalankan skrip pembuka biasa, kode operasi tanda tangannya dapat dihitung dalam batas sigops, yaitu batas jumlah operasi tanda tangan. [1] [9]
Penambangan berulang kali menghitung hash, sidik jari digital dari ringkasan blok bernama header. Nonce adalah angka yang diubah, sementara akar Merkle adalah sidik jari gabungan transaksi. Perubahan transaksi membuka percobaan baru. Nonce pada header blok hanya 32 bit dan perangkat cepat mencoba seluruh kemungkinannya. Karena itu, perangkat lunak juga mengubah extra nonce dalam coinbase. Perubahan ini mengubah txid, akar Merkle, lalu header, sehingga membuka ruang pencarian hash baru. Pool membagi pekerjaan antarmesin agar tidak sia-sia mencoba kandidat yang sama. Extra nonce tidak menerbitkan koin tambahan. [6] [7] [12]
SegWit memisahkan sebagian data verifikasi, misalnya tanda tangan, ke bagian witness. Commitment adalah ikatan data yang dapat diperiksa, bukan pembayaran tambahan. Format berikut merupakan rujukan teknis ikatan tersebut. Jika blok memuat data witness, BIP141 mewajibkan keluaran coinbase dengan witness commitment, yaitu ikatan kriptografis terhadap data itu. Skrip dimulai dengan 6a24aa21a9ed: OP_RETURN, pemasukan 36 byte, dan penanda aa21a9ed. Berikutnya adalah hash SHA-256 ganda sepanjang 32 byte atas gabungan witness Merkle root dan nilai cadangan. Witness masukan coinbase harus berisi hanya satu nilai cadangan 32 byte tersebut. Jika beberapa keluaran cocok, indeks tertinggi yang berlaku. Ini bukan pembayaran yang bisa dibelanjakan; tanpa data witness dalam blok, komitmen bersifat opsional. [10]
Full Node adalah komputer yang memeriksa aturan Bitcoin secara mandiri. Bobot blok mengukur pemakaian kapasitas data yang diizinkan; Mempool menyimpan transaksi biasa yang belum dikonfirmasi secara lokal. Pemeriksaan imbalan adalah bagian dari pemeriksaan seluruh blok. Full Node mewajibkan coinbase di urutan pertama dan menolak coinbase tambahan dalam blok yang sama. Node memeriksa scriptSig, ketinggian BIP34, rentang nilai, bobot blok, biaya, dan witness commitment yang diperlukan. Jumlah keluaran tidak boleh melampaui penerbitan yang diizinkan ditambah biaya; pembelanjaan berikutnya harus memenuhi syarat kematangan. Penambang tidak dapat secara sah menghadiahkan jumlah sesukanya kepada diri sendiri. Tanpa bloknya, coinbase tidak masuk mempool. [3] [4] [10]
Genesis Block adalah blok awal Bitcoin. Kedudukan khususnya dan pengenal yang pernah berulang menjelaskan mengapa aturan umum saat ini tidak boleh diterapkan begitu saja pada setiap kasus dalam sejarah. Sebelum pencatatan ketinggian diwajibkan, transaksi coinbase berbeda dapat memiliki txid sama. BIP30 mencegah penimpaan keluaran lama yang belum dibelanjakan; BIP34 menambahkan ketinggian pembeda pada blok modern biasa. Genesis Block merupakan pengecualian: coinbase-nya ada dalam blok tersimpan, tetapi inisialisasi tidak menjadikan keluarannya dapat dibelanjakan. Karena itu, 50 BTC awal tidak bisa dibelanjakan; ini bukan penantian biasa selama 100 blok. [8] [9] [11]
Untuk gambaran yang lebih utuh, baca entri ini bersama Block, Block Subsidy, Transaction Fees, Penambangan, Block Template, Bitcoin. Entri ini juga dirujuk dari Block Subsidy, Konfirmasi, Reorg, Stale Block.