Wat is een Bitcoin-blok?

Beschikbaar als podcast
Deel het artikel:

Een van de vele mechanismen die ervoor zorgen dat Bitcoin goed kan functioneren, is de blockchain. Zoals je misschien hebt ontdekt in de artikelen op het Bitstack-blog, maakt de blockchain het mogelijk om de dubbele besteding van dezelfde bitcoinmunt (een zogenaamde UTXO) te vermijden.

Zoals de naam al doet vermoeden, bestaat deze blockchain uit blokken. In dit artikel onderzoeken we wat Bitcoin-blokken eigenlijk zijn en hoe elk blok is opgebouwd.

Wat is blockchain?

De blockchain is een register waarin alle Bitcoin-transacties worden vermeld. Het wordt in het protocol gebruikt, zodat elke gebruiker op de hoogte is van transacties in het verleden. Hierdoor kunnen we bewijzen dat er geen eerdere uitgaven aan bitcoins zijn gedaan en zo dubbele uitgaven vermijden.

Dit concept wordt heel eenvoudig uitgelegd in de Bitcoin White Paper van Satoshi Nakamoto met de beroemde zin:” De enige manier om te bevestigen dat er geen transactie is, is door op de hoogte te zijn van alle transacties.

Het doel van dit register is dus om transacties uit het verleden van een tijdstempel te voorzien. Om een uur aan deze informatie te kunnen besteden, groeperen we ze in blokken. Elk blok bevat de vingerafdruk van het blok dat eraan voorafgaat om ze onveranderlijk te maken, waardoor een soort ketting ontstaat. Daarom spreken we in het Engels over blockchain, of „blockchain”.

➤ Meer informatie over de rol van blockchain in Bitcoin.

Wat is de structuur van een blok op Bitcoin?

Een Bitcoin-blok bestaat meestal uit twee afzonderlijke delen. De eerste is de koptekst, die 80 bytes aan metagegevens bevat. De tweede is de lijst met uitgevoerde transacties.

Sinds de SegWit-update van 2017 wordt de grootte van een blok bepaald door een virtuele eenheid genaamd weight. Het gewicht van een blok wordt berekend door de werkelijke grootte bij elkaar op te tellen tot drie keer de grootte, maar zonder getuigen (handtekeningen). De maximale limiet is 4 miljoen gewichtseenheden. In theorie kan een Bitcoin SegWit blok dus een maximale werkelijke grootte hebben van iets minder dan 4 MB. De werkelijke gemiddelde blokgrootte schommelt sinds 2017 echter normaal gesproken tussen 1 en 2 MB.

De komst van het Ordinals-protocol op Bitcoin begin dit jaar 2023 heeft dit gemiddelde tot een stijging beïnvloed. Sinds februari hebben Bitcoin-blokken een reële gemiddelde grootte van bijna 3 MB.

De koptekst van het Bitcoin-blok

Het belangrijkste onderdeel van een Bitcoin-blok is de header. Als we het hebben over de vingerafdruk van een blok, of de hash ervan, is het inderdaad de koptekst die we twee keer hebben gepasseerd in de SHA256-hashfunctie.

Om de samenstelling van de koptekst van een blok te begrijpen, kun je het beste een echte kop bestuderen. Hier is informatie over blok nr. 714 254, gedolven door F2Pool op 15 december 2021:

Als je hetzelfde wilt doen op je Bitcoin-node, voer dan de opdracht „getblockheader” uit, gevolgd door de vingerafdruk van het gewenste blok op bitcoin-cli.

