Wat is een Coinbase-transactie en hoe werkt deze binnen Bitcoin?

Wat is een Coinbase-transactie?
Een coinbase-transactie is de allereerste transactie in elk Bitcoin-blok. Dit is de manier waarop een miner de beloning voor dat blok ontvangt. Deze beloning heet de block reward en bestaat uit twee delen: nieuw uitgegeven bitcoin, de block subsidy, en de transactiekosten van alle normale transacties die de miner in dat blok heeft gezet.
De miner die een kandidaatblok maakt, zet deze transactie altijd als eerste in het blok. Via de outputs, oftewel de bestemmingen van het geld, kan de miner de beloning naar een eigen adres of naar een miningpool laten gaan.
Korte samenvatting
- Een coinbase-transactie is altijd de eerste transactie van een Bitcoin-blok.
- Miners gebruiken deze transactie om de block subsidy en transactiekosten te claimen.
- Full nodes controleren of de coinbase-transactie aan de Bitcoin-regels voldoet.
- Een coinbase-transactie heeft één speciale input die niet naar een eerdere Bitcoin-output verwijst.
- De beloning is pas besteedbaar vanaf blokhoogte h+100.
Hoe werkt een Coinbase-transactie?
Een miner maakt eerst een kandidaatblok met de coinbase-transactie bovenaan en voegt daarna eventueel transacties uit de mempool toe. De mempool is simpel gezegd de wachtrij met transacties die al naar het netwerk zijn gestuurd, maar nog niet in een blok staan.
De miner kiest vervolgens waar de beloning heen gaat. Dat kan een eigen Bitcoin-adres zijn, maar bij miningpools staat er vaak een uitbetalingsscript in dat door de pool wordt bepaald. De pool regelt daarna zelf hoe deelnemers worden betaald.
In de speciale coinbase-input staat onder meer de block height, oftewel het volgnummer van het blok. De miner kan daar ook extra gegevens aan toevoegen, zoals een extra nonce. Een nonce is een waarde die miningsoftware steeds verandert tijdens het zoeken naar een geldige hash.
Waarom is dat handig? Bij proof of work probeert de miner heel veel verschillende hashes totdat er eentje aan de Bitcoin-regels voldoet. Is de gewone nonce in de block header niet genoeg meer om nieuwe pogingen te doen, dan kan de miner de extra nonce in de coinbase-transactie aanpassen.
Daardoor verandert de transactie-ID van de coinbase-transactie. Vervolgens verandert ook de merkle root, een soort samenvattende cryptografische vingerafdruk van alle transacties in het blok. Zo krijgt de miner weer veel nieuwe mogelijkheden om hashes te proberen.
De coinbase-transactie telt pas echt mee wanneer de miner een geldig blok vindt én nodes dat blok accepteren. Een node is een computer die de Bitcoin-regels controleert. Keurt een node het blok af, dan hoort ook de coinbase-transactie niet bij de actieve Bitcoin-blockchain.
Wat is het verschil tussen een Coinbase-transactie en een normale transactie?
Het grote verschil is dat een normale Bitcoin-transactie bestaande bitcoin uitgeeft, terwijl een coinbase-transactie de blokbeloning vastlegt.
Een normale transactie gebruikt één of meer inputs. Zo'n input verwijst naar een eerdere, nog “Unspent Transaction Output”. Die niet-bestede output heet ook wel een UTXO. Simpel gezegd: een UTXO is een stukje bitcoin dat nog klaarstaat om uitgegeven te worden.
Bij een normale transactie moet de waarde van de outputs gelijk zijn aan of lager zijn dan de waarde van de inputs. Het verschil is de transactiekost die de miner kan ontvangen.
Een coinbase-transactie werkt anders. Deze heeft precies één speciale coinbase-input. Die verwijst bewust niet naar een bestaande UTXO. In plaats daarvan bevat hij een nul-hash als vorig transactie-ID en de index 0xffffffff.
Dat betekent niet dat de miner zomaar bitcoin kan maken. De totale waarde van de outputs mag maximaal gelijk zijn aan de subsidie voor dat blok plus de fees van de andere transacties in hetzelfde blok.
Ook gelden er twee simpele blokregels:
- Een blok moet beginnen met precies één coinbase-transactie.
- Er mag later in hetzelfde blok geen tweede coinbase-transactie staan.
Nog een verschil: de outputs van een coinbase-transactie zijn niet direct uit te geven. Daarvoor geldt een aparte wachttijd van 100 nieuwe blokken.
Welke regels gelden voor een Coinbase-transactie?
Een coinbase-transactie moet aan een aantal vaste Bitcoin-regels voldoen. Gebeurt dat niet, dan wordt het hele blok door het netwerk afgekeurd.
De belangrijkste regels zijn:
- De coinbase-transactie staat altijd als eerste transactie in een blok.
- De transactie heeft één speciale input.
- Die input verwijst niet naar eerder ontvangen bitcoin, zoals bij een gewone transactie.
- In de input wordt onder andere het nummer van het blok opgenomen, ook wel de block height genoemd.
- De miner mag zichzelf niet zomaar een willekeurige hoeveelheid bitcoin geven.
- De totale beloning mag maximaal bestaan uit de block subsidy plus de transactiekosten uit het blok.
De block subsidy is de hoeveelheid nieuwe bitcoin die bij het maken van een blok wordt uitgegeven. Bitcoin begon met een beloning van 50 BTC per blok. Na elke 210.000 blokken wordt deze beloning gehalveerd. Dat gebeurt ongeveer eens per vier jaar en noemen we de Bitcoin halving. Miners kunnen deze beloning dus niet zelf aanpassen.
Als een blok transacties met SegWit-witness-data bevat, heeft de coinbase-transactie nog een extra technische functie. Er wordt dan een zogenoemde witness commitment in de coinbase-transactie opgenomen. Daarmee wordt de witness-data van de transacties cryptografisch aan het blok gekoppeld, zodat nodes deze gegevens kunnen controleren.
Waarom heeft een Coinbase-transactie geen normale inputs?
Een coinbase-transactie heeft wel degelijk een input, maar geen normale input die bitcoin uit een eerdere output uitgeeft.
Dat is logisch: de block subsidy wordt via deze transactie voor het eerst beschikbaar gemaakt. Er bestaat dus nog geen eerdere UTXO waar de miner naar kan verwijzen. Ook de transactiekosten van het nieuwe blok komen via deze transactie bij de miner terecht.
Je kunt het zien als de afrekening van één blok. De miner heeft een geldig blok geproduceerd en mag daardoor precies de beloning claimen die bij dat blok hoort. Full nodes controleren vervolgens of dat bedrag klopt.
Voorbeeld: Stel dat de block subsidy en alle fees samen een bepaald maximumbedrag vormen. Zet een miner meer dan dat bedrag in de coinbase-outputs, dan is het blok ongeldig. De miner krijgt dan helemaal niets, ook niet het bedrag dat wel toegestaan was.
De coinbase-input heeft daarnaast nog een praktische functie tijdens het minen. De verplichte block height en eventuele extra nonce helpen miningsoftware om steeds nieuwe proof-of-work-pogingen te maken.
Hoe lang duurt de bevestiging van een Coinbase-transactie?
Een coinbase-transactie krijgt haar eerste bevestiging zodra het blok waarin zij staat onderdeel wordt van de actieve Bitcoin-blockchain.
Hoe lang dat duurt, staat niet vooraf vast. De miner moet eerst een geldig proof-of-work-blok vinden en het netwerk moet dat blok accepteren. Proof of work is het systeem waarbij miners rekenwerk doen om een hash te vinden die aan de Bitcoin-regels voldoet.
De coinbase-output is daarna nog niet meteen besteedbaar. Bitcoin schrijft voor dat deze pas als input mag worden gebruikt vanaf blokhoogte h+100, waarbij h de hoogte is van het blok waarin de coinbase-transactie staat.
Staat de beloning bijvoorbeeld in blok 500, dan mag die voor het eerst worden uitgegeven in blok 600. Het gaat dus om 100 nieuwe blokken, niet om een vaste tijd in uren of minuten. Blokken worden namelijk niet steeds precies op hetzelfde moment gevonden.
Sommige crypto wallet-apps tellen bevestigingen net iets anders op het scherm. Daarom is deze regel het duidelijkst: een coinbase-output uit blok h wordt besteedbaar in blok h+100.
Waarom zijn Coinbase-transacties belangrijk voor Bitcoin?
Coinbase-transacties zijn belangrijk omdat ze bepalen hoe nieuwe bitcoin volgens de vaste Bitcoin-regels wordt uitgegeven en hoe miners hun transactiekosten ontvangen.
De block reward geeft miners een reden om rekenkracht in proof of work te steken en geldige blokken te maken. Zonder coinbase-transactie is er geen standaardmanier om die beloning binnen een blok toe te kennen.
Tegelijk houdt Bitcoin de geldhoeveelheid onder controle. Elke full node kijkt zelf of de coinbase-transactie niet te veel uitkeert. Probeert een miner extra bitcoin te claimen, dan accepteren nodes het blok niet. Eén miner kan dus niet in zijn eentje de regels veranderen of extra bitcoin creëren.
Ook voor het minen zelf is deze transactie nuttig. Door data zoals een extra nonce te veranderen, verandert de merkle root en krijgt de miner meer hashes om te proberen.
Bij SegWit speelt de coinbase-transactie bovendien een rol bij het vastleggen van witness-data. Zo is die aanvullende transactiedata cryptografisch gekoppeld aan het blok.
Welke risico’s en beperkingen hebben Coinbase-transacties?
De belangrijkste beperking is dat de ontvangen bitcoin niet meteen beschikbaar is. Een miner of miningpool moet wachten tot 100 nieuwe blokken zijn toegevoegd voordat de coinbase-output kan worden uitgegeven. Dat beperkt tijdelijk de liquiditeit.
Verder is de beloning alleen geldig zolang het blok in de actieve Bitcoin-blockchain staat. Wordt een blok niet geaccepteerd, of raakt het later buiten de actieve chain door een chain reorganization, dan is de bijbehorende output niet besteedbaar.
Een miner moet ook heel precies zijn met het bedrag. Te veel claimen maakt het hele blok ongeldig. Minder claimen mag wel, zolang de bovengrens niet wordt overschreden, maar dan loopt de miner zelf een deel van de mogelijke inkomsten mis.
De coinbase-scriptSig heeft beperkte ruimte. Hij mag maximaal 100 bytes zijn en moet beginnen met de block height. Daardoor blijft er weinig plek over voor vrije tekst of andere metadata.
Alles wat een miner daar wel in zet, wordt publiek zichtbaar zodra het blok is opgenomen. Een miningpool kan bijvoorbeeld een herkenbare tag toevoegen. Dat kan informatie prijsgeven over wie het blok heeft geproduceerd.
Tot slot blijft ook deze beloning afhankelijk van een goed bestedingsscript en de juiste sleutels. Is het script verkeerd ingesteld of zijn de benodigde sleutels niet meer beschikbaar, dan kan de beloning ondanks de 100-blokkenregel onbesteedbaar blijven.
Conclusie
Een coinbase-transactie is de speciale eerste transactie van ieder Bitcoin-blok. Hiermee ontvangt de miner maximaal de block subsidy en de transactiekosten van dat blok.
De transactie lijkt op een gewone Bitcoin-transactie, maar heeft één bijzondere input die niet naar eerdere bitcoin verwijst. Dat is nodig omdat de block subsidy via deze route voor het eerst beschikbaar komt. Tegelijk bewaken nodes strikt hoeveel de miner mag claimen.
Voor jou als gewone Bitcoin-gebruiker zie je een coinbase-transactie meestal niet direct terug. Maar onder de motorkap is dit een belangrijk onderdeel van Bitcoin: het koppelt mining, proof of work, de uitgifte van nieuwe bitcoin en transactiekosten aan elkaar.