Wat zijn hard forks en soft forks?

Een “fork”, in programmeertermen, is een open-source codemodificatie. Meestal is de geforkte code vergelijkbaar met het origineel, maar met belangrijke wijzigingen, en de twee kunnen naast elkaar bestaan. In de cryptocurrency-markt wordt een fork vaak ingezet om een ​​fundamentele verandering door te voeren, of om een ​​nieuw activum te creëren met vergelijkbare kenmerken als het origineel.

Niet alle forken zijn echter opzettelijk. Met een wijdverspreide open-source codebase kan een fork per ongeluk gebeuren wanneer niet alle nodes dezelfde informatie repliceren. Meestal worden deze forks echter geïdentificeerd en opgelost. De meeste forks zijn echter het gevolg van meningsverschillen over fundamentele kenmerken van de blockchain.

Deze forks hebben echter wel een gedeelde geschiedenis. Het overzicht van transacties op elk van de ketens (oud en nieuw) is identiek voorafgaand aan het evenement.

Hard forks

Er zijn twee hoofdtypen forks: hard en soft.

Een hard fork is een wijziging in een protocol dat oudere versies ongeldig maakt. Als oudere versies blijven draaien, zullen ze eindigen met een ander protocol en met andere gegevens dan de nieuwere versie. Dit kan tot grote verwarring en mogelijke fouten leiden.

Bij Bitcoin (BTC) zou een hard fork nodig zijn om bepalende parameters te wijzigen, zoals de blokgrootte, de moeilijkheidsgraad, limieten voor aanvullende informatie die kan worden toegevoegd, etc. Een wijziging van één van deze regels zou ervoor zorgen dat blokkades door het nieuwe protocol worden geaccepteerd, maar door oudere versies worden afgewezen en zal tot ernstige problemen kunnen leiden – mogelijk zelfs tot verlies van geld.

Als de limiet voor de blokgrootte bijvoorbeeld zou worden verhoogd van 1 MB naar 4 MB, zou een blok van 2 MB worden geaccepteerd door nodes met de nieuwe versie, maar afgewezen door nodes met de oudere versie.

Laten we zeggen dat dit blok van 2 MB wordt gevalideerd door een bijgewerkt node en wordt toegevoegd aan de blockchain. Wat als het volgende blok wordt gevalideerd door een node met een oudere versie van het protocol? Het zal proberen zijn blok toe te voegen aan de blockchain, maar het zal detecteren dat het laatste blok niet geldig is. Het negeert dus dat blok en voegt de nieuwe validatie ervan toe aan het vorige. Hierdoor heb je opeens twee blockchains, één met zowel oudere als nieuwere versieblokken, en een andere met alleen oudere versieblokken. Niet ideaal dus.

Tevens is een hard fork best wel riskant omdat het mogelijk is dat Bitcoins, die in een nieuw blok zijn uitgegeven, opnieuw kunnen worden uitgegeven aan een oud blok. De enige oplossing is dat het ene keten wordt verlaten ten gunste van het andere.

Soft forks

Een belangrijk verschil tussen hard forks en soft forks, is dat soft forks nog steeds kunnen werken met oudere versies.

Als bijvoorbeeld een protocol wordt gewijzigd op een manier die de regels aanscherpt, een cosmetische wijziging doorvoert of een functie toevoegt die de structuur op geen enkele manier beïnvloedt, worden nieuwe versieblokken geaccepteerd door nodes met de oude versie. Omgekeerd werkt echter niet, omdat de nieuwe versie de oude versieblokken zou weigeren.

Om weer Bitcoin als voorbeeld te gebruiken, zouden miners van de oude versie zich realiseren dat hun blokken werden afgewezen en zouden zij upgraden naar de nieuwe versie. Naarmate meer miners upgraden, wordt de keten met nieuwe blokken de langste, die de oude versieblokken zou afwijst, wat er weer voor zorgt dat meer miners upgraden. Aangezien nieuwe versieblokken worden geaccepteerd door zowel oude als nieuwe nodes, winnen de nieuwe versieblokken uiteindelijk en is de soft fork voltooid.

Soft forks lopen ook niet het risico op double spending zoals hard forks dat wel doen, aangezien handelaren en gebruikers met oude nodes zowel de nieuwe als de oude versie zullen lezen.