Welke soorten nodes zijn er?
Kortgeleden schreven we over het belang van het draaien van een node. In dit artikel gingen we in op de rol van een full node, maar er zijn verschillende soorten nodes die elk een apart doel dienen. In dit artikel zetten we ze op een rijtje.
Van licht tot zwaar
Het soort node dat je draait heeft invloed op hoeveel functionaliteit en betrouwbaarheid de node je kan bieden, alsmede de mate waarin je bijdraagt aan het netwerk. Elke soort node is goed voor een bepaald doel. Tevens is de keuze voor een soort node afhankelijk van de hoeveelheid opslag en bandbreedte die beschikbaar is. We bekijken de verschillende soorten nodes en hun functionaliteit in volgorde van 'licht' tot 'zwaar'.
De Simplified Payment Verification (SPV) node
Een Simplified Payment Verification (SPV) node download alleen de headers van alle blocks tijdens het synchroniseren. Een block header is de unieke identificatie van een block en wordt gebruik om opvolgende blocks aan elkaar te linken; het nieuwere block verwijst naar de block header van het oudere block.
Wanneer de SPV node alle block headers heeft gedownload vraagt deze vervolgens transactie-informatie op van externe full nodes. De SPV node vraagt informatie over transacties die voor de node zelf van belang zijn; de transacties die bij de wallet van de SPV node horen. Door gebruik te maken van de merkle root van transacties uit de block header en de tak waarin de relevante transactie zit kan aan de SPV node bewezen worden dat een bepaalde transactie inderdaad is opgenomen in een block, zonder dat de SPV node zelf de volledige geschiedenis moet downloaden.
De SPV node is de lichtste soort node die gebruikt wordt en biedt minimale verificatie. De SPV node kan niet controleren of de opgenomen transacties geldig zijn, maar alleen een schatting maken over de hoeveelheid proof-of-work die nodig is om een double-spend uit te voeren. SPV nodes worden veelal gebruikt voor lichte wallets, zoals mobiele wallets, waar er niet genoeg middelen zijn om het draaien van een zwaardere node te ondersteunen.
De SPV node is door de lichte eisen voor het systeem zeer geschikt voor allerlei applicaties, maar niet voor toepassingen waar met grotere bedragen gewerkt wordt. De SPV node kan namelijk voor de gek gehouden worden door de full node waar informatie opgevraagd wordt, zonder dat de SPV node vervolgens zelf in staat is om te verifiëren of de informatie helemaal klopt.
De egoïstische 'pruned' node
De term 'pruned' duidt op het weggooien van oude data. Een pruned node download in eerste instantie alle blockdata en verifieert de geldigheid van van alle blocks en transacties. Wanneer de pruned node up-to-date is, verwijdert deze de oude data en houdt dus geen volledige transactiegeschiedenis bij. Hierdoor wordt opslagruimte bespaard.
De aanduiding egoïstisch betekent dat de node geen informatie over blocks en transacties doorgeeft aan andere nodes in het netwerk; de node is niet geïnteresseerd in bijdragen aan het netwerk en is alleen gericht op informatie die relevant is voor de wallet van de node. Doordat de egoïstische pruned node wel eerst de volledige geschiedenis download is de node wel zeker over de geldigheid van transacties.
Door het weggooien van de oude blockchaindata en het niet doorsturen van de ontvangen blocks en transacties bespaart de egoïstische pruned node opslagruimte en gebruikte bandbreedte. Deze soort node kan zinnig zijn wanneer meer zekerheid over transacties nodig is dan bij SPV-applicaties, maar er niet genoeg middelen beschikbaar zijn om de volledige geschiedenis bij te houden en bij te dragen aan het netwerk.
De egoïstische archiverende full node
De egoïstische archiverende full node slaat wel een volledige geschiedenis van de bitcoin blockchain op, maar stuurt geen informatie over de blockchain door naar andere deelnemers in het netwerk. Hierdoor kan de node lokaal allerlei informatie uit de blockchain opzoeken en wel geheel zeker zijn over de geldigheid van transacties, zonder volledig open te staan voor connecties van buitenaf om informatie over de blockchain door te sturen.
De pruned netwerk node
De pruned netwerk node houdt, net zoals eerder beschreven, geen volledige geschiedenis van de blockchain bij. Wel draagt de node bij aan het netwerk door informatie over blocks en transacties door te geven aan andere nodes in het netwerk, maar de informatie die de node door kan geven is beperkt tot de meest recente 144 blocks.
De node kan een limiet instellen voor de hoeveelheid bandbreedte die dagelijks gebruikt mag worden voor het doorgeven van informatie over de blockchain. Maar omdat de node geen volledige geschiedenis bijhoudt is deze niet in staat bij te dragen aan het netwerk door informatie over de gehele blockchain opvraagbaar te maken.
De archiverende netwerk full node
Een archiverende netwerk full node is een node die een volledige geschiedenis van de blockchain bijhoudt (en verifieert) en ook gehele kopieën van de blockchain door kan geven aan de andere deelnemers in het netwerk. De archiverende netwerk node is een van de 'zwaarste' nodes die men kan draaien, omdat deze de hoogste eisen aan de gebruikte opslagruimte en bandbreedte stelt.
Daartegenover staat dat dit soort node essentieel is voor het netwerk. Dit soort node draagt bij aan een gezond netwerk. De node maakt het mogelijk om nieuwe full nodes van start te laten gaan door informatie over de blockchain door te sturen en dient tevens als node waarmee een SPV node verbinding kan maken om informatie over een transactie op te vragen. Onmisbaar dus.
Economische full nodes
Tot slot zijn er de full nodes die het meeste invloed hebben: de economische nodes. Dit zijn nodes die gebruikt worden om economisch verkeer op te baseren. Dit kan de node van een privé-gebruiker thuis zijn, of de node van een bedrijf dat met bitcoin-betalingen werkt. Zoals beschreven in het artikel over het belang van het draaien van een node, zijn dit de nodes die de meeste invloed op het netwerk uitoefenen.
Economische full nodes bepalen namelijk welke transacties gezien worden als geldige betaling. Hiermee dienen economische full nodes als handhavers van de consensusregels. Als een betaling immers niet door een economische partij geaccepteerd wordt, dan is dit geen geldige transactie voor de consensusregels die de partij in kwestie aanhoudt. Full nodes, en met name economische full nodes, zijn dus uiteindelijk degene die bepalen welke regels het netwerk aanhoudt. Daarom is het van belang dat iedereen zo'n node kan draaien: elke gebruiker moet in staat zijn bij te dragen aan het handhaven van de regels waar hij of zij voor kiest.