Gemiddeld genomen wordt elke tien minuten een nieuw blok toegevoegd aan de blockchain van bitcoin. Deze zitten vol met transacties, waardoor miners niet alleen 6,25 bitcoin krijgen als blokbeloning, maar ook de transactiefee opstrijken van iedereen wiens transactie in dat specifieke blok zitten. Toch komt het weleens voor dat er lege blokken worden toegevoegd aan de blockchain door miners.
Naarmate de bitcoin koers records haalt, de interesse in bitcoin toeneemt en de transactiekosten en het volume toenemen, zijn er weinig dingen frustrerender dan zien dat een leeg blok wordt toegevoegd aan de blockchain. Gelukkig zijn er steeds minder lege blokken de afgelopen jaren, maar het komt nog wel eens voor. Neem blok 679779 als voorbeeld.
Waarom worden er minder lege blokken gedolven dan voorheen?
Meer dan 15% van de blokken in de Bitcoin blockchain bevatten geen transacties, behalve natuurlijk de coinbase-transactie die de miner beloont met nieuw uitgegeven munten. Maar het worden er steeds minder, ongeveer 0,4% van de blokken die het afgelopen jaar zijn gemined, was leeg. Daar zijn verschillende redenen voor, maar de belangrijkste reden is dat de economische prikkel om transacties in blokken op te nemen in de loop van de tijd sterker is geworden.
In de vroege dagen van Bitcoin-mining, toen blokbeloningen 50 of 25 BTC waren en het transactievolume laag was, waren transactiekosten een relatief onbeduidend bedrag voor miners. In 2016 daalde de blokbeloning echter tot 12,5 BTC en in 2020 zelfs naar 6,25 bitcoin. En dat terwijl de transactiekosten juist gestaag groeit. Dit betekent dat een steeds groter deel van de opbrengsten voor miners afkomstig is van transactiekosten en dat ontmoedigt het minen van lege blokken.
Hieronder zie je dat het aandeel transactiekosten vergeleken met de blockreward stijgt.
Toch zie je af en toe nog lege blokken, maar waarom? Wat hebben miners hier aan?
Waarom mining pools lege blokken produceren
Helaas is zelfs de sterke economische stimulans om volledige blokken te minen niet voldoende om het probleem volledig op te lossen. De reden dat mining pools soms nog steeds lege blokken minen, komt door technische beperkingen.
Elke keer dat een nieuw blok wordt gevonden, wordt het uitgezonden door de node van de miner (of miningpool) die het heeft gevonden en verspreidt het zich naar alle andere nodes op het netwerk. Op het moment dat andere mining-nodes zien dat er een geldig blok is gevonden, moeten ze stoppen met het inzetten van rekenkracht op dat blok, en begint de zoektocht naar het volgende blok.
Als een miner is aangesloten bij een pool, begint het proces van het zoeken naar een nieuw blok op het moment dat de pool een hash van het vorige blok naar de miner stuurt. Dit wordt een sjabloon van een blok genoemd, ofwel een bloksjabloon.
Zodra een bloksjabloon is ontvangen, kan de miner proberen een nonce te vinden die het volgende blok oplost. Elke seconde van de zoektijd telt, dus het is belangrijk dat pools hun miners zo snel mogelijk nieuwe bloksjablonen geven om aan te werken.
Lege sjablonen zijn sneller
Om de tijd dat miners naar het volgende blok kunnen zoeken te maximaliseren, sturen mining pools in eerste instantie lege bloksjablonen zonder transacties. Dit komt omdat het verzenden van een volledig bloksjabloon meer data bevat dan een lege. Dit brengt dus wat extra vertraging met zich mee en kan ervoor zorgen dat miners minder snel een geldige nonce vinden.
Na slechts 1 of 2 seconden kan de pool een bijgewerkt bloksjabloon met transacties verzenden. Dit maakt de vorige bloksjabloon die door de pool is verzonden echter niet ongeldig, dus mijnwerkers kunnen een paar tellen aan die lege bloksjabloon blijven werken voordat ze overschakelen naar de volledige sjabloon. En als die miners veel geluk hebben een blok binnen een paar seconden na het vorige blok vinden, kan er een leeg blok worden toegevoegd aan de blockchain.
Zolang blokbeloningen (nu 6,25 BTC, over drie jaar 3,125 BTC) nog een te groot deel uitmaken van de miningopbrengsten, blijft er een stimulans en dus een kans op lege blokken.
Het mooie aan de blockchain is dat alle data inzichtelijk is. Hier kun je alle laatste lege blokken vinden.