Vad är en konsensusalgoritm för blockkedjan?
Hem
Artiklar
Vad är en konsensusalgoritm för blockkedjan?

Vad är en konsensusalgoritm för blockkedjan?

Nybörjare
Publicerad Dec 13, 2018Uppdaterad Jun 13, 2024
7m

Introduktion

En konsensusalgoritm är en mekanism som tillåter användare eller maskiner att koordinera i en distribuerad miljö. Det måste säkerställa att alla ombud i systemet kan komma överens om en enda källa till sanning, även om vissa ombud misslyckas. Systemet måste med andra ord vara feltolerant (se även: Vi förklarar bysantinsk feltolerans förklaras).

I en centraliserad konfiguration har en enda enhet makt över systemet. I de flesta fall kan denna göra ändringar som den vill – det finns inget komplicerat styrningssystem för att nå konsensus bland flera administratörer. 

Men en decentraliserad konfiguration är en helt annan historia. Hur når vi en överenskommelse om vilka poster som läggs till i en distribuerad databas?

Att övervinna den utmaningen, i en miljö där främlingar inte litar på varandra, var kanske den mest avgörande utvecklingen som banade väg för blockkedjor. I den här artikeln kommer vi att ta en titt på hur konsensusalgoritmer är avgörande för hur kryptovalutor och distribuerade orderböcker fungerar.


Konsensusalgoritmer och kryptovaluta

I kryptovalutor registreras användarnas balanser i en databas – blockkedjan. Det är viktigt att alla (eller mer exakt, varje nod) har en identisk kopia av databasen. Annars skulle du snart få olika sorters information, vilket undergräver hela syftet med kryptovalutanätverket.
Kryptografi med offentlig nyckel säkerställer att användarna inte kan spendera varandras coin. Men det måste fortfarande finnas en enda källa till sanning som nätverksdeltagare förlitar sig på för att kunna avgöra om tillgångarna redan har spenderats.

Satoshi Nakamoto, skaparen av bitcoin, föreslog ett bevis (PoW) på arbete-system för att samordna deltagarna. Vi går snart in på hur PoW fungerar – men först kommer vi att identifiera några av de gemensamma egenskaperna hos de många konsensusalgoritmer som finns.

För det första kräver vi att användare som vill lägga till block (vi kallar dem validerare) tillhandahåller en insats. Insatsen är något slags värde som en validerare måste lägga fram, vilket avskräcker henfrån att handla oärligt. Om någon fuskar kommer hen att förlora sin insats. Exempel inkluderar datorkraft, kryptovaluta eller till och med rykte. 
Varför skulle någon bry sig om att riskera sina egna resurser? Därför att det också finns en belöning tillgänglig. Denna består vanligtvis av protokollets egen kryptovaluta och består av avgifter som betalas av andra användare, nygenererade kryptovalutaenheter eller båda.
Till sist behöver vi transparens. Vi måste kunna upptäcka om någon fuskar. Helst borde det vara dyrt att tillverka block, men billigt för vem som helst att validera dem. Detta säkerställer att validerare hålls i schack av vanliga användare.


Andra typer av konsensusalgoritmer

Bevis på arbete (PoW)

Bevis på arbete (PoW) är gudfadern till blockkedjans konsensusalgoritmer. Det implementerades först i bitcoin, men själva konceptet har funnits sedan länge. I bevis på arbete hashar validerarna (kallade miners) data de vill lägga till tills en specifik lösning tas fram.
En hash är en till synes slumpmässig sträng av bokstäver och siffror som skapas när du kör data genom en hashfunktion. Men om du kör samma data igenom den igen får du alltid samma utdata. Ändras en enda detalj blir din hash helt annorlunda.

När du tittar på utdata kan är det omöjligt säga vilken information som matades in i funktionen. De är därför användbara för att bevisa att du kände till en bit data innan en viss tidpunkt. Du kan ge någon dess hash och när du senare avslöjar data kan den personen köra dessa genom funktionen för att se till att alla utdata är desamma.

I bevis på arbete anger protokollet villkoren för vad som gör ett block giltigt. Det kan till exempel säga att bara ett block vars hash som börjar med 00 kommer att vara giltigt. Det enda sättet för miners att skapa en som matchar den kombinationen är att använda brute-force-indata. De kan justera en parameter i sina data för att producera ett annat resultat för varje gissning tills de får rätt hash. 

Inom stora blockkedjor är ribban satt otroligt högt. För att konkurrera med andra miners skulle du behöva ett lager fullt av speciell hashhårdvara (ASIC:er) för att ha en chans att producera ett giltigt block.

Din insats vid utvinning är kostnaden för dessa maskiner och den elektricitet som krävs för att driva dem. ASIC:er är byggda för ett ändamål, så de har ingen användning i applikationer utanför kryptovalutautvinning. Ditt enda sätt att få tillbaka din initiala investering är genom utvinning, vilket ger en betydande belöning om du lyckas lägga till ett nytt block i blockkedjan.

Det är enkelt för nätverket att verifiera att du verkligen har skapat rätt block. Även om du har provat biljoner kombinationer för att få rätt hash, behöver de bara köra dina data genom en funktion en gång. Om dina data producerar en giltig hash accepteras de och du får en belöning. Annars avvisar nätverket dem, varpå du kommer att ha slösat bort tid och elektricitet för ingenting.


Bevis på insats (PoS)

Bevis på insats (PoS) föreslogs i början av bitcoin som ett alternativ till bevis på arbete. I ett PoS-system finns det inget koncept med miners, specialiserad hårdvara eller massiv energiförbrukning. Allt du behöver är en vanlig PC.
Ok, kanske lite mer än så. Du måste fortfarande lägga lite tid på detta. I PoS tar du inte fram en extern resurs (som el eller hårdvara), utan en intern sådan – kryptovaluta. Reglerna skiljer sig åt för alla protokoll, men det finns i allmänhet ett minimibelopp du måste inneha för att vara berättigad till staking.

Därifrån låser du in dina tillgångar i en plånbok (de kan inte flyttas under staking). Du kommer vanligtvis överens med andra validerare om vilka transaktioner som ingår i nästa block. På sätt och vis satsar du på vilket block som väljs och protokollet väljer ett.

Om ditt block väljs får du en del av transaktionsavgifterna, beroende på din insats. Ju mer tillgångar du har låst, desto mer kan du vinna. Men om du försöker fuska genom att föreslå ogiltiga transaktioner förlorar du en del av (eller hela) din insats. Därför har vi en liknande mekanism som PoW – att agera ärligt är mer lönsamt än att agera oärligt.

I allmänhet finns inga nyskapade coin som del av belöningen för validerare. Blockkedjans egen valuta måste alltså ges ut på ett annat sätt. Detta kan göras antingen via en initial distribution (dvs en ICO eller IEO), eller genom att protokollet startas med PoW innan det senare övergår till PoS.

Hittills har rena bevis på insats bara implementerats i mindre kryptovalutor. Därför är det oklart om det kan fungera som ett lönsamt alternativ till PoW. Även om det verkar teoretiskt bra är det väldigt annorlunda i praktiken. 

När PoS väl introduceras på ett nätverk med en stor mängd värde, blir systemet ett spelfält för spelteori och ekonomiska incitament. Alla med kunskap om att "hacka" ett PoS-system skulle sannolikt bara göra det för att dra nytta av det om de kunde – därför är det enda sättet att ta reda på om det är genomförbart på ett livenätverk.

Vi kommer snart att få se PoS testas i stor skala – Casper implementeras som en del av en serie uppgraderingar av Ethereum-nätverket (allmänt känt som Ethereum 2.0).


Andra konsensusalgoritmer

Bevis på arbete och bevis på insats är de mest diskuterade konsensusalgoritmerna. Men det finns en mängd andra, som alla har sina egna fördelar och nackdelar. Kolla in följande artiklar:


Sammanfattningsvis

Mekanismer för att uppnå konsensus är avgörande för att distribuerade system ska fungera. Många tror att den största innovationen inom bitcoin var användningen av bevis på arbete, för att göra det möjligt för användare att komma överens om en delad uppsättning fakta.

Konsensusalgoritmer stöder idag inte bara digitala penningsystem, utan även blockkedjor som tillåter utvecklare att köra kod över ett distribuerat nätverk. De är nu en grundpelare i blockkedjetekniken och är avgörande för den långsiktiga livskraften för de olika nätverk som finns.

Av alla konsensusalgoritmer är bevis på arbete fortfarande det dominerande. Ett alternativ som är mer pålitligt och säkrare har ännu inte föreslagits. Det finns som sagt en enorm mängd forskning och utveckling för att ersätta PoW och vi kommer sannolikt att se fler av dem dyka upp under kommande år.