Dankzij dit commando ontdekken we verschillende elementen over het bestudeerde blok. Niet al deze informatie is opgenomen in de koptekst. De echte koptekst van het blok bestaat uit slechts 6 elementen:

  • De blokversie (”versie”). Dit maakt het mogelijk om updates van het Bitcoin-protocol bij te houden;
  • De afdruk van het vorige blok (”Vorige Block Hash”). Het is de cryptografische hash van de vorige blokkop. In dit geval is dit de afdruk van het blok 714 253. Zoals we je hebben uitgelegd in ons artikel over hoe Bitcoin werkt, elk blok bevat de vingerafdruk van het vorige blok;
  • Merkle's wortel (”Merkleroot”). Het is de cryptografische vingerafdruk die aan de basis staat van onze Merkle-boom. In het volgende deel leg ik uit wat het is;
  • De tijdstempel van het blok (”Tijd”). Het is een maat voor hoe lang het blok is gedolven (volgens de miner). Deze maatregel is vastgelegd op deUnix-tijd, dat wil zeggen het aantal seconden dat is verstreken sinds 1 januari 1970. Er is enige flexibiliteit wat deze maatregel betreft, aangezien het voldoende is dat de tijdstempel langer is dan de mediane tijd van de voorgaande 11 blokken om geldig te zijn;
  • Het doel (”Stukjes”). Het is een codering van het moeilijkheidsdoel van het blok dat wordt gebruikt in Proof-of-Work. We hadden het erover in ons artikel over bewijs van werk, de voetafdruk moet kleiner zijn dan of gelijk zijn aan de doelwaarde om het blok geldig te laten zijn;
  • De nuntius (”nuntius”). Dit is de waarde die door de miner kan worden gewijzigd tijdens het zoeken naar een geldige proof-of-work-hash.

Een Bitcoin-blokkop bevat alleen deze 6 elementen. De bestelling krijg een blockheader We ontvangen echter nog andere informatie die interessant kan zijn om te analyseren, maar die niet echt deel uitmaakt van de header zelf:

  • De voetafdruk van het blok (”Hasj”). Dit is het resultaat van het cryptografisch hashen van de header. Als het blok geldig is, moet deze voetafdruk kleiner zijn dan of gelijk zijn aan de moeilijkheidsgraad voor proof of work (mining);
  • Het aantal blokbevestigingen (”bevestigingen”). Dit geeft het aantal geldige blokken aan dat boven dit blok is gedolven op het moment dat de opdracht wordt uitgevoerd;
  • De hoogte van het blok (”Hoogte”). Dit is de plaats van het blok in de blockchain. Hier hebben we het 714,254e Bitcoin-blok;
  • De mediane tijd van de laatste 11 blokken (”Mediane tijd”). Dit is de informatie die wordt gebruikt om te controleren of de tijdstempel van het blok in overeenstemming is met het protocol;
  • Geaccumuleerd werk (”Kettingwerk”). Het is de som van het werk van alle blokken in deze keten. Onthoud dat de keten die geldig is op Bitcoin degene is met de grootste hoeveelheid geaccumuleerd werk;
  • De afdruk van het volgende blok (”Volgende blok-hash”). Het is de cryptografische hash van de koptekst van het volgende blok. In dit geval is dit de afdruk van het blok 714 255.

Nu we het eerste deel van het blok, dus de koptekst, hebben bestudeerd, gaan we samen naar het tweede deel van het Bitcoin-blok kijken.

De Merkle-bomen van een Bitcoin-blok

Transacties in een Bitcoin-blok worden niet zomaar achter elkaar weergegeven. In plaats daarvan zijn ze georganiseerd in een cryptografische accumulator die een „Merkle-boom” wordt genoemd. Dit maakt het mogelijk om een Merkle-root te maken, wat een zeer kleine samenvatting is van alle transacties in het blok.

Het principe is vrij eenvoudig te begrijpen. Elke transactie wordt eerst via een hashfunctie doorgegeven. De resulterende hashes worden twee aan twee aaneengeschakeld (d.w.z. van begin tot eind). Vervolgens worden ze opnieuw door een hash-functie geleid. We zetten dit proces zo voort totdat we een enkele hash krijgen met de naam „Merkle root”.

Zoals eerder gezien, wordt deze Merkle-root vervolgens opgenomen in de blokkop. Hierdoor kunnen alle transacties op een verkorte manier in de koptekst worden weergegeven. De kleinste wijziging van een transactie uit het verleden verandert dus de Merkle-boom, dus verandert ook de Merkle-root, en dus verandert de blokkop en de voetafdruk ervan. Aangezien deze vingerafdruk in het volgende blok wordt gebruikt, wordt bij de kleinste wijziging van een eerdere transactie uiteindelijk de Bitcoin-blockchain verbroken.

Sinds 2017 en de introductie van SegWit bevatten Bitcoin-blokken eigenlijk 2 Merkle-bomen. De eerste bevat de transacties zonder hun getuige, en de tweede bevat de getuige voor elke transactie. De root van de tweede Merkle-boom is opgenomen in de Coinbase-transactie, zodat wijzigingen kunnen worden gedetecteerd.

📌 De coinbase-transactie is de eerste transactie in het Bitcoin-blok. Hiermee kan de winnende miner de bitcoins verzamelen die hij toekomt als beloning voor zijn mijnbouwwerk. Het bestaat uit de coinbase-beloning, die nieuwe bitcoins uitgeeft, en de transactiekosten die in het blok zijn inbegrepen.

Hier komt de naam „SegWit” vandaan, wat de afkorting is voor „Segregated Witness”, wat in het Frans „aparte getuige” betekent.

In het bovenstaande diagram kunnen we zien dat de getuigen, met de vermelding „WTX”, hun eigen Merkle-boom hebben. De wortel van deze boom wordt in de coinbase-transactie geplaatst. Transacties zonder hun getuigen hebben ook hun eigen Merkle-boom. De wortel van de tweede boom wordt in de kop van het blok geplaatst. Alle onderdelen van alle transacties in het blok worden dus gecondenseerd in de koptekst.

Conclusie

Blockchain wordt gebruikt op Bitcoin om dubbele uitgaven te voorkomen. Het werkt als een tijdstempelserver. Een blok is dus gewoon een groepering van Bitcoin-transacties met enkele metagegevens. De structuur is voornamelijk verdeeld in twee ruimtes: de kopboom en de Merkle-bomen.

De kop van een blok bestaat uit 6 elementen: de versie, de afdruk van het vorige blok, de Merkle-root, de tijdstempel, het moeilijkheidsdoel en de nonce.

Transacties worden daarentegen gegroepeerd in een Merkle-boom. Deze cryptografische accumulator produceert een root die in de kop van het blok wordt verhoogd om alles met elkaar te verbinden.

Beschikbaar als podcast

Samenvatting

Deel het artikel:

Misschien vind je deze items leuk

Bitstack SAS, een bedrijf geregistreerd in het Handels- en Vennootschapsregister van Aix-en-Provence onder nummer 899 125 090, met de handelsnaam Bitstack, is geregistreerd als agent van Xpollens - een instelling voor elektronisch geld die is goedgekeurd door de ACPR (CIB 16528 - RCS Nanterre nr. 501586341, 110 Avenue de France 75013 Paris) - bij de Prudential Control and Resolution Authority („ACPR”).”) onder de nummer 747088 en goedgekeurd als Crypto-Asset Service Provider („PSCA”) bij de Autorité des Marchés Financiers („AMF”) als uitwisseling van cryptoactiva voor fondsen, de uitwisseling van cryptoassets voor andere cryptoassets, de uitvoering van orders op cryptoassets voor rekening van klanten, de bewaring en administratie van cryptoassets namens klanten en de levering van diensten voor de overdracht van cryptoactiva namens klanten onder het nummer A2025-003, waarvan het hoofdkantoor is gevestigd te 100 Impasse des Houillères 13590 Meyreuil.

Investeren in digitale activa houdt het risico in van gedeeltelijk of volledig verlies van geïnvesteerd kapitaal.
In het verleden behaalde resultaten zijn geen garantie voor toekomstige prestaties.
DOWNLOADEN
Bitstack