Bitcoin software updates: wat zijn hard en soft forks?
Het Bitcoin (BTC) protocol is continu in ontwikkeling, zoals de voortgaande implementatie van Taproot en Schnorr bijvoorbeeld. We zien bij updates dan termen als ‘hard fork‘ en ‘soft fork’ voorbij komen. Maar wat zijn dit eigenlijk?
Bitcoin (BTC) protocol
Bitcoin is géén gesloten database zoals van een bank of een betaalprovider zoals PayPal. Iedereen kan de open source software downloaden en een node draaien. Daarmee ben je onderdeel van het Bitcoin netwerk en controleer je automatisch de transacties op je netwerk.
Deze code is open-source op Github bekijken en het mooie is dat iedereen verbeteringen kan aandragen. Aan de commits en pull requests op de Github van Bitcoin is te zien dat tientallen ontwikkelaars dagelijks sleutelen aan het protocol.
Om de zoveel maanden is er een grote (re) update aan het Bitcoin protocol. Daarin worden alle besproken verbeteringen en veranderingen doorgevoerd. Zo kwam er versie 0.20.1 van de Bitcoin Core uit. Het betrof overigens een minder ingrijpende update dan 0.20.0 in juni 2020.
Bitcoin Core 0.20 is now available!
117 people contributed to this release.https://t.co/q2aX6QhlTl— Jameson Lopp (@lopp) June 3, 2020
Het zijn vaak verbeteringen om de code efficiënter te maken en soms betreft het grotere veranderingen. Zo is bij 0.20 afscheid genomen van OpenSSL, een feature ingebakken door Satoshi Nakamoto himself.
Het is software die alle gesynchroniseerde informatie van het Bitcoin-netwerk synchroniseert. Maar dat leidde in de praktijk tot méér bugs en lagere netwerkprestaties.
Bitcoin Independence Day
Grote veranderingen hebben doorgaans meer tijd nodig om een consensus over te bereiken. Zodra de code is aangepast, is het aan de miners en nodes om hun software bij te werken.
Daardoor gaat iedereen (als het goed is) mee naar een volgende versie van hetzelfde protocol. Zolang iedereen hier in mee gaat, is er niets aan de hand.
Echter zijn er ook controversiële onderwerpen die in bepaalde updates komen. Dit leidt tot splitsing in de community. Als men kiest om een aangepaste versie van de Core code te draaien, splits het netwerk in tweeën. Dit noem je een fork.
Op 1 augustus 2017 was er sprake van een opmerkelijke soft fork, dat elk jaar herdacht wordt via de Bitcoin Independence Day.
De aanleiding was een groepje invloedrijke miners die in mei 2017 de ‘New York Agreement’ sloten. Ze wilden twee zaken doorvoeren:
Deze initiatiefnemers hadden toen circa 80% van de totale miningkracht in handen. Hun versie SegWit2x zou voor een netwerksplitsing zorgen, een hard fork.
Maar door middel van een User Activated Soft Fork zette een groot deel van de bitcoin node eigenaren de miners echter letterlijk en figuurlijk voor het blok. Doe je als miner niet mee met deze update? Dan worden jouw blocks genegeerd door de aangesloten nodes.
UASF staat voor User Activated Soft Fork. De nodes wonnen van de miners en de blockgrootte is niet vergroot naar 4MB. Wél is besloten om de SegWit door te voeren als schaalbaarheidsoplossing.
Na de SegWit update kwam het alsnog tot een hard fork, met Bitcoin en Bitcoin Cash tot gevolg.
Hard en soft fork
Een splitsing hoeft niet gelijk tot een nieuwe cryptomunt te leiden, zoals in het geval van Bitcoin Cash gebeurde. Een hard en een soft fork is een verschillende manier om de Bitcoin software te updaten. De ene is wat rigoureuzer dan de andere.
Soft fork
Een soft fork is een ‘backwards-compatible’ manier om een software te updaten. Het is een tijdelijke en niet-definitieve splitsing van de blockchain na de implementatie van nieuwe regels. Het accepteert blocks van niet-geupgrade nodes en van wél geupdate nodes tegelijkertijd in een apart netwerk.
Intussen draait het netwerk vrolijk door en vindt er gewoon verwerking van transacties plaats. Tegelijkertijd maken de nodes en miners de balans op en maken ze een keuze of ze erin meegaan of niet.
Bij een bepaalde blockhoogte is dan duidelijk of de software update heeft plaatsgevonden of dat de oude versie blijft bestaan. ‘Backwards-compatible’ dus. Het voorstel van de soft fork kan falen en dan gaat de originele chain gewoon verder.
Hard fork
Een hard fork is een snellere aanpassing van de code. Het gaat doorgaans om een meer ingrijpende verandering met een hogere prioriteit. Het is niet backwards-compatible en het gaat om permanente aanpassingen in de blockchain.
Het resultaat zijn twee verschillende netwerken die niet compatibel zijn met elkaar. Elke munt op netwerk 1, krijgt een duplicaat op netwerk 2. Iets wat ook met Bitcoin en Bitcoin Cash is gebeurd. Houders van 1 Bitcoin kregen ook 1 Bitcoin Cash.
Na verloop van tijd krijgt één van de twee netwerken een duidelijke voorkeur, en dan raakt de prikkel weg om de ‘zwakkere’ chain te supporten. In veel gevallen sterft één van de twee chains uit.
Het kan echter zo zijn dat er niet echt een duidelijke voorkeur is voor een van de twee netwerken, en in zo’n geval heb je dus twee netwerken die naast elkaar leven.
Het kan ook leiden tot een zogenaamde ‘oorlog om rekenkracht’, ook bekend als ‘hashwar’. Want miners moeten uiteindelijk voor welke ketting ze een volgend block willen minen.
Hoewel ze lange tijd kunnen volhouden om meer cryptocurrency’s te delven zolang het winstgevend is en ze toegang hebben tot goedkope stroom (in het geval van proof-of-work).
De meeste aanpassingen worden gedaan met soft forks omdat dit een veiliger en minder urgent is. Bitcoin heeft geen baas of CEO die beslissingen maakt. Dit gebeurt op een organische manier en het neemt over het algemeen veel tijd in beslag.
Hou jij na het lezen van deze Bitcoin 101 vragen over? Kom gezellig langs in ons Telegram kanaal en praat gezellig mee.