Inhoudsopgave
les 8
Hoe werkt een blockchain-transactie?
Hoe werkt een blockchain-transactie?

7 min leestijd

Bijgewerkt

Hoe werkt een blockchain-transactie?

Een blockchain-transactie bestaat uit drie componenten: een verzender, een ontvanger en een hoeveelheid. De verzender en ontvanger hoeven niet per se twee verschillende mensen te zijn. Het is ook mogelijk een blockchain-transactie uit te voeren om cryptocurrency van de ene plaats naar de andere plaats te verzenden, net zoals het mogelijk is om fiat valuta van een spaarrekening naar een betaalrekening te verplaatsen. 

Wallets en adressen

In tegenstelling tot een portemonnee met fiat geld, bevat een crypto wallet niet fysieke cryptomunten. Een wallet bewaart de private en public keys, maar ook alle uitgevoerde transacties van en naar het wallet adres. Met het overzicht van alle uitgevoerde transacties kan een saldo (balans) opgemaakt worden om het totaal aantal cryptomunten in een wallet te berekenen. 

Public en private keys

Een public key is een openbare sleutel, het is geen probleem dat iemand anders deze weet. Voor anderen is het namelijk alleen mogelijk om cryptocurrency’s te sturen naar het wallet adres dat uit de public key ontstaat. Je kunt met de public key geen cryptocurrency’s weghalen.

Aan een public key zit ook een private key gekoppeld. Een private key bestaat uit een reeks van 64 cijfers en letters. Het is belangrijk om de private key niet openbaar te maken. Je kunt het zien als een soort wachtwoord dat toestemming geeft om cryptocurrency te versturen. 

Wallet adres

Een crypto wallet adres is de hash-versie van de public key. Dit adres is te vergelijken met het IBAN-nummer van een bankrekening. Zodra iemand cryptocurrency’s wilt verzenden, voert diegene het wallet adres in om aan te geven waar de cryptocurrency’s naartoe gaan.

Dit betekent dat een wallet adres niet hetzelfde is als een public key, wat vaak wel gedacht wordt. Iedere public key is 256 bits lang. De hash die hieruit voortkomt is 160 bits lang en hoofdlettergevoelig. 

Transactie

Een blockchain-transactie bestaat uit drie componenten: een verzender, een ontvanger en een hoeveelheid. Het is mogelijk dat de verzender en ontvanger dezelfde persoon zijn en cryptocurrency’s van de ene wallet naar de andere wallet verplaatst. Het is dus beter om te spreken over input (verzender) en output (ontvanger). 

Input en output

Een input bevat alle informatie van eerdere transacties naar de verzender. Een input is dus gebaseerd op eerdere outputs. Afhankelijk van de hoeveelheid is het mogelijk dat er meerdere inputs nodig zijn. Dit wordt duidelijk met een voorbeeld: 

Daan wil 2 BTC verzenden naar Lisa

De input van deze transactie is gebaseerd op de output van eerder verzonden cryptocurrency naar Daan. In het verleden heeft Daan namelijk 1 BTC ontvangen van Floor en 1 BTC van Marijn. Om nu 2 BTC te verzenden naar Lisa zijn er twee inputs nodig: één input van de 1 BTC van Floor en één input van de 1 BTC van Marijn. 

Daan wil 1 BTC verzenden naar Lisa

Wanneer Daan niet 2 maar slechts 1 BTC naar Lisa wil verzenden is er maar één input nodig voor de transactie. Het is namelijk mogelijk om de input van de 1 BTC van Floor of de input van de 1 BTC van Marijn te gebruiken. 

Naast meervoudige inputs kunnen er ook meervoudige outputs nodig zijn. Bovenstaand voorbeeld wordt dan:

Daan wil 2 BTC verzenden naar Lisa

Daan heeft in totaal 2 BTC (1 BTC van Floor en 1 BTC van Marijn). Hij wil deze 2 BTC verzenden naar Lisa. De output van deze transactie is 2 BTC naar Lisa’s public key. 

Daan wil 1 BTC verzenden naar Lisa

Daan heeft in totaal 2 BTC en wil daarvan 1 BTC verzenden naar Lisa. Bij deze transacties horen twee outputs. De eerste output is 1 BTC naar Lisa’s public key. De tweede output is het wisselgeld (change) dat overblijft. Daan heeft 2 BTC waarvan hij 1 BTC naar Lisa stuurt. Hij heeft dus nog 1 BTC wisselgeld over dat terug naar zijn wallet gestuurd wordt. Dit is de tweede output van deze transactie. 

Digitale handtekening

Een transactie uitvoeren gebeurt via een wallet in de cryptocurrency software. De software vraagt om de public key van de ontvanger en om de hoeveelheid te specifiëren. Het is dus niet nodig om zelf de inputs en outputs in te geven, de software doet dit zelf.

Om de transactie te bevestigen is een wachtwoord nodig: de private key van de wallet waaruit de cryptocurrency verzonden wordt. De software maakt van deze gegevens een digitale handtekening, de zogenaamde signature. De signature is dus gebaseerd op de private key van een bepaalde wallet, maar bevat deze niet letterlijk. Zo wordt de private key niet openbaar gemaakt en blijft deze geheim. De digitale handtekening wordt daarna naar het netwerk verzonden voor validatie.  

Controle

Elke transactie wordt naar het netwerk gestuurd ter controle. Het netwerk bestaat uit nodes en miners. De miners scannen het volledige netwerk om te controleren of degene die cryptocurrency wil verzenden deze ook daadwerkelijk in het bezit heeft. Daarnaast controleren de miners of de cryptocurrency niet eerder gebruikt is, een zogenaamde dubbele uitgave. 

Het netwerk controleert deze informatie met de signature en de public key. Als de signature gemaakt is met de private key die overeenkomt met de public key, is de transactie geldig. Dankzij deze signature kan het netwerk dus transacties controleren zonder te weten wat de  private key is. 

Nadat de transactie gevalideerd is door de miners, wordt de transactie vastgelegd in een blok. Ieder blok bevat informatie van ongeveer vijfhonderd transacties. Alle blokken samen vormen de blockchain. Iedere miner heeft hiervan een kopie. 

Elk blok bevat ook informatie over de transacties van het vorig blok. Als een transactie in een vorig blok gemanipuleerd wordt, moet het huidige blok ook aangepast worden. Het aanpassen van blokken is een moeilijke opgave omdat de blockchain natuurlijk steeds verder gaat. Tegen de tijd dat een vorig blok is aangepast, is er waarschijnlijk al een nieuw blok aangemaakt dat op zijn beurt ook aangepast moet worden, enzovoort. Dit betekent dat transacties bijna nooit kunnen worden gewijzigd.

Wat zijn transactiekosten?

Een blockchain-transactie is niet gratis. Wanneer iemand cryptocurrency wil versturen, dan zijner ook transactiekosten. Je betaalt dit om een transactie te laten controleren en vast te leggen in de blockchain. De transactiekosten gelden ook als beloning voor de miner die de controle uitvoert. Deze kosten variëren tussen enkele centen en €100. De reden voor deze variatie is dat transactiekosten afhankelijk zijn van de grootte van de transactie en vraag en aanbod van het netwerk.

Grootte van de transactie

De grootte van de transactie hangt voornamelijk af van de hoeveelheid cryptocurrency. Het verzenden van 10 BTC zal hoogstwaarschijnlijk meerdere inputs nodig hebben terwijl het verzenden van 1 BTC eerder mogelijk is met een enkelvoudige input. Hoe meer inputs, hoe meer ruimte de transactie inneemt in een blok. Dit betekent dat een miner in datzelfde blok een minder aantal transacties kan vastleggen en dus minder beloning krijgt. Miners zullen in de eerste plaats kiezen voor het valideren van kleine transacties met hoge transactiekosten om zo hun beloning te maximaliseren. Door de transactiekosten van een grote transactie hoger in te stellen, worden miners niet meer benadeeld als ze voor een klein aantal grote transacties kiezen in plaats van een groot aantal kleine transacties.   

Vraag en aanbod

Bij sommige transacties duurt het langer om gevalideerd te worden. Dit komt door de beperkte ruimte in een blok. Miners kiezen namelijk alleen de transacties uit waarvan de transactiekosten hoog genoeg zijn. Hoe hoger de transactiekosten, hoe meer een miner gemotiveerd wordt om die bepaalde transactie te valideren. Zo spelen de transactiekosten in op de vraag en aanbod van het netwerk. Hoe drukker het netwerk, hoe hoger de transactiekosten zullen zijn. 

Verschillende wallets staan het toe om zelf de transactiekosten te bepalen. Als het niet nodig is om de transactie onmiddellijk uit te voeren, kan de gebruiker de transactiekosten lager instellen. Zo wordt de transactie later opgepikt door een miner wanneer het netwerk minder druk is. Dit werkt ook omgekeerd: indien een transactie onmiddellijk uitgevoerd moet worden, kan de gebruiker hogere transactiekosten instellen zodat miners gemotiveerder zijn om die transactie te valideren.  

Conclusie

Een wallet bewaart de public en private key van een gebruiker, maar ook de transactiegeschiedenis van de wallet. Gebruikers versturen hun cryptocurrency bij het maken van een transactie naar het wallet adres. Het wallet adres komt door middel van een hash voort uit de public key. Dit betekent dat de public key en het wallet adres niet hetzelfde zijn. Een blockchain-transactie bestaat uit drie componenten: de input, de output en een hoeveelheid. 

Cryptocurrency software maakt van de hoeveelheid crypotcurrent en de public key een digitale handtekening: de signature. Miners controleren de transactie aan de hand hiervan. Zodra de transactie gecontroleerd en gevalideerd is door de miners, wordt deze vastgelegd in een blok.

Elke transactie heeft transactiekosten en deze worden uitbetaald ter beloning van de miner die de validatie uitvoert. De transactiekosten zijn afhankelijk van de vraag en aanbod van het netwerk en van de grootte van de transactie.