Blockchain

Harde vorken, zachte vorken, wanbetalingen en dwang

Een van de belangrijke argumenten in de blockchain-ruimte is de vraag of harde vorken of zachte vorken het geprefereerde protocolupgrademechanisme zijn. Het fundamentele verschil tussen de twee is dat zachte vorken de regels van een protocol veranderen strikt verminderen de reeks transacties die geldig is, zodat knooppunten die de oude regels volgen nog steeds in de nieuwe keten terechtkomen (op voorwaarde dat de meerderheid van de miners/validators de fork implementeert), terwijl harde vorken ervoor zorgen dat eerder ongeldige transacties en blokken geldig worden, zodat clients moeten hun klanten upgraden om in de hard-forked-keten te blijven. Er zijn ook twee subtypen harde vorken: strikt uitbreiden harde vorken, die de reeks geldige transacties strikt uitbreiden, en zo effectief zijn de oude regels een zachte vork met betrekking tot de nieuwe regels, en bilaterale harde vorken, waarbij de twee regelsets in beide richtingen onverenigbaar zijn.

Hier is een Venn-diagram om de vorktypen te illustreren:

De voordelen die vaak voor de twee worden genoemd, zijn als volgt.
  • Met harde vorken hebben de ontwikkelaars veel meer flexibiliteit bij het uitvoeren van de protocolupgrade, omdat ze er niet voor hoeven te zorgen dat de nieuwe regels ‘in’ de oude regels passen.
  • Zachte vorken zijn handiger voor gebruikers, omdat gebruikers niet hoeven te upgraden om aan de ketting te blijven
  • Zachte vorken leiden minder snel tot een kettingbreuk
  • Zachte vorken vereisen eigenlijk alleen toestemming van mijnwerkers/validators (want zelfs als gebruikers nog steeds de oude regels gebruiken, als de knooppunten die de keten vormen de nieuwe regels gebruiken, zullen in ieder geval alleen dingen die onder de nieuwe regels geldig zijn in de keten terechtkomen); harde vorken vereisen opt-in toestemming van gebruikers

Afgezien hiervan is een belangrijke kritiek die vaak wordt gegeven op harde vorken dat harde vorken “dwingend” zijn. Het soort dwang dat hier wordt geïmpliceerd is geen fysiek geweld; het is eerder zo dwang door netwerkeffect. Dat wil zeggen, als het netwerk de regels verandert van A naar B, dan moet je, zelfs als je persoonlijk van A houdt, als de meeste andere gebruikers B leuk vinden en naar B overstappen, naar B overstappen ondanks je persoonlijke afkeuring van de verandering om toegang te krijgen tot hetzelfde netwerk als iedereen.

Voorstanders van harde vorken worden vaak belachelijk gemaakt omdat ze proberen een “vijandige overname” van een netwerk te bewerkstelligen en gebruikers te “dwingen” om met hen mee te gaan. Bovendien wordt het risico op kettingbreuken vaak gebruikt om harde vorken als “onveilig” aan te merken.


Het is mijn persoonlijke mening dat deze kritiek verkeerd is, en bovendien in veel gevallen volkomen achterlijk. Dit standpunt is niet specifiek voor Ethereum, Bitcoin of welke andere blockchain dan ook; het komt voort uit de algemene eigenschappen van deze systemen en is op elk ervan toepasbaar. Bovendien zijn de onderstaande argumenten alleen van toepassing op controversiële veranderingen, waarbij een groot deel van ten minste één kiesdistrict (mijnwerkers/validators en gebruikers) deze afkeurt; als een wijziging niet controversieel is, kan deze over het algemeen veilig worden uitgevoerd, ongeacht het formaat van de fork.

Laten we eerst de kwestie van dwang bespreken. Harde vorken en zachte vorken veranderen beide het protocol op een manier die sommige gebruikers misschien niet leuk vinden; elke protocolwijziging zal dit doen als het minder dan precies 100% ondersteuning heeft. Bovendien is het bijna onvermijdelijk dat dat tenminste gebeurt sommige van de andersdenkenden waardeert in elk scenario het netwerkeffect van het vasthouden aan de grotere groep meer dan hun eigen voorkeuren met betrekking tot de protocolregels. Beide vorktypen zijn dus dwingend, in de netwerkeffectzin van het woord.

Er is echter een essentieel verschil tussen harde vorken en zachte vorken: harde vorken zijn opt-in, terwijl zachte vorken gebruikers helemaal geen “opt-in” toestaan. Om ervoor te zorgen dat een gebruiker zich bij een hard-forked-keten aansluit, moet hij persoonlijk het softwarepakket installeren dat de fork-regels implementeert, en de groep gebruikers die het nog sterker oneens is met een regelwijziging dan ze waarde hechten aan netwerkeffecten, kan theoretisch eenvoudigweg aan de kant blijven. oude keten – en praktisch gezien zo’n evenement is al gebeurd.

Dit geldt zowel voor strikt expanderende harde vorken als voor bilaterale harde vorken. Bij zachte vorken echter als de vork slaagt, bestaat de niet-gevorkte ketting niet. Vandaar, Zachte vorken geven duidelijk de voorkeur aan dwang boven afscheiding, terwijl harde vorken de tegenovergestelde voorkeur hebben. Mijn eigen morele opvattingen leiden ertoe dat ik afscheiding verkies boven dwang, hoewel anderen daar misschien van mening over verschillen (het meest voorkomende argument is dat netwerkeffecten echt heel belangrijk zijn en dat het essentieel is dat “één munt regeert ze allemaal“, hoewel er ook meer gematigde versies hiervan bestaan).

Als ik zou moeten raden waarom, ondanks deze argumenten, zachte vorken vaak als “minder dwingend” worden bestempeld dan harde vorken, zou ik zeggen dat dit komt omdat het voelt alsof een harde vork de gebruiker “dwingt” een software-update te installeren, terwijl met een zachte vork hoeven gebruikers helemaal niets te doen. Deze intuïtie is echter misleidend: wat er toe doet is niet of individuele gebruikers al dan niet de eenvoudige bureaucratische stap moeten uitvoeren door op een “download”-knop te klikken, maar veeleer of de gebruiker wel of niet gedwongen om een ​​verandering in de protocolregels te accepteren die ze liever niet aanvaarden. En volgens deze maatstaf, zoals hierboven vermeld, zijn beide soorten vorken uiteindelijk dwingend, en het zijn harde vorken die naar voren komen als iets beter in het behouden van de vrijheid van gebruikers.

Laten we nu eens kijken naar zeer controversiële forks, met name forks waarbij de voorkeuren van mijnwerkers/validatoren en gebruikersvoorkeuren conflicteren. Er zijn hier drie gevallen: (i) bilaterale harde vorken, (ii) strikt expanderende harde vorken, en (iii) zogenaamde “door de gebruiker geactiveerde zachte vorken” (UASF). Een vierde categorie is waar mijnwerkers een zachte vork activeren zonder toestemming van de gebruiker; we komen hier later op terug.

Ten eerste bilaterale harde vorken. In het beste geval is de situatie eenvoudig. De twee munten worden op de markt verhandeld en handelaren bepalen de relatieve waarde van de twee. Uit de ETC/ETH-zaak hebben we overweldigend bewijs dat mijnwerkers zeer waarschijnlijk hun hashraat eenvoudigweg aan munten zullen toewijzen op basis van de prijsverhouding om hun winst te maximaliseren, ongeacht hun eigen ideologische opvattingen.

Zelfs als sommige mijnwerkers ideologische voorkeuren voor de ene of de andere kant belijden, is het overweldigend waarschijnlijk dat er genoeg mijnwerkers zullen zijn die bereid zijn om elke discrepantie tussen de prijsverhouding en de hashpower-verhouding op te lossen en de twee op één lijn te brengen. Als een kartel van mijnwerkers probeert te vormen om niet in één keten te minen, zijn er overweldigende prikkels om over te lopen.

Er zijn hier twee randgevallen. De eerste is de mogelijkheid dat, als gevolg van een inefficiënt algoritme voor het aanpassen van de moeilijkheidsgraad, de waarde van het minen van de munt daalt omdat de prijs daalt, maar de moeilijkheidsgraad daalt niet om dit te compenseren, waardoor het minen zeer onrendabel wordt en er geen mijnwerkers zijn die bereid zijn om tegen een bepaalde prijs te minen. verlies om de ketting vooruit te blijven duwen totdat de moeilijkheidsgraad weer in evenwicht komt. Bij Ethereum was dit niet het geval, maar het zou goed kunnen het geval zijn met Bitcoin. Het is dus heel goed mogelijk dat de minderheidsketen nooit van de grond komt, en dus zal sterven. Merk op dat de normatieve vraag van of dit een goede zaak is hangt af van uw opvattingen over dwang versus afscheiding; Zoals je je kunt voorstellen op basis van wat ik hierboven schreef, geloof ik persoonlijk dat dergelijke algoritmen voor het aanpassen van de moeilijkheidsgraad van de minderheidsketen slecht zijn.

Het tweede randgeval is dat als de ongelijkheid erg groot is, de grote keten voor 51% de kleinere keten kan aanvallen. Zelfs in het geval van een ETH/ETC-splitsing met een verhouding van 10:1 is dit niet gebeurd; het is dus zeker geen gegeven. Het is echter altijd mogelijk dat mijnwerkers in de dominante keten de voorkeur geven aan dwang boven het toestaan ​​van afscheiding en handelen naar deze waarden.

Laten we vervolgens eens kijken naar de strikt uitbreidende harde vorken. In een SEHF bestaat de eigenschap dat de niet-gevorkte keten geldig is onder de gevorkte regels, en dus als de vork een lagere prijs heeft dan de niet-gevorkte keten, zal deze minder hashpower hebben dan de niet-gevorkte keten, en dus de niet-gevorkte ketting zal uiteindelijk als de langste ketting worden geaccepteerd door zowel de oorspronkelijke client- als de gevorkte clientregels – en dus de gevorkte ketting “zal worden vernietigd'.

Er is een argument dat er dus een sterke inherente vooringenomenheid bestaat tegen het slagen van een dergelijke vork, omdat de mogelijkheid dat de gevorkte keten wordt vernietigd, in de prijs zal worden ingebakken, waardoor de prijs lager wordt, waardoor het nog waarschijnlijker wordt dat de keten zal verdwijnen. vernietigd… Dit argument lijkt mij sterk, en daarom is het een heel goede reden om te maken elke controversiële harde vork bilateraal in plaats van strikt uit te breiden.

Bitcoin Unlimited-ontwikkelaars stellen voor om dit probleem aan te pakken door het handmatig bilateraal maken van de harde vork nadat het gebeurt, maar een betere keuze zou zijn om de bilateraliteit ingebouwd te maken; In het geval van bitcoin kan men bijvoorbeeld een regel toevoegen om ongebruikte opcode te verbieden, en dan een transactie maken die die opcode bevat op de niet-gevorkte keten, zodat onder de gevorkte regels de niet-gevorkte keten vanaf dat moment zal worden gebruikt. voor altijd ongeldig beschouwd. In het geval van Ethereum zijn bijna alle harde vorken, vanwege verschillende details over hoe de staatsberekening werkt, bijna automatisch bilateraal. Andere ketens kunnen verschillende eigenschappen hebben, afhankelijk van hun architectuur.

Het laatste type vork dat hierboven werd genoemd, is de door de gebruiker geactiveerde zachte vork. In een UASF schakelen gebruikers de soft fork-regels in zonder de moeite te nemen om consensus te krijgen van mijnwerkers; Er wordt verwacht dat mijnwerkers eenvoudigweg in de rij zullen staan ​​uit economisch belang. Als veel gebruikers niet met de UASF meegaan, zal er een muntensplitsing plaatsvinden, en dit zal leiden tot een scenario dat identiek is aan de zich strikt uitbreidende harde vork, behalve – en dit is het echt slimme en slinkse deel van het concept – dezelfde “risico van vernietiging”-druk die sterk in het nadeel is van de gevorkte ketting in een strikt uitdijende harde vork, is in plaats daarvan sterk in het voordeel van de gevorkte ketting in een UASF. Hoewel een UASF opt-in is, maakt zij gebruik van economische asymmetrie om zichzelf in de richting van succes te sturen (hoewel de vooringenomenheid niet absoluut is; als een UASF beslist impopulair is, zal zij niet slagen en eenvoudigweg tot een kettingsplitsing leiden).

UASF's zijn echter een gevaarlijk spel. Laten we bijvoorbeeld veronderstellen dat de ontwikkelaars van een project een UASF-patch willen maken die een ongebruikte opcode die voorheen alle transacties accepteerde, omzet in een opcode die alleen transacties accepteert die voldoen aan de regels van een of andere coole nieuwe functie, hoewel die wel politiek of technisch controversieel en mijnwerkers houden er niet van. Mijnwerkers hebben een slimme en slinkse manier om terug te vechten: ze kunnen eenzijdig een door mijnwerkers geactiveerde zachte vork implementeren die ervoor zorgt dat alle transacties die gebruik maken van de functie die door de zachte vork wordt gecreëerd, altijd mislukken.

Nu hebben we drie regelsets:

  1. De originele regels waarbij opcode X altijd geldig is.
  2. De regels waarbij opcode X alleen geldig is als de rest van de transactie aan de nieuwe regels voldoet
  3. De regels waarbij opcode X altijd ongeldig is.

Merk op dat (2) een zachte vork is met betrekking tot (1), en (3) een zachte vork is met betrekking tot (2). Nu is er een sterke economische druk ten gunste van (3), en dus slaagt de soft-fork er niet in zijn doel te bereiken.

De conclusie is deze. Zachte vorken zijn een gevaarlijk spel, en ze worden nog gevaarlijker als ze omstreden zijn en mijnwerkers terugvechten. Het strikt uitbreiden van harde vorken is ook een gevaarlijk spel. Door mijnwerkers geactiveerde zachte vorken zijn dwingend; Door de gebruiker geactiveerde zachte vorken zijn minder dwingend, hoewel nog steeds behoorlijk dwingend vanwege de economische druk, en ze brengen ook hun gevaren met zich mee. Als je echt een controversiële verandering wilt doorvoeren en hebt besloten dat de hoge sociale kosten die dit met zich meebrengt de moeite waard zijn, voer dan gewoon een zuivere bilaterale hard fork uit, besteed wat tijd aan het toevoegen van een goede replay-bescherming, en laat de markt het uitzoeken .

Bron: https://vitalik.eth.limo/general/2017/03/14/forks_and_markets.html