Hoe werkt een Bitcoin (BTC) transactie?

Bitcoin: A Peer-to-Peer Electronic Cash System. Zo luidt de titel van de whitepaper van Bitcoin (BTC). Miljoenen mensen zijn inmiddels in aanraking gekomen met bitcoin.

Maar als je Bitcoin gebruikt, wat gebeurt dan precies? En hoe werkt een BTC transactie?

bitcoin meester

Bitcoin transactie

Als je een betaling doet, stuur je een bepaalde hoeveelheid BTC naar een wallet address toe. Dit is een afgeleide van een public key. De enige manier hoe jij dit jouw BTC kunt versturen, is door met de private key te laten zien dat jij de rechtmatige eigenaar bent. Het is een digitale sleutel tot het logboek van alle transacties.

Jouw key pair en wallet address(en) zijn aan elkaar gerelateerd door middel van encryptie en hash functies. Beide algoritmen werken op een andere manier, maar ze dienen hetzelfde doel: data versleutelen.

Een Bitcoin transactie is het gevolg van een prachtige combinatie van cryptografie, data structures en non-turing-complete scripting. Als jij een transactie doet, geef je deze een bepaalde fee mee. Vervolgens komt de tx in de memorypool, vaak afgekort met mempool, terecht.

De miner die het recht heeft om een block te genereren, kiest transacties uit deze mempool en stopt deze in een block. Vervolgens worden de blocks aan elkaar geregen, wat we de blockchain noemen.

1000 euro aan Bitcoin kopen zonder commissie? Ga aan de slag bij Bitvavo

Bitcoin block

Als je een dergelijke transactie wat beter bekijkt, bestaat deze uit drie onderdelen: de header, de input en de output.

Header

In de header van een transactie zitten een aantal dingen. Ten eerste is dit de hash. Een hash is een soort van verkorte weergave waarin alles van een transactie staat weergeven. Zie hieronder een voorbeeldje van de allereerste transactie die er is gedaan:

000000000019d6689c085ae165831e934ff763ae46a2a6c172b3f1b60a8ce26f

Daarnaast zit er een ver in het block, wat sinds december 2015 in het protocol zit ingebakken. Het geeft het versie nummer aan. Ten derde hoort de vin_sz ook in de header. Het geeft het aantal inputs aan (waar de vin_sz het aantal outputs aangeeft). Tot slot hebben we het ook nog over de lock_time. Dit is de blockhoogte of de ‘unix timestamp’ waarop de betaling aan de blockchain wordt toegevoegd.

Input

In de input zit ten eerste een verwijzing naar de vorige output hash. Dit verwijst naar de vorige unspent transaction output (UTXO). In wezen is dit het geld dat jij op het punt staat om uit te geven met deze transactie.

De letter n is de index in de outputs van de vorige transactie. Het is het eigenlijke bedrag dat jij wilt versturen. Ten derde is zit er in de input een soort van bewijs, een spending script (scriptSig) dat aangeeft dat er rechten zijn om deze transactie met de informatie van de ouput hash en n te versturen.

Output

Vervolgens zien we in de output een value wat aangeeft hoeveel satoshi’s er zijn verstuurd. Hierbij geldt: 1 BTC = 100.000.000 Satoshi. Ten tweede zit er een scruptje in met de naam scriptPubKey wat verwijst naar de hashed public key van de ontvanger.

Bitcoin transactie

In totaal ziet een transactie met bitcoin er dus als volgt uit:

Input:
Previous tx: f5d8ee39a430901c91a5917b9f2dc19d6d1a0e9cea205b009ca73dd04470b9a6
Index: 0
scriptSig: 304502206e21798a42fae0e854281abd38bacd1aeed3ee3738d9e1446618c4571d10
90db022100e2ac980643b0b82c0e88ffdfec6b64e3e6ba35e7ba5fdd7d5d6cc8d25c6b241501

Output:
Value: 5000000000
scriptPubKey: OP_DUP OP_HASH160 404371705fa9bd789a2fcd52d2c580b65d35549d
OP_EQUALVERIFY OP_CHECKSIG

Nodes

Het Bitcoin netwerk bestaat vervolgens uit een netwerk van duizenden nodes die álle transacties controleren. Als een miner een transactie in een block stopt, houden zij als het ware in de gaten of niemand vals speelt:

  • Ze controleren of de output past bij de input;
  • De digitale handtekening van de input moet goed zijn. De scriptjes moeten goed uitgevoerd worden.
  • Er mag geen UTXO meer dan één keer worden uitgegeven in een transactie;
  • De waarden van transacties mogen niet negatief zijn;
  • De som van de waarden van de input moet groter zijn dan die van de output. Dit omdat er altijd een bepaalde fee moet worden afgestaan aan de miner die de betaling in een block stopt.

Op deze manier komt de betaling die jij doet terecht bij de ontvanger. Deze persoon kan met zijn private key van de corresponderende public key (en adresses) aantonen de rechtmatige nieuwe eigenaar te zijn van deze BTC’s.

Betaling

Een probleem met bitcoin is dat het bedrag dat aan een transacties is gekoppeld met hun input en output niet deelbaar is. Dus als Alice een bitcoin-adres heeft met één bitcoin, en ze wil Bob maar een halve bitcoin sturen, dan zou ze Bob die hele bitcoin moeten sturen.

Maar in dit geval maakt het bitcoin-netwerk dan automatisch 0,5 BTC aan als ‘wisselgeld’ voor de bitcoin die Alice heeft verzonden en stuurt het naar het derde adres. Dit adres is alleen toegankelijk voor Alice. Dat derde adres zal dan dus ook een transactie-output zijn, wat betekent dat het adres meerdere outputs zal hebben.

Op deze manier krijgen we verschillende transacties die op een waterdichte manier het netwerk over worden verspreid. Nodes bekijken of alles eerlijk gaat. De blocks waarin de transacties komen zijn aan elkaar gekoppeld, waardoor een betaling onveranderbaar en niet terug te draaien is

Heb je nog vragen? Kom gerust eens langs in onze Telegram chat en praat gezellig mee!

Bron: Blockgeeks

Mis niks meer!
Invalid email address

Snel, Gemakkelijk, Goedkoop

Maak een gratis account aan bij Bitvavo en betaal in de eerste week geen handelskosten voor jouw eerste €1.000.

 

Maak nu een gratis account aan!