Bitcoin onder de motorkap met yogh.io

Yogh.io

Hoe zien een block uit de blockchain en een transactie uit een block eruit wanneer we een laagje dieper kijken? In dit artikel gebruiken we yogh.io om een kijkje te nemen onder de motorkap van Bitcoin. Yogh.io is een open-source block explorer die gemaakt is om direct op een lokale Bitcoin Core node te draaien, ontwikkeld door vrijwilligers en bitcoinenthousiastelingen. De explorer gebruikt alleen de data die te vinden is in de blockchain, zonder afhankelijk te zijn van andere informatiebronnen. De explorer is gratis te gebruiken en de broncode is hier in te zien.

Het genesis block

We gebruiken yogh.io om te kijken welke informatie er te vinden is in het eerste block uit de geschiedenis van Bitcoin: het genesis block. Dit is het eerste block dat gemined is, door Satoshi Nakamoto, en markeerde het begin van de Bitcoin blockchain. Je kunt het block hier zelf inzien, we zullen hieronder een aantal van de interessante voorbeelden doorlopen.

Laten we beginnen met de "naam" van het block. Je zou kunnen zeggen dat de naam van een block het nummer van het block in de blockchain is, maar over het algemeen refereren we een specifiek block of een specifieke transactie aan de hand van zijn unieke hash. Hieronder is de hash van het genesis block te zien. Precies gezegd is dit de block header van het block na twee rondes van het SHA256 hashing algoritme.

screenshotat

Op het eerste oog misschien niet veel bijzonders, maar de block header omvat belangrijke informatie uit het block. Een deel van deze informatie is hieronder te zien. Elk block bevat onder andere een referentie naar het vorige block (Prev block), de Merkle root van de transacties in het block, en een Unix timestamp.

screenshotat

De referentie naar het vorige block in dit block bestaat enkel uit nullen, omdat dit block het eerste block uit de blockchain is en er dus geen eerder block is om naar te verwijzen. In het volgende block staat een referentie naar de block header van dit block. Dit is hoe de verschillende blocks in de blockchain aan elkaar "gechained" zijn. De Merkle root is de uitkomst van het op een slimme manier hashen van alle transacties in het block, waardoor het mogelijk wordt snel de gehele boom van transacties in het block te verifiëren. Je kunt hier meer lezen over hoe dit werkt.

Wanneer we verder kijken zien we een hexadecimale representatie van de coinbasetransactie in dit block - de enige transactie in dit block. De coinbasetransactie is een speciale transactie waarbij nieuwe bitcoins worden aangemaakt als beloning voor de miner.

screenshotat

Het is mogelijk om in een transactie een stukje arbitraire data mee te geven, bijvoorbeeld een kenmerk of een korte boodschap. Zo ook deed Satoshi Nakamoto dit toen hij de Bitcoin blockchain begon door het eerste block te minen. Bij de coinbasetransactie in dit block zit de boodschap "The Times 03/Jan/2009 Chancellor on brink of second bailout for banks ". Naast de politieke lading van het bericht, dient het als bewijs dat het block op of na 3 januari 2009 is aangemaakt.

De eerste transactie

De eerste transactie in de geschiedenis van Bitcoin vond plaats tussen Satoshi Nakamoto en Hal Finney op 12 januari 2009. Je kunt hier meekijken naar de transactie. Belangrijke onderdelen van elke transactie zijn de ScriptSig en de ScriptPubKey.

screenshotat

De ScriptSig is de digitale handtekening die bewijst dat diegene die de transactie doet het recht heeft om de bitcoins uit te geven; voor het maken van een geldige digitale handtekening is de juiste privésleutel nodig. De ScriptSig is onderdeel van de input van de transactie, samen met een verwijzing naar de voorgaande transactie waarvan de bitcoins in de huidige transactie worden uitgegeven. De voorgaande transactie is in dit geval de coinbasetransactie uit block 9. De index refereert de specifieke output die uitgegeven wordt in de transactie.

screenshotat

We zien dat de transactie twee outputs heeft. We weten dat de output met 10 bitcoins (output #0) de transactie naar Hal Finney is, en de output met 40 bitcoins (output #1) de change terug naar Satoshi Nakamoto. Bij beide outputs is een ScriptPubKey te zien; dit zijn de voorwaarden die gesteld worden voor het opnieuw uitgeven van de outputs. De nieuwe eigenaar kan met de juiste privésleutel aan de voorwaarden van OP_CHECKSIG, welke controleert of de digitale handtekening correct is, voldoen en zo een input voor een nieuwe transactie maken. Op deze manier zijn transacties geketend.

Zelf op onderzoek uit?

De voorbeelden in dit artikel geven slechts een kijkje in de werking van Bitcoin aan de hand van interessante voorbeelden uit de begintijden van Bitcoin, maar geven wel een begin voor de geïnteresseerde lezer om zich verder in de materie te verdiepen. In 2016 heeft Bitonic een kerstpuzzel met prijzengeld in de vorm van bitcoins gedaan, waarbij de mogelijkheden van het betaalscript op creatieve wijze gebruikt zijn. Je kunt de puzzels hier terugzien en de transacties onderzoeken.


Belangrijke thema’s in dit artikel. Klik op een thema en ontdek meer.