In tegenstelling tot wat soms gedacht wordt, zijn het niet de miners die bepalen welke transacties geldig zijn. Maar wie bepaalt dan of transacties geldig zijn? Dat doen alle full nodes in het netwerk. Full nodes zijn van belang voor het elimineren van vertrouwen in derden en het decentraal houden van het netwerk.
Wat doet een full node?
In tegenstelling tot wat soms gedacht wordt, zijn het niet de miners die bepalen welke transacties geldig zijn. Miners verlenen slechts een dienst aan het netwerk: zij leveren een bepaalde hoeveelheid energie en rekenkracht voor het ‘vinden’ van een block waarin zij transacties opnemen. Welke transacties de miners wel of niet in een block opnemen is geheel aan hen. Of de miners er nou voor kiezen om de transacties met de hoogste fee op te nemen, alleen transacties van vrienden op te nemen, helemaal geen transacties op te nemen of bewust bepaalde transacties niet opnemen, de miners zijn vrij om te doen wat zij willen zolang zij een geldig block produceren. Mede hierom is het van belang dat ook de controle over de (afkomst van) de rekenkracht gedecentraliseerd is; dit voorkomt dat een enkele miner censuur kan toepassen.
Maar wie bepaalt dan of transacties geldig zijn? Dat doen alle full nodes in het netwerk. Een full node is een stukje software dat de volledige geschiedenis van alle bitcointransacties bijhoudt en verifieert. Dit laatste, verifiëren, is wat bepaalt of een transactie geldig is volgens de afgesproken regels. Iedereen kan zo’n full node draaien. Elke node kan in principe zijn eigen regels bepalen voor de geldigheid van een transactie, maar alleen als de rest van het netwerk dezelfde regels hanteert zal een transactie ook door de rest van het netwerk als geldig gezien worden. Hier komen we later nog even op terug. Full nodes verifiëren, onder andere, de volgende dingen:
Dat er nooit bitcoins uit het niets zijn aangemaakt, behalve door miners volgens afgesproken regels.
Dat er nooit bitcoins zijn uitgegeven zonder dat iemand daar de geldige privé-sleutel voor had.
Dat dezelfde bitcoins nooit twee keer zijn uitgegeven (een zogenaamde double-spend).
Het elimineren van vertrouwen
De essentie van Bitcoin gaat om het elimineren van de noodzaak voor vertrouwen in anderen. Idealiter vertrouwen we namelijk niet op een derde partij of tussenpartij wanneer het aankomt op onze financiële transacties; dit zou de tussenpartij controle geven over onze financiële vrijheid. Tevens zou de tussenpartij mogelijk een centraal zwaktepunt kunnen zijn voor een aanval op ons financiële systeem.
Door zelf een full node te draaien weet je dat alle transacties die verstuurd worden in het netwerk de regels volgen van de software die jij gekozen hebt. Zo weet je dus, met wiskundige zekerheid, dat er niet gesjoemeld wordt, en hoef je niet op een derde partij te vertrouwen voor informatie over de transacties die je ontvangt. Wanneer je dit niet doet, loop je het risico dat de bron die je gebruikt voor informatie over je transacties valse informatie voorschotelt.
Wanneer men bijvoorbeeld een dienst als blockchain.info gebruikt om te controleren of zij bitcoins hebben ontvangen, is het mogelijk dat de dienst verkeerde informatie laat zien. De dienst kan bijvoorbeeld laten zien dat er bitcoins op een adres ontvangen zijn, terwijl dit in werkelijkheid niet het geval is. Dit kan allerlei negatieve gevolgen hebben, bijvoorbeeld het onterecht uitleveren van een product. Nu zal een dergelijke dienst (waarschijnlijk) meestal correcte informatie laten zien, maar dit kan veranderen mocht de dienst op een bepaald moment overgenomen worden door een kwaadwillende partij. Dit is een vertrouwensissue dat idealiter niet noodzakelijk is.
Het debat over de blockgrootte
Het draaien van een full node kost bepaalde middelen. Zo is het nodig om de gehele blockchain op te slaan om alle transacties in de geschiedenis te kunnen verifiëren. De Bitcoin blockchain is op dit moment zo’n 155 gigabyte en groeit met 1 megabyte per gemiddeld 10 minuten, ongeveer 50 gigabyte per jaar. Het tempo waarin de hoeveelheid beschikbare opslag uitgebreid moet worden (en de kosten daarvan) valt hiermee te overzien. Daarnaast is ook bandbreedte van belang: full nodes sturen voortdurend informatie over transacties en de blockchain naar elkaar door. Dit is nodig om ervoor te zorgen dat transacties en blocks tijdig over het hele netwerk van nodes verspreid worden. Wanneer nodes grotere hoeveelheden data aan elkaar moeten doorsturen, gaat ook de eis op de hoeveelheid beschikbare bandbreedte omhoog. Als derde wordt er een bepaalde last gelegd op de processor van de machine waarop de full node draait, omdat deze in staat moet zijn alle transacties en blocks op tijd te verifiëren om te voorkomen dat de node achter gaat lopen. Met meer data te verifiëren zou op den duur dus ook een snellere en duurdere processor nodig zijn.
Het recente debat over de blockgrootte, inclusief hard fork, gaat dan ook in tegenstelling tot wat velen denken niet over een technische optimalisatie, maar over de toegankelijkheid van het draaien van een node. Dit is iets dat aan de kern van Bitcoin staat. Wanneer de kosten van het draaien van een node stijgen, wordt de drempel om een full node op te zetten of te onderhouden voor sommigen (of velen) te hoog. In het begin leidt dit er toe dat alleen rijke deelnemers een full node kunnen draaien, vervolgens zullen alleen bedrijven in staat zijn een full node te bekostigen, en uiteindelijk wellicht alleen nog een aantal grote partijen: dit is centralisatie. Centrale partijen kunnen gecorrumpeerd worden. Dit betekent dat een groep van de deelnemers aan het Bitcoinnetwerk niet in staat zijn hun eigen financiële verkeer te verifiëren en moeten vertrouwen op externe diensten voor informatie over transacties. Hiermee wordt er noodzaak voor vertrouwen in anderen in het systeem geïntroduceerd.
Dit staat haaks tegenover het doel dat Bitcoin probeert te bereiken: het elimineren van de noodzaak voor vertrouwen. Wanneer er te veel vertrouwen in anderen nodig is, heeft Bitcoin als decentraal betalingssysteem gefaald. Het onbegrensd vergroten van de blockgrootte was dan ook nooit een oplossing voor de schalingsproblemen van Bitcoin: grotere blocks leiden tot hogere kosten voor het draaien van een full node, wat leidt tot minder mensen die een full node draaien, wat leidt tot meer noodzaak voor vertrouwen binnen het systeem. Dit is door velen al vroeg (lees: 9 jaar geleden) herkend en daarom is men jaren geleden begonnen met het ontwikkelen van oplossingen die geen negatieve impact hebben op de toegankelijkheid van het draaien van een full node, maar wel de transactiecapaciteit vergroten.
De economische meerderheid telt
Hoewel de miners bepalen welke transacties er opgenomen worden in een block, bepalen zij niet welke transacties geldig zijn. Zoals we al even genoemd hebben: in principe kan elke deelnemer die een full node draait zelf bepalen welke regels die node hanteert, zo ook de miners. Maar wanneer de miners transacties die niet geldig zijn volgens de meerderheid van de ‘gewone’ full nodes op het netwerk opnemen in een block, zullen deze transacties niet geaccepteerd worden door de relevante economische partijen in het netwerk. Uiteindelijk is een transactie alleen echt ‘geldig’ als deze, naast technisch geldig, ook gezien wordt als geldige betaling.
Zo zouden de miners bijvoorbeeld samen kunnen spelen om het (alleen voor hen) mogelijk te maken om transacties aan te maken waarin stiekem nieuwe bitcoins worden aangemaakt, maar wat gebeurt er wanneer deze transactie aankomt bij een handelsplatform, webshop of individu? De full nodes van deze economische spelers herkennen dat de transactie niet in lijn is met de regels die zij hanteren, en zullen de transactie dus niet als geldige betaling beschouwen. Het block van de miner met de ongeldige transactie(s) wordt niet geaccepteerd en de miner heeft waardevolle rekenkracht verspild. Uiteindelijk is het dus de economische meerderheid die bepaalt welke transacties geldig zijn. Een economische meerderheid die allen een full node draaien en hun financiële activiteit daarop baseren.
Wanneer iedereen, maar dan ook echt elke deelnemer in het Bitcoinnetwerk, in staat is om een full node te draaien is het netwerk zo bestendig mogelijk tegen eventueel gesjoemel. Men houdt elkaar, de miners, de bedrijven, in de gaten en voorkomt valsspelen. Een aantal grote partijen die elkaar controleren is niet voldoende; het is te denkbaar dat zij mogelijk samen zouden spelen, de regels veranderen, en transacties goedkeuren die de ‘gewone’ gebruiker af zou keuren, omdat er niemand meer is die hen controleert. Door elke deelnemer in staat te stellen een full node te draaien ligt de macht en controle over het netwerk bij iedereen: decentraal. Dáárom is het voor een ieder die deelneemt aan Bitcoin van belang een full node te draaien (en er zijn economische activiteit op te baseren) en dáárom wordt het toegankelijk houden van het draaien van een full node, en daarmee de mogelijkheid om zelfstandig te verifiëren, zo hevig verdedigd.
Lees het originele artikel op Bitcoin.nl