Byzantine Fault Tolerance Explained

Sedan Bitcoin startades 2008 som ett peer-to-peer elektroniskt kontantsystem har många andra kryptovalutor skapats, var och en med en särskild mekanism. Men en sak som nästan alla kryptovalutor har gemensamt är blockkedjan, som är kärnan i deras arkitektur.

Med få undantag är blockkedjor avsiktligt utformade för att vara decentraliserade och fungerar som en digital huvudbok som upprätthålls av ett distribuerat nätverk av datanoder. Av denna anledning har blockkedjetekniken möjliggjort skapandet av förtroendefria ekonomiska system, där transparenta och tillförlitliga finansiella transaktioner kan utföras utan behov av mellanhänder. Kryptovalutor antas som ett livskraftigt alternativ till traditionella bank- och betalningssystem, som är starkt beroende av tillit.

Som de flesta distribuerade datorsystem måste deltagarna i ett kryptovaluta-nätverk regelbundet komma överens om blockkedjans aktuella tillstånd, och det är vad vi kallar konsensusuppfyllelse. Att uppnå konsensus i distribuerade nätverk, på ett säkert och effektivt sätt, är dock långt ifrån en lätt uppgift.

Så, hur kan ett distribuerat nätverk av datanoder komma överens om ett beslut, om det är troligt att vissa av noderna kommer att misslyckas eller agera oärligt? Detta är den grundläggande frågan i det så kallade Byzantine Generals problem, som gav upphov till begreppet Byzantine fault tolerance.

Vad är Byzantine Generals problem?

Med några få ord kan man säga att det bysantinska generalsproblemet utformades 1982 som ett logiskt dilemma som illustrerar hur en grupp bysantinska generaler kan få kommunikationsproblem när de försöker komma överens om sitt nästa drag.

Dilemmat förutsätter att varje general har en egen armé och att varje grupp är placerad på olika platser runt den stad som de har för avsikt att angripa. Generalerna måste komma överens om att antingen anfalla eller dra sig tillbaka. Det spelar ingen roll om de angriper eller drar sig tillbaka, så länge alla generaler når samförstånd, dvs, enas om ett gemensamt beslut för att kunna utföra det samordnat.

Därmed kan vi betrakta följande krav:

  • Varje general måste besluta: attackera eller retirera (ja eller nej);
  • När beslutet är fattat kan det inte ändras;
  • Alla generaler måste enas om samma beslut och utföra det på ett synkroniserat sätt.

De ovannämnda kommunikationsproblemen hänger samman med det faktum att en general endast kan kommunicera med en annan genom meddelanden, som vidarebefordras av en kurir. Följaktligen är den centrala utmaningen i det bysantinska generalsproblemet att meddelandena på något sätt kan fördröjas, förstöras eller gå förlorade.

Därutöver kan en eller flera generaler, även om ett meddelande lyckas levereras, välja (oavsett anledning) att agera illvilligt och skicka ett bedrägligt meddelande för att förvirra de andra generalerna, vilket leder till ett totalt misslyckande.

Om vi tillämpar dilemmat i samband med blockkedjor representerar varje general en nätverksnod, och noderna måste nå konsensus om systemets aktuella tillstånd. Om man uttrycker det på ett annat sätt måste majoriteten av deltagarna i ett distribuerat nätverk komma överens och utföra samma åtgärd för att undvika ett fullständigt misslyckande.

Det enda sättet att uppnå konsensus i dessa typer av distribuerade system är därför att ha minst ⅔ eller fler pålitliga och ärliga nätverksnoder. Detta innebär att om majoriteten av nätverket bestämmer sig för att agera illvilligt är systemet känsligt för fel och attacker (t.ex. 51%-attacken).

Byzantinsk feltolerans (BFT)

Med några få ord är byzantinsk feltolerans (BFT) egenskapen hos ett system som kan motstå den klass av fel som härleds från det byzantinska generella problemet. Detta innebär att ett BFT-system kan fortsätta att fungera även om några av noderna misslyckas eller agerar illvilligt.

Det finns mer än en möjlig lösning på Byzantine Generals problem och därför flera sätt att bygga ett BFT-system. På samma sätt finns det olika tillvägagångssätt för en blockkedja för att uppnå Byzantinsk feltolerans och detta leder oss till de så kallade konsensusalgoritmerna.

Blockkedjans konsensusalgoritmer

Vi kan definiera en konsensusalgoritm som den mekanism genom vilken ett blockkedjenätverk når konsensus. De vanligaste implementeringarna är Proof of Work (PoW) och Proof of Stake (PoS). Men låt oss ta Bitcoin-fallet som exempel.

Men medan Bitcoin-protokollet föreskriver systemets primära regler är PoW-konsensusalgoritmen det som definierar hur dessa regler ska följas för att nå konsensus (till exempel under verifiering och validering av transaktioner).

Och även om konceptet Proof of Work är äldre än kryptovalutor, utvecklade Satoshi Nakamoto en modifierad version av det som en algoritm som möjliggjorde skapandet av Bitcoin som ett BFT-system.

Observera att PoW-algoritmen inte är 100 % tolerant mot bysantinska fel, men på grund av den kostnadskrävande brytningsprocessen och de underliggande kryptografiska teknikerna, har PoW visat sig vara en av de säkraste och mest tillförlitliga implementeringarna för blockchain-nätverk. I den meningen anses konsensusalgoritmen Proof of Work, som utformades av Satoshi Nakamoto, av många vara en av de mest geniala lösningarna på byzantinska fel.

Sluttankar

Byzantine Generals’ Problem är ett spännande dilemma som så småningom gav upphov till BFT-systemen, som tillämpas i stor utsträckning i olika scenarier. Utöver blockkedjebranschen är några användningsområden för BFT-system flyg-, rymd- och kärnkraftsindustrin.

I kryptovalutakontexten är det viktigt att ha en effektiv nätverkskommunikation tillsammans med en bra konsensusmekanism för varje blockkedjeekosystem. Att säkra dessa system är ett pågående arbete, och de befintliga konsensusalgoritmerna har ännu inte övervunnit några begränsningar (t.ex. skalbarhet). Icke desto mindre är PoW och PoS mycket intressanta tillvägagångssätt som BFT-system, och de potentiella tillämpningarna inspirerar säkerligen till utbredd innovation.

Lämna en kommentar