Vi förklarar hårda och mjuka gafflar
Hem
Artiklar
Vi förklarar hårda och mjuka gafflar

Vi förklarar hårda och mjuka gafflar

Avancerad
Publicerad Nov 29, 2018Uppdaterad Feb 9, 2023
8m

Introduktion

När du uppmanas att uppdatera din digitala bankapp på din smartphone tänker du förmodligen inte mycket på det. Kanske uppdateras din telefon automatiskt utan att du ens märker det. Det är trots allt en nödvändig process – om du inte installerar den senaste versionen av programvaran riskerar du att nekas åtkomst till bankens tjänster.

I kryptovalutor med öppen källkod är saker och ting helt annorlunda. Du behöver inte läsa varje kodrad som ligger till grund för Bitcoin för att använda den, men att ha valet att göra detta är viktigt. Det finns som du säkert vet ingen hierarki här och ingen bank som bara kan göra uppdateringar och ändra saker som den vill. Därför kan det vara en utmaning att implementera nya funktioner i blockkedjenätverk.
I den här artikeln kommer vi att utforska hur kryptovalutanätverk kan uppgraderas trots avsaknaden av en central enhet. För att göra detta använder de två olika mekanismer: hårda gafflar och mjuka gafflar


Vem fattar besluten i ett blockkedjenätverk?

För att förstå hur gafflar fungerar är det viktigt att först förstå deltagarna som är involverade i beslutsprocessen (eller styrningen) av nätverket.
I Bitcoin kan du i stora drag göra skillnaden mellan tre delmängder av deltagare – utvecklare, miners och användare av fullständiga noder. Det är dessa parter som faktiskt bidrar till nätverket. Lätta noder (det vill säga plånböckerna på dina telefoner, bärbara datorer, etcetera) används ofta, men de är egentligen inte "deltagare" när det handlar om nätverket.


Utvecklare

Utvecklarna är ansvariga för att skapa och uppdatera koden. För ett typiskt coin kan vem som helst bidra till denna process. Koden är offentligt tillgänglig, så de kan skicka in ändringar som andra utvecklare kan granska. 


Miners

Miners är de som säkrar nätverket. De kör kryptovalutans kod och dedikerar resurser till att lägga till nya block i blockkedjan. I Bitcoin-nätverket gör de till exempel det via bevis på arbete. De belönas för sina ansträngningar i form av block-belöningar.


Användare av fullständiga noder

Fullständiga noder är ryggraden i kryptovalutanätverket. De validerar, skickar och tar emot block och transaktioner, samt upprättar en kopia av blockkedjan.


Du hittar ofta överlappningar i dessa kategorier. Du kan till exempel vara en utvecklare och en användare av en fullständig nod eller en miner och användare av en fullständig nod. Du kan vara alla tre eller ingen av dem. Faktum är att många av vad vi anser vara kryptovalutanvändare inte tar på sig några av dessa roller. Istället väljer de att använda lätta noder eller centraliserade tjänster.

Om du tittar på beskrivningarna ovan är dte lätt att tänka att det är utvecklare och miners som fattar besluten för nätverket. Utvecklarna skapar koden – utan dem skulle du inte ha någon programvara att köra och ingen att fixa buggar eller lägga till nya funktioner i. Miners säkrar nätverket – utan sund utvinningskonkurrens kan kedjan kapas eller stanna av.
Om dessa två kategorier skulle försöka tvinga resten av nätverket att följa deras vilja skulle det dock inte sluta alltför bra. För många är den verkliga kraften koncentrerad till fullständiga noder. Detta beror till stor del på funktionen av nätverket som kallas opt-in, vilket innebär att användarna kan välja vilken programvara de kör. 

Utvecklarna bryter sig inte in i ditt hem och tvingar dig att ladda ned Bitcoin Core-binärfiler under vapenhot. Om miners antar en "jag gör som jag vill"-attityd för att tvinga fram en oönskad förändring för användarna ... Ja, då kommer användarna bara att fortsätta gå sin egen väg. 

Dessa parter är inga allsmäktiga chefer – de är tjänsteleverantörer. Om folk bestämmer sig för att inte använda nätverket förlorar dess coin i värde. Förlusten av värde påverkar alla miners direkt (deras belöningar blir mindre värda i dollar). Vad gäller utvecklarna kan de bara ignoreras av användarna.
Som du ser är inte programvaran patentskyddad. Du kan göra vilka redigeringar du vill göra och om andra kör din modifierade programvara kan ni alla kommunicera tillsammans. I så fall delar du programvaran i en gaffel och skapar ett nytt nätverk i processen.


Vad är en gaffel?

En programvarugaffel uppstår vid en punkt där programvaran kopieras och modifieras. Det ursprungliga projektet lever vidare, men det är nu skilt från det nya, som tar en annan väg. Anta att teamet på din favoritwebbplats för kryptovaluta-innehåll inte kommer överens om hur de ska gå vidare. En del av teamet kan kopiera webbplatsen på en annan domän. Men efter det skulle de kunna lägga upp andra typer av innehåll jämfört med originalet.

Projekten bygger på en gemensam grund och delar en historia. Precis som en enda väg som senare delar sig i två finns det nu en permanent skillnad i deras vägar.

Observera att den här typen av saker ofta händer i projekt med öppen källkod, redan långt innan Bitcoin eller Ethereum uppfanns. Men skillnaden mellan hårda gafflar och mjuka gafflar är en nästan exklusiv för blockkedjevärlden. Låt oss diskutera detta lite mer.



Hårda gafflar kontra mjuka gafflar

Trots att de har liknande namn och i slutändan tjänar samma syfte skiljer sig hårda och mjuka gafflar avsevärt åt. Vi tar en titt på båda två.


Vad är en hård gaffel?

Hårda gafflar är bakåtinkompatibla programuppdateringar. Vanligtvis uppstår dessa när noder lägger till nya regler på ett sätt som strider mot reglerna för de gamla noderna. Nya noder kan bara kommunicera med de som använder den nya versionen. Som ett resultat delas blockkedjan och skapar två separata nätverk: ett med de gamla reglerna och ett med de nya.

Noder blir blå när de uppdateras. De äldre och gula noderna avvisar dem, medan de blå ansluter till varandra.


Så det finns nu två nätverk som körs parallellt. De kommer båda att fortsätta att sprida block och transaktioner, men de arbetar inte längre på samma blockkedja. Alla noder hade en identisk blockkedja fram till gaffelpunkten (och den historiken finns kvar), men de kommer att ha olika block och transaktioner efteråt.


Eftersom de har en delad historia kommer du att ha coin på båda nätverken om du hade dem före gaffeln. Anta att du hade 5 BTC när en gaffel inträffade vid Block nummer 600 000. Du kan spendera dessa 5 BTC på den gamla kedjan i Block nummer 600 001, men de har inte spenderats i den nya blockkedjans Block nummer 600 001. Förutsatt att kryptografin inte har förändrats innehåller dina privata nycklar fortfarande fem coin på det delade nätverket. 
Ett exempel på en hård gaffel var 2017-gaffeln där Bitcoin splittrades upp i två separata kedjor – den ursprungliga, Bitcoin (BTC) och den nya, Bitcoin Cash (BCH). Gaffeln uppstod efter mycket bråk om bästa sättet att skala. Bitcoin Cash-förespråkarna ville öka blockstorleken, medan Bitcoin-förespråkarna motsatte sig förändringen.

En ökning av blockstorleken kräver modifiering av reglerna. Detta var före SegWits mjuka gaffel (mer om den inom kort), så noder skulle bara acceptera block mindre än 1 MB. Om du skapade ett 2 MB-block som annars var giltigt, skulle andra noder fortfarande avvisa det.

Endast noder som har ändrat dess programvara för att tillåta block som är större än 1 MB kan acceptera dessa block. Naturligtvis skulle det göra dem inkompatibla med den tidigare versionen, så endast noder med samma protokollmodifieringar kan kommunicera med varandra.


Vad är en mjuk gaffel?

En mjuk gaffel är en bakåtkompatibel uppgradering, vilket innebär att de uppgraderade noderna fortfarande kan kommunicera med de som inte är uppgraderade. Vad du vanligtvis ser i en mjuk gaffel är tillägget av en ny regel som inte krockar med de äldre reglerna.
Till exempel kan en minskning av blockstorleken implementeras genom en mjuk gaffel. Låt oss återigen se på Bitcoin för att illustrera denna punkt – även om det finns en gräns för hur stort ett block kan vara, finns det ingen gräns för hur litet det kan vara. Om du bara vill acceptera block under en viss storlek behöver du helt enkelt avvisa större.

Om du gör detta kopplas du inte automatiskt bort från nätverket. Du kommunicerar fortfarande med noder som inte implementerar dessa regler, men du filtrerar bort en del av informationen som de skickar till dig.

Ett bra praktiskt exempel på en mjuk gaffel var den tidigare nämnda Segregated Witness (SegWit)-gaffeln, som inträffade kort efter Bitcoin/Bitcoin Cash-delningen. SegWit var en uppdatering som ändrade formatet på block och transaktioner och den var skickligt utformad. Gamla noder kunde fortfarande validera block och transaktioner (formateringen bröt inte mot reglerna), men de kunde helt enkelt inte förstå dem. Vissa fält är bara läsbara när noder byter till den senare programvaran, vilket gör att de kan analysera ytterligare data.


Inte ens två år efter SegWit-aktivering hade alla noder uppgraderats. Det finns fördelar med att göra detta, men det är ingen riktig brådska eftersom det inte finns någon nätverksbrytande förändring.


Hårda gafflar kontra mjuka gafflar – vilken är bäst?

I grund och botten tjänar båda ovanstående typer av gafflar olika syften. Omstridda hårda gafflar kan splittra en community, men planerade sådana ger friheten att modifiera programvaran när alla är överens.

Mjuka gafflar är ett mildare alternativ. Generellt sett är du mer begränsad i vad du kan göra, eftersom dina nya ändringar inte kan komma i konflikt med de gamla reglerna. Om din uppdatering kan skapas på ett sådant sätt att den förblir kompatibel behöver du dock inte oroa dig för att fragmentera nätverket.


Sammanfattningsvis

Hårda och mjuka gafflar är avgörande för den långsiktiga framgången för blockkedjenätverk. De tillåter oss att göra förändringar och uppgraderingar i decentraliserade system trots bristen på en central myndighet.

Gafflar gör det möjligt för blockkedjor och kryptovalutor att integrera nya funktioner allt eftersom de utvecklas. Utan dessa mekanismer skulle vi behöva ett centraliserat system med total kontroll. Annars skulle vi ha fastnat med exakt samma regler under protokollets hela livstid.