Ett tillförlitligt datorsystem måste kunna fungera även om en eller flera av dess komponenter inte fungerar. En felaktig komponent kan visa ett ofta förbisett beteende:att leverera motstridiga data till olika delar av systemet. Så, vad är problemet med de bysantinska generalerna? Problemet med bysantinska generaler är ett abstrakt uttryck för problemet med att hantera denna typ av misslyckande.
Det bysantinska generalproblemet är ett spelteoretiskt problem som beskriver hur svårt det är för utspridda partier att nå en överenskommelse utan hjälp av en pålitlig central part. Hur kan medlemmar i ett nätverk komma överens om en specifik verklighet när ingen kan verifiera andra medlemmars identiteter?
Spelteori är ett ramverk för att tänka på sociala evenemang med konkurrerande skådespelare. I en strategisk miljö tänker spelteorin upp sociala omständigheter bland konkurrerande deltagare och producerar optimalt beslutsfattande av autonoma och konkurrerande agenter.
De bysantinska generalerna är baserade på en spelteoretisk analogi. Problemet är att flera generaler belägrar Bysans. De har omringat staden, men de måste bestämma när de ska anfalla som grupp. De kommer att vinna om alla generaler attackerar samtidigt; dock kommer de att förlora om de attackerar.
Eftersom alla brev de sänder eller tar emot kunde ha blivit avlyssnade eller bedrägligt skickade av Bysans försvarare, har generalerna inga säkra kommunikationskanaler med varandra. Hur kan generalerna koordinera samtidiga attacker?
Den här artikeln syftar till att förklara vad ett bysantinskt fel i blockchain är och hur man löser problemet med bysantinska generaler.
"The Byzantine Generals Problem", en forskningsartikel av Leslie Lamport, Robert Shostak och Marshall Pease, publicerades 1982. Vikten av detta problem framgår av den inledande sidan, som noterar att National Aeronautics and Space Administration (NASA), Ballistic Missile Defense Systems Command och Army Research Office finansierade alla sin forskning.
Även om problemet med bysantinska generaler hade studerats inom datavetenskap före 1982, var detta ett av de första försöken att översätta det till parallella och föreslagna lösningar. Följande analogi illustrerar de bysantinska generalernas problem. Flera divisioner av den bysantinska armén är stationerade strax utanför en fiendes stad, förberedda för krig. Det enda sättet för olika generaler att ansluta är genom en budbärare. De måste komma överens om en handlingslinje.
Men vi måste anta att vissa generaler, som har för avsikt att hindra lojala generaler från att besluta om en enda handling, är förrädare. För att säkerställa att en liten grupp förrädare inte kan avbryta kommunikationer krävs en algoritm.
För att ta itu med problemet med de bysantinska generalerna behöver lojala generaler ett säkert sätt att komma överens om en plan (känd som konsensus) och genomföra den (känd som samordning). Även om det är en svår uppgift att lösa det bysantinska generalproblemet, förstår vi nu det grundläggande problemet bättre. Det är viktigt att notera att, som exemplet antyder, kan konceptet tillämpas på militär kommunikation.
Det här problemet påverkar dock alla typer av datorsystem, inte bara de som används i militära applikationer. Problemet med bysantinska generaler måste lösas om en spridd grupp av noder (t.ex. datorer eller andra fysiska enheter) behöver uppnå tillförlitlig kommunikation.
Det finns flera anledningar till att ett distribuerat datorsystem kan misslyckas. I det militära scenariot ovan är bysantinska misslyckanden i huvudsak förrädare som försöker avbryta kommunikationen mellan lojala generaler.
Detta kan vara ett programvarufel, ett maskinvarufel eller en skadlig attack när den tillämpas på verkliga datorsystem. För att uttrycka det på ett annat sätt, bysantinska misslyckanden behöver inte alltid vara resultatet av en välkoordinerad insats av en dålig skådespelare. Det kan finnas svårigheter som hindrar noder från att nå konsensus om distribuerade nätverk.
Alla systemfel som uppvisar olika symptom för olika observatörer kallas ett bysantinskt fel. Den innehåller inga begränsningar och antaganden om vilken typ av beteende som en nod kan uppvisa (t.ex. en nod kan generera godtyckliga data samtidigt som den utger sig för att vara en ärlig aktör).
I alla distribuerade datorsystem är bysantinska fel praktiskt taget oundvikliga.
Låt oss föreställa oss att det är ett strömavbrott och att alla noder går offline samtidigt. Nu uppstår frågan om nätverket fortfarande är i drift och kan upprätthålla pålitlig kommunikation? Eller slutar systemet som helhet att fungera eller blir det plötsligt öppet för attacker?
I ett någorlunda säkert nätverk har allt så litet som några offlinenoder ingen märkbar effekt på nätverket. Bysantinsk feltolerans är förmågan att försvara sig mot dessa förhållanden. Nätverk som kan utstå fler bysantinska misslyckanden sägs ha en högre tolerans, vilket innebär att de är säkrare än de som inte kan.
Den faktiska förekomsten och taxonomin för bysantinska fel i olika system är ett stort och utmanande ämne. Det kan dock specificeras på ett sådant sätt att en formell definition av bysantinsk feltolerans uppstår.
Det är värt att notera att bysantinska brister är de allvarligaste och svåraste att rätta till. Bysantinsk feltolerans krävs i kärnkraftverk, flygmotorsystem och i stort sett alla system vars åtgärder är beroende av resultaten från ett stort antal sensorer.
Endast decentraliserade system är mottagliga för det bysantinska generalproblemet, eftersom de saknar en pålitlig informationskälla och inte har något sätt att bekräfta informationen de får från andra nätverksanvändare. I centraliserade system litar man på en myndighet för att sprida korrekt information samtidigt som den förhindrar spridning av felaktig eller bedräglig information över nätverket.
Till exempel, i det traditionella finansiella systemet är banker betrodda för att ge kunderna korrekta saldon och transaktionshistorik. Om en bank försöker lura eller vilseleda sina konsumenter har centralbanken eller regeringen behörighet att återupprätta tron.
De bysantinska generalernas dilemma, som inkonsekvent kräver upprättandet av sanning, löses inte av centraliserade system. Istället väljer de att inte konfrontera problemet alls, utan väljer effektivitet framför pålitlighet. Centraliserade system, å andra sidan, är benägna att korruption av centrala myndigheter.
Problemet med bysantinska generaler exemplifieras av pengar. Hur skulle ett samhälle kunna bygga ett monetärt system som alla medlemmar kan lita på och komma överens om? Samhällen har använt ädelmetaller eller andra sällsynta föremål, såsom snäckor eller glaspärlor, som valuta under större delen av historien. Guld tog upp problemet med de bysantinska generalerna eftersom det var pålitligt och erkänt i decentraliserade system som internationell handel.
Guldets vikt och renhet, å andra sidan, förblev opålitlig tills nu. Guldets misslyckande för att helt ta itu med det bysantinska generalproblemet ledde till att etableringen och utgivningen av pengar togs över av pålitliga centrala organ, främst regeringar. Regeringar monopoliserade myntverk för att ingjuta förtroende för valutans vikt och renhet. Därför löstes inte bysantinska misslyckanden med centraliserade system.
Dessutom har de betrodda centrala myndigheterna för pengar, regeringar, svikit detta förtroende genom att beslagta, förnedra eller modifiera det. För att lösa det bysantinska generalproblemet måste en valuta vara verifierbar, förfalskningsbeständig och opålitlig. Denna prestation uppnåddes inte förrän Bitcoin (BTC) kom.
Problemet kan lösas genom att implementera ett protokoll som använder feltoleranta mekanismer. När man står inför osäkerhet är det bästa sättet att göra val att anta ett förfarande bland generalerna.
Som ett resultat blir det probabilistiskt snarare än deterministiskt eftersom ingenting kan garanteras. Det är just fallet när det finns mindre direkt kommunikation mellan kamrater, och var och en är fristående. Eftersom varje general är på en annan plats, finns det en fysisk separation mellan dem.
Det bysantinska allmänna problemet kan lösas med hjälp av en blockchain. Det handlar om att ge människor ett sätt att kommunicera säkert och säkert i en oförutsägbar värld. I den verkliga världen sker de flesta transaktioner mellan främlingar som inte känner eller litar på varandra.
Varje individ är som en general som väntar på order att attackera eller försvara sin position. Det finns inga mellanhänder som kan medla attacken å dina vägnar; du är helt på egen hand när du fattar ditt beslut.
En blockchain skapar ett lager som kan litas på utan att behöva lita på varje individ. Detta åstadkoms genom att ett nätverk av noder samlas för att komma överens om sanningen innan den spelas in. Om generalen är osäker på innehållet i kommunikationen kan de andra generalerna verifiera det med vad de vet är sant.
När en nod har registrerat den skickas en kopia till alla andra noder i nätverket, vilket gör informationen överflödig. PoW konsensusalgoritmen är utformad för att uppnå detta mål. Dåliga skådespelare kommer fortfarande att försöka spela systemet eftersom informationen inte alltid är korrekt.
Eftersom systemet designades för att användas av allmänheten finns feltoleranta mekanismer och säkerhet på plats i en blockkedja. I det här scenariot krävdes kryptografi för att säkerställa att meddelandena inte kunde ändras.
Systemet tillhandahåller nyckelpar för digital signering av en kommunikation för att verifiera identiteten som bevis på att den kommer från personerna som påstås ha skickat den. När meddelanden har autentiserats, registreras de för transparens och historiskt bevis på ansvarsskyldighet.
När det gäller pengar var Bitcoin den första realiserade lösningen på problemet med bysantinska generaler. Många planer och projekt innan Bitcoin försökte skapa pengar som var oberoende av regeringen, men de misslyckades alla på något sätt.
Bitcoin behöver medel för att hantera ägande och undvika dubbla utgifter som ett monetärt system. Bitcoin använder en blockchain, eller en offentlig, distribuerad reskontra, som lagrar en historik över alla transaktioner för att åstadkomma detta på ett tillförlitligt sätt. Blockkedjan, i analogin med bysantinska generaler, är sanningen som alla parter måste komma överens om.
Om alla noder i Bitcoin-nätverket kunde komma överens om vilka transaktioner som hände när och i vilken ordning, skulle de kunna verifiera Bitcoin-ägandet och skapa ett fungerande, tillitslöst monetärt system utan behov av en centraliserad auktoritet.
Satoshi Nakamoto släppte den första Bitcoin whitepaper i oktober 2008. Även om namnet "Bysantine generals problem" inte används i detta dokument, tillhandahöll Nakamoto faktiskt en lösning som skulle implementeras i januari 2009 med introduktionen av Bitcoin-nätverket.
Satoshi utarbetade ett sätt att använda kryptografisk säkerhet och kryptering med offentlig nyckel för att lösa det bysantinska allmänna problemet i ett digitalt elektroniskt nätverk. För att förhindra datamanipulation använder kryptografisk säkerhet hash, en kodningsprocess. En nätverksanvändares identitet verifieras via kryptering med offentlig nyckel.
En transaktion är säkrad i ett block som är kopplat till andra block genom sitt hashvärde i kryptografisk säkerhet. Alla hashar kan spåras ner till roten av alla hash, vilket är ett initialt block. Blockkedjan är ett system som använder ett Merkle-träd för att verifiera hash som kommer från ett genesisblock.
Varje block i nätverket som kommer från det första blocket, även känt som genesisblocket, är giltigt. Gruvarbetare validerar block, som konkurrerar med andra gruvarbetare för att lösa kryptografiska pussel för att producera block som en del av en PoW-konsensusmetod.
Genom att använda en konsensusmekanism för bevis på arbete, övervann Bitcoin problemet med bysantinska generaler och etablerade en tydlig, objektiv regelbok för blockkedjan. För att lägga till information till blockkedjan, så kallade block, måste en nätverksmedlem publicera bevis på att de lagt mycket kraft på att göra blocket. Detta arbete kommer till en hög kostnad för skaparen, vilket uppmuntrar dem att dela korrekt information.
Det får inte finnas någon oenighet eller manipulering av informationen på Bitcoin-nätverket eftersom reglerna är objektiva. Systemet för att välja vem som kan prägla nya Bitcoin och lagarna som reglerar vilka transaktioner som är giltiga eller ogiltiga är båda målen. Dessutom är det omöjligt att ta bort ett block från blockkedjan efter att det har lagts till, vilket gör Bitcoins historia oföränderlig.
Därför löses problemet med bysantinska generaler av gruvarbetare som liknar generaler i Satoshis version av blockkedjan. Varje nod är ansvarig för att validera transaktioner, som liknar meddelanden som levereras till generalerna. Dåliga aktörer (till exempel hackare) som strävar efter att stjäla meddelanden eller skada nätverket kan betraktas som fienden.
Hackare (d.v.s. mannen-i-mitten) kan inte lätt attackera blockkedjan eftersom meddelanden använder kryptografisk säkerhet. För att förhindra manipulation paketeras meddelandena eller transaktionerna i block och hashas för extra skydd. Satoshi gör saker mer sannolikt genom att sätta gruvarbetare i en tävling för att validera blocken. Detta gör det mer decentraliserat eftersom ingen enskild gruvarbetare kan ta emot alla belöningar genom att monopolisera validering.
Istället måste gruvarbetare tävla om att lösa en gåta genom att använda sin beräkningskraft, känd som hashhastigheten. Ju högre en gruvarbetares hashhastighet, desto mer sannolikt är det att de löser pusslet. När gruvarbetaren som har löst pusslet sänder lösningen till nätverket måste alla andra gruvarbetare validera eller förneka värdet om det är felaktigt. Ett svårighetsmål är ett värde som måste vara lika med eller mindre än det korrekta värdet.
Medlemmar i Bitcoin-nätverket kan alltså komma överens om status för blockkedjan och alla transaktioner i blockkedjan när som helst. Varje nod verifierar om block är giltiga enligt kriteriet om arbetsbevis och om transaktioner är giltiga enligt ytterligare kriterier.
Om en nätverksmedlem försöker sända vilseledande information kommer alla noder på nätverket att upptäcka den som objektivt ogiltig och ignorera den. Det finns inget behov av att lita på andra medlemmar av Bitcoin-nätverket eftersom varje nod kan verifiera all information på nätverket i sig själv, vilket gör Bitcoin till ett tillförlitligt system.
Blockkedjan är också decentraliserad, vilket innebär att systemet inte bör ha en enda felpunkt. Blocken sparas i en distribuerad databas, som replikeras över nätverket. Denna redundans hjälper också till med feltolerans, vilket säkerställer att ingen enskild dator som inte fungerar som den ska kan ta ner hela systemet. Detta är motsvarigheten till att ha många budbärare i fall en blir överfallen av fienden. Meddelandet kommer inte att gå förlorat eftersom det kommer att kopieras av andra budbärare.
PoS är en annan blockchain-konsensusmekanism som försöker lösa problemet med bysantinska generaler. Det lanserades första gången 2012. PoS-baserade nätverk, till skillnad från PoW-baserade nätverk, är inte beroende av brytning av kryptovaluta. Istället utförs en teknik som kallas staking.
Användare (kallade validerare) satsar pengar i detta system. Validatorer som äger fler mynt på en blockchain kan validera fler block och tjäna större belöningar. Användare som försöker validera felaktiga transaktioner riskerar att förlora sina insatta pengar.
Användare kan satsa mynt med vanliga hemdatorer istället för att behöva specialiserade maskiner för gruvdrift i ett PoW-baserat nätverk. Flera PoS-baserade nätverk har skapat sätt att förhindra attacker med dubbla utgifter och andra potentiella säkerhetsbrister orsakade av bysantinska misslyckanden. Till exempel kommer Ethereum 2.0 (Serenity) att använda Casper PoS-algoritmen, som kräver att två tredjedelars majoritet av noderna kommer överens om ett block innan det kan skapas.
Delegerad proof-of-stake är en blockchain-konsensusteknik som fungerar på samma sätt som proof-of-stake och som utvecklades först 2014. Båda kräver att användarna lägger pengar på spel. Endast ett fåtal användare (så kallade delegater) kan validera transaktioner och generera block i DPoS-baserade nätverk.
I allmänhet kan alla användare satsa en blockkedjas mynt för att rösta till stöd för en delegatkandidat. Blockbelöningar delas vanligtvis ut proportionellt mot mängden pengar som satsas i delegatval av valda noder till sina väljare.
Noder kan nå konsensus betydligt snabbare med DPoS än de kan med PoW eller PoS. I stor skala innebär detta att transaktioner kan hanteras betydligt snabbare. Att upprätthålla en hög nivå av bysantinsk feltolerans med DPoS kan bli problematiskt i vissa fall på grund av avvägningen.
Eftersom färre noder är ansvariga för att hålla nätverket säkert är det potentiellt lättare för noder att konspirera mot majoritetens bästa. DPoS-baserade nätverk försöker å andra sidan undvika detta scenario genom att hålla delegatval regelbundet för att säkerställa att delegaterna hålls ansvariga för sina beslut.