Scroll to top

Hoe werkt Bitcoin?


No comments

Hoe werkt Bitcoin?

Na meerdere prijsbubbels in het landschap van de digitale munten en tokens is inmiddels duidelijk dat blockchain heel veel gaat veranderen. Maar er heerst veel verwarring over wat Bitcoin is. De ontwikkeling van nieuwe projecten gaan veel te snel om bij te houden. Het is het doel van dit artikel om een duidelijk(er) beeld te scheppen van wat Bitcoin precies is en hoe het werkt. Er wordt uitgegaan van reeds een globaal idee van de werking van Bitcoin

Bitcoin is boekhouding

Over wat Bitcoin precies is bestaat veel verwarring. Bitcoin is een blockchain, een cryptovaluta, een netwerk, een protocol, een revolutie en zo kunnen we nog wel even door gaan. Nu is al het genoemde waar, maar bovenal is Bitcoin een boekhouding. Het is een programma wat bijhoudt welke rekeningen hoeveel saldo hebben.

Verder is Bitcoin gedecentraliseerd. Dat is wat het zo revolutionair maakt. In tegenstelling tot het huidige monetaire systeem, waar banken als centrale figuren de geldstromen uitvoeren, is er bij Bitcoin geen enkel centraal figuur. In plaats van een centrale database heeft iedereen een volledige kopie van de gehele boekhouding tot zijn of haar beschikking. Hierdoor is het niet mogelijk voor één of een paar spelers om met de boeken te knoeien.

De rol van vertrouwen

Het huidige systeem vereist vertrouwen. We moeten vertrouwen hebben in de banken. Theoretisch gezien kan een ING bank namelijk het geld van mijn rekening halen en op een eigen rekening storten. De kans is wellicht klein, maar de verhouding van de macht over het systeem is tussen gebruiker en bank bijzonder scheef. Door het decentrale karakter van Bitcoin is dit anders. Er zijn geen banken en geen centrale figuren. Het is de combinatie van duizenden computers die volgens dezelfde spelregels spelen waardoor overeenstemming wordt bereikt. Bitcoin is giraal geld wat de noodzaak van vertrouwen verschuift van een centraal figuur naar wiskunde. En in tegenstelling tot grote winstgerichte corporaties heeft wiskunde een bijzonder betrouwbaar trackrecord.

De manier waarop Bitcoin de boekhouding opslaat is nieuw. Databases zoals we die de afgelopen decennia hebben leren kennen zijn grote tabellen, of als het echt veel data wordt, systemen van tabellen. Bij Bitcoin wordt het opgeslagen in een ketting. Dat wil zeggen: er is een huidige stand van zaken en er komt een nieuw block binnen met transacties. De node die het block binnen krijgt controleert of alle transacties mogelijk zijn, bijvoorbeeld of een adres niet meer bitcoin uitgeeft dan het bezit. En of de hash overeenkomt met de vereiste proof of work. Als dit allemaal goed wordt bevonden zijn alle transacties op deze node doorgevoerd en wordt het block doorgestuurd naar andere nodes in het netwerk. De node wacht dan op een nieuw block.

De werking van een bitcointransactie

Een bitcointransactie werkt als volgt. Als een node bitcoin over wil maken naar een andere node dan geeft hij dat door aan het netwerk. Het is een kort bericht met de verzender, de ontvanger, de hoogte van de transactie, vrijwillige transactiekosten en een handtekening. Dat laatste is om identiteitdsfraude te voorkomen. Deze transactie wordt aan andere nodes doorgegeven en wacht vervolgens tot het in een block wordt opgenomen. Hiervoor zijn de transactie kosten, hoe meer transactie kosten betaald zijn, hoe sneller de transactie in een block wordt opgenomen.

Die digitale handtekening is de moeite waard om bij stil te staan. Een digitale handtekening werkt met het versleutelen van informatie. Binnen Bitcoin is daar een algoritme voor. Dit algoritme is zo gebouwd dat een sleutel die iets vergrendeld deze versleuteling niet ongedaan kan maken. Daarvoor is een andere specifieke sleutel nodig. Hoe die sleutel eruit ziet is bijna onmogelijk uit te rekenen. In theorie kan het, maar dat duurt zo onmogelijk lang dat het de moeite niet is. Daarintegen is het wel relatief eenvoudig een combinatie van public en private keys te genereren. En dit gebeurt dus bij het aanmaken van een nieuw adres. Er wordt een adres, public en private key aangemaakt.

Om vervolgens een handtekening te zetten onder een transactie doet de node het volgende. Het geeft alle informatie die nodig is om de transactie uit te voeren door aan het netwerk. Daarnaast gebruikt hij zijn private key om die informatie te versleutelen en geeft zijn public key mee. Dit geheel van informatie is de transactie. Het voordeel is dat het voor iedereen eenvoudig is om de versleutelde informatie samen met de afzender en de gegeven public key te ontsleutelen. Als dit lukt weet je één ding zeker. De afzender heeft kennis gehad van de private key. Welke private key dat is zul je nooit kunnen achterhalen. In praktijk is dit voldoende bewijs om zeker te zijn dat de afzender is wie hij zegt te zijn.

De rol van miners

Zodra de transactie aan het netwerk is doorgegeven wacht deze om opgenomen te worden in een block. Het vinden van nieuwe blocks gebeurt door miners. Miners zijn doodnormale nodes die transacties die nog niet bevestigd zijn verzamelen, groeperen en als block terug geven aan het netwerk. Hiervoor krijgt de miner een vergoeding in de vorm van nieuwe bitcoins. Dat lijkt simpel en dat is het ook. Daarom is er een proces in het leven geroepen om orde in de te verwachten chaos te creëren. Dit proces heet Proof of Work.

Proof of Work

Proof of work werkt als een soort loterij. Het is een puzzel zonder hints waarvan de beste strategie om het antwoord te vinden is door alle mogelijke opties bij langs te gaan. Het maakt gebruik van een cryptographic hash: de sha-256 functie. Sha-256 is een functie waarbij je een input geeft, en ongeacht wat deze input is, je krijgt een binair getal van 256 cijfers. Het neemt dus elke input die je kunt verzinnen, en kent daar een willekeurig getal tussen de 0 en 2^256-1 aan toe. Het is een pseudo-random functie wat wil zeggen dat dezelfde input altijd exact dezelfde output geeft, maar het resultaat van een ene input bevat geen informatie over een input die maar een heel klein beetje verschilt. Je kunt geen voorspelling doen van de uitkomst zonder de hele berekening uit te voeren.

Nu zou je je kunnen afvragen of dit wel veilig is. Want als het resultaat altijd een getal is tussen 0 en 2^256-1, dan geven meerdere inputs dezelfde output, toch? En als dat zo is, dan kun je toch een database maken met 2^256 verschillende inputs om altijd elke output op te kunnen zoeken die je wil?

En dat is helemaal waar. Maar wederom gaat hier het argument op dat het binnen de redelijkheid niet te doen is. 2^256 is een getal met 72 cijfers.

Om precies te zijn:

115,792,089,237,316,195,423,570,985,008,687,907,853,269,984,665,640,564,039,457,584,007,913,129,639,936.

Dat lijkt natuurlijk veel. Maar de hashrate van Bitcoin is op dit moment ook behoorlijk hoog. En in plaats van dat je lukraak van alles hoeft te proberen hoef je elke oplossing maar één keer te vinden. Daarnaast, zelfs als je een database hebt waarin je 1% van de hashes op comando kunt opzoeken, dan is dat ook een gevaarlijk wapen. True, maar stel je wil 1% van alles hash uitkomsten verzamelen, en je gebruikt de volledige capaciteit van het huidige Bitcoin netwerk om dat te doen, en je neemt aan dat je gericht nieuwe oplossingen kan vinden (dat kan niet) zelfs dan duurt het nog ongeveer 1.3 miljard jaar om je database van 1% van de oplossingen te maken. Daarnaast is de bruikbaarheid van een dergelijke database ook in twijfel te trekken, aangezien je geen volledige controle hebt over de input.

Terug naar Bitcoin

Om terug te keren op de werking van Bitcoin. De manier waarop dit gebruikt wordt om blocks te valideren is door een eis te stellen aan het block. Een block heeft de volgende vorm: het bevat als eerste een regel waar de vinder van het block zichzelf nieuwe bitcoins toekent. Vervolgens een rij met gecontroleerde transacties (geen overspending, handtekeningen gecheckt). Als dit block als input gebruikt wordt voor een sha-256, komt er een getal uit. Een block is alleen geldig als dit nummer kleiner is dan een bepaald getal. Omdat dit vaak niet het geval is wordt er onderaan de block nog een extra informatie toegevoegd, de nonce. Deze nonce is een betekenisloos getal wat gebruikt wordt om de uitkomst van de sha-256 te veranderen. Deze nonce is het antwoord op de puzzel zonder hints. De hoogte van het getal waaraan de hash wordt getoetst is dynamisch, en wordt aangepast aan de hashrate zodat gemiddeld elke tien minuten een block gevonden wordt.

Tot slot, om zekerheid te hebben over de volgorde van de blocks wordt in het block de hash van het vorige block opgenomen. Op die manier weet je zeker dat de volgorde van de transacties deugd.

Zodra een miner een valide block heeft gevonden, dat wil zeggen alle transacties zijn conform de regels van Bitcoin en inclusief de nonce komt de hash uit op een getal wat klein genoeg is, geeft hij dit door aan andere nodes. Deze nodes controleren alle transacties zelf ook en aangezien de miner hun het antwoord op de puzzel heeft meegegeven kunnen ze heel snel controleren of het antwoord klopt. Als alle checks zijn uitgevoerd is geeft de node het block door aan andere nodes.

In het geval dat er ongeveer gelijktijdig twee verschillende blocks binnen komen die beide een valide opvolger zijn van het vorige block zal de node wachten. De node gaat altijd verder op de langste keten. Aangezien deze keten het meeste Proof of Work bezit. Er zit meer rekenkracht in.

Welke transacties de miner in zijn block op neemt mag hij helemaal zelf weten. Dit is waar de vrijwillige transaction fee voor is ontworpen. Sowieso krijgt de miner zijn eigen block reward, maar ook de transaction fee van de transacties in zijn block.

Tot slot

Dit is een kleine overview van hoe Bitcoin onder de moterkap werkt. Eigenlijk is het niet meer dan een constante race om een algoritme met verschillende informatie onder een bepaalde waarde uit te laten komen. De bijwerkingen hiervan zijn dat het een gezond, stabiel netwerk oplevert waarin geen centrale figuur de dienst uit maakt.

Wil je eens zien hoe dit in de praktijk werkt? Bekijk dan eens de live demo van Anders Brownworth.

Over Casper Thalen, blogger bij Dutch Blockchain Network

Casper (24) studeert Econometrics & Operations Research aan de Rijksuniversiteit Groningen. Vanuit zijn interesse in ‘all-things-technical’ is zijn aandacht ook gegrepen door blockchain en andere decentraliserende technologieën. In zijn vrije tijd staat hij graag op de tennisbaan of leest hij non-fictie.

Related posts

Post a Comment

You must be logged in to post a comment.