Sedan starten av Bitcoin 2008, ett peer-to-peer- och elektroniskt kontantsystem, skapades många andra kryptovalutor, var och en med sin egen mekanism. Men en sak som nästan alla kryptovalutor har gemensamt är blockkedjan, som grundelementet i deras arkitektur.
Med några få undantag är blockkedjor avsiktligt utformade för att vara decentraliserade, och fungerar som en digital huvudbok som underhålls av ett distribuerat nätverk av datornoder. Av denna anledning möjliggjorde blockkedjetekniken skapandet av tillförlitliga ekonomiska system, där transparenta och tillförlitliga finansiella transaktioner kunde utföras utan behov av mellanhänder. Kryptovalutor antas som ett seriöst alternativ till traditionella bank- och betalningssystem, som är starkt beroende av förtroende.
Precis som de flesta distribuerade datorsystem måste deltagarna i ett kryptovalutanätverk regelbundet komma överens om blockkedjans nuvarande tillstånd, och det är detta vi kallar lyckad konsensus. Att nå konsensus om 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 datornoder komma överens om ett beslut om några av noderna sannolikt kommer att misslyckas eller att agera oärligt? Detta är den grundläggande frågan om de så kallade bysantinska generalernas problem, som introducerade begreppet bysantinsk feltolerans.
Vad är de bysantinska generalernas problem?
Kortfattat uppfattades de bysantinska generalernas problem 1982, som ett logiskt dilemma som illustrerar hur en grupp bysantinska generaler kan få kommunikationsproblem när de försöker komma överens om nästa drag.
Dilemmat förutsätter att varje general har sin egen armé och att varje grupp befinner sig på olika platser runt om i staden som de tänker attackera. Generalerna måste komma överens om att antingen attackera eller dra sig tillbaka. Det spelar ingen roll om de attackerar eller drar sig tillbaka, så länge alla generaler når konsensus, det vill säga är överens om ett gemensamt beslut, för att genomföra det samordnat.
Därför kan vi överväga följande krav:
Varje general måste bestämma detta: attack eller reträtt (ja eller nej).
Efter att beslutet har fattats kan det inte ändras.
Alla generaler måste komma överens om samma beslut och genomföra det på ett synkroniserat sätt.
De ovannämnda kommunikationsproblemen är relaterade till det faktum att en general bara kan kommunicera med en annan via meddelanden som skickas av en kurir. Följaktligen är den centrala utmaningen för de bysantinska generalernas problem att meddelandena på något sätt kan försenas, förstöras eller tappas bort.
Och även om bara ett meddelande lyckats levereras, kan en eller flera generaler välja (oavsett anledning) att agera skadligt och skicka ett falskt meddelande för att förvirra de andra generalerna, vilket leder till ett totalt misslyckande.
Om vi tillämpar dilemmat i blockkedjornas sammanhang representerar varje general en nätverksnod och noderna måste nå konsensus om systemets nuvarande tillstånd. Med andra ord 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.
Därför är det enda sättet att uppnå konsensus i dessa typer av distribuerade system genom att ha minst 2/3 eller mer av tillförlitliga och ärliga nätverksnoder. Detta innebär att om majoriteten av nätverket bestämmer sig för att agera skadligt är systemet mottagligt för fel och attacker (till exempel 51 %-attacken).
Bysantinsk feltolerans (BFT)
Kort sagt är bysantinsk feltolerans (BFT) egenskapen hos ett system som kan motstå kategorierna av misslyckanden som härrör från de bysantinska generalernas problem. Detta innebär att ett BFT-system kan fortsätta fungera även om några av noderna misslyckas eller agerar oärligt.
Det finns mer än en möjlig lösning på de bysantinska generalernas problem, och därför flera sätt att bygga upp ett BFT-system. På samma sätt finns det olika tillvägagångssätt för en blockkedja att uppnå bysantinsk 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 arbetsbevis och insatsbevis. Men låt oss ta Bitcoin-fallet som ett exempel.
Även om Bitcoin-protokollet föreskriver systemets primära regler, är arbetsbevis-konsensusalgoritmen det som definierar hur dessa regler kommer att följas för att nå konsensus (till exempel under verifieringen och valideringen av transaktioner).
Även om konceptet arbetsbevis är äldre än kryptovalutor, utvecklade Satoshi Nakamoto en modifierad version av det som en algoritm, vilket möjliggjorde skapandet av Bitcoin som ett BFT-system.
Observera att arbetsbevis-algoritmen inte är 100 % tolerant mot de bysantinska felen, men tack vare den kostnadsintensiva utvinningsprocessen och de underliggande kryptografiska teknikerna har arbetsbevis visat sig vara en av de säkraste och mest pålitliga implementeringarna för blockkedjenätverk. I den meningen anses konsensusalgoritmen arbetsbevis, designad av Satoshi Nakamoto, av många som en av de mest geniala lösningarna på de bysantinska felen.
Sammanfattningsvis
De bysantinska generalernas problem är ett spännande dilemma som så småningom gav upphov till BFT-systemen, vilka tillämpas i stor utsträckning i olika scenarier. Utöver blockkedjebranschen inkluderar några användningsfall av BFT-systemen flyg-, rymd- och kärnkraftsbranscherna.
I kryptovalutakontexten är det viktigt att ha en effektiv nätverkskommunikation tillsammans med en bra konsensusmekanism för alla blockkedjors ekosystem. Att säkra dessa system är ett ständigt pågående arbete, och de befintliga konsensusalgoritmerna har ännu inte övervunnit några begränsningar (till exempel skalbarhet). Ändå är arbetsbevis och insatsbevis mycket intressanta tillvägagångssätt som BFT-system, och de potentiella tillämpningarna inspirerar verkligen till mer innovation.