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.