DELA

Vad är The Byzantine Generals’ Problem? I det här blogginlägget går vi genom vad ‘The Byzantine Generals’s Problem är för något. På svenska översätts det till det ‘Byzantinska generalsproblemet’ och genom att förstå detta, kommer du att snabbare förstå bitcoin, blockchain och andra blockkedjor.

Konsensusalgoritm

När du hört folk prata om bitcoin eller kanske läst om det på egen hand har du troligen stött på orden consensus algorithm. I Bitcoins fall heter konsensusalgoritmen(svensk översättning) Proof-of-Work och är den funktion som gör att vi kan nå konsensus mellan deltagare i bitcoinnätverket. Nu ska vi ta det hela från börja så att vi verkligen förstår hur det går till och det gör vi genom att förstå The Byzantine Generals’ Problem.

Låt oss tänka oss att vi spolar tillbaka tiden till långt innan vi levde i det utvecklare och moderna samhälle vi lever i idag. Det fanns då inga datorer, inga mobiler, inget internet, ja inga kommunikationsmedel överhuvudtaget. Vi har ett problem/en utmaning. Den går ut på att vi ska attackera en fiende som bor i en borg. För att göra detta har vi flera team på vår sida, närmare bestämt 12 teams. Fienden är stark och vi måste använda alla 12 teams på samma gång för att vinna mot fienden.

Bilden har hämtats från ett blogginlägg på medium.com

Problem här är bara att våra 12 team kan inte ringa eller sms:a varandra och em står på olika sidor om borgen långt ifrån varandra. Om alla förutom en attackerar kommer vi att förlora. Det enda sättet för oss att vinna är att få alla att attackera samtidigt. Hur gör vi detta? Någon kanske fegar ur. En annan kanske tar fel på tiden och en tredje kanske avviker av taktiska skäl eller någon annan anledning.

Hur kan problemet lösas?

Varje teams general måste på något sätt kunna informera de andra generalerna i de övriga teamsen. För att göra detta, vid denna tidpunkt i historien, skickar de riddare mellan varandra. Riddarna tar med sig meddelanden där generalerna diskuterar när de ska attackera. Exempelvis kan general 1 skicka en riddare med meddelandet ”Vi vill att alla attackerar på tisdag, kan vi räkna med att alla attackerar samtidigt?”. När general 2 tar emot meddelandet skickar han vidare ett meddelande likt ”Jag och mitt team kan inte attackera på tisdag, men vi kanske kan på lördag, hur ser det ut för er? och så vidare…

Problemet med osanningar.

Vi har ytterliggare ett problem vilket har att göra med det kan förekomma vilseledande information. Exempelvis skulle en riddare som ska leverera ett meddelande till de övriga generalerna bli tillfångatagen av fienden och hotad/tvingad att skicka vidare ett falskt meddelande. På så vis skulle några teams kunna tro att alla är med på en attack fast de inte är de. I det fallet skulle de som attackerar dö av fienden då fienden alltid vinnare om inte alla teams attackerar samtidigt.

Här uppstår frågan. Hur gör vi för att lösa det här problemet? Så hur kan vi skapa ett tillitslöst system som garanterar att vi vinner när vi attakerar fienden? Det är detta som kallas The Byzantine Generals Problem.

Vad har Byzantine Generals problem med bitcoin att göra?

I ett distribuerat nätverk kan vi tänka oss att istället för att vi har 12 generaler som ska attackera en borg har vi massor med noder i ett nätverk. Alla dessa noder har en gemensam och platt hierarisk ordning – med andra ord – alla har lika mycket makt och påverkan att bestämma i nätverket. Med andra ord, i ett nätverk med väldigt många noder, har alla lika lite rätt att bestämma. Här uppstår utmaningen att få med sig alla deltagare, dvs alla noder, utan att information blir felaktig eller att det uppstår korruption. Hur gör vi det? När man lyckas med detta, kallas det att nå konsensus.

Mining, Proof of Work

För att lösa generalens problem har man i bitcoinnätverket infört en såkallad konsensusalgoritm. Den kallas Proof Of Work. Denna funktion är till för att skapa konsensus mellan alla generaler (noder) i nätverket. Detta görs genom att en ”miner” i nätverket betalar mycket pengar i elkostnader i utbyte mot att få bitcoins. Om minern missköter sig eller skapar felaktig information på något sätt. Med andra ord om en miner inte sköter sitt jobb, ja då får den inte sin utbetalning av bitcoin och den får dessutom betalar för den el den förbrukat. Man har helt enkelt skapat ett incitament för miners(noder, generalen) att sköta sig i nätverket. En miner betalar alltså höga elkostander för att få vara med och bara om den sköter sig får den betalt i bitcoin.

Ett exempel med ICA-butiker och lösgodis

Vi tar ett till exempel för att förstå det hela lite bättre. Tänk dig att alla ICA-buttiker i hela Stockholm vill höja priset på lösgodis. Om alla förutom en gör detta samtidigt, kommer kunderna att börja gå till den som inte har höjt. Här har vi samma dilemma. Alla måste höja priset samtidigt, annars kommer de som höjjer förlora kunder på höjningen. Hur löser vi detta? Ja, ICA buttiker i Stockholm skulle nog kunna komma överens på något sätt. Låt oss gissa att det finns 100 buttiker. Varje buttik har en chef (general). Cheferna har i sin tur en chef för varje stadsdel. Stadsdelscheferna är totalt 5 st. Dessa 5 chefer har därefter en VD över ICA-koncernen. VD:n har bestämt att ingen får ha lägre pris på lösgodis än 10 kr / kg. Ja då blir det så, men tänker vi oss en annan situation. Där vi har alla matvarubutiker i hela världen. Och där det inte finns några chefer och inga stadsdelschefer och ingen VD. Hur löser vi problemet med att få alla matvarubutiker att höja priset samtidigt? Bildresultat för ICA

 

Kopplingen mellan Byzantine och Bitcoin/blockchain

Så vad har Byzantine med Bitcoin och blockchain att göra kanske du fortfarande funderar över? Jo det är nämligen så att när vi bygger blockchaindatorer som är ämnade för att fungera som ett system som ingen centraliserade enhet äger. Ja då måste vi givetvis lösa problemet som generalerna stod inför och som ICA buttikerna stod inför. Det är precis detta som Bitcoin gör. Detta problem hade aldrig någonsin tidigare lösts men Satoshi Nakamota löste alltså det svåra problemet. När ett system har löst detta problem säger man att systemet är Byzantine Fault Tolerant, dvs alla generaler och ICA buttiker kan attackera / höja priset samtidigt utan att någon riskerar att avstå och därmed få alla andra att förlora. Om du är intresserad av att läsa hur detta fungerar rekommenderar jag dig att förstå hur mining och proof of work konsensusalgoritmer fungerar. Det kan du läsa mer om här!

Mängder med blockchainprojekt

Idag investerar många storföretag runt om i världen i blockchainprojekt. Om man skulle rada upp dem blir listan oerhört lång, Accenture, Google, IBM, NASDAQ, Deloitte, Bank Of America, Alibaba, Tencent, Goldman Sachs, JP Morgan, Microsoft med många fler. Den totala summan pengar som investerar är så stor att det är svårt att förstå. Samtidigt haglar patentansökningar in från alla storbolag som jobbar med detta. Bank of America leder patentansökningsligan just nu med över 47 redan godkända patent.

Men vad händer när ett storföretag skapar en blockkedja lik bitcoins blockkedja, men som man samtidigt har ansökt patent om, paketerat fint, centraliserat och satt en subscription business model ovanpå? Jo, det som händer är främst två saker. Det första är systemet inte längre är Byzantine Fault Tolerant. Systemet är nu mer högst centraliserat och styrs av några få människor med en hel värld som målgrupp. Det är förstås ett oerhört gynsamt läge för den som lyckas med detta och det är också detta som är anledningen till att så många investerar i blockchainprojekt just nu. Det vi ser runt om i världen är helt enkelt en gigantisk jakt på att skapa de bästa lösningarna för att sedan kunna kapitalisera på dem. Det andra som sker är att man kan uppnå mycket snabbare, effektivare och mer lättstyrda system än vad blockkedjor med som är byzantine fault toleranta hittills har visat sig vara. Du som läser det här har säkert läst om den höga elförbrukningen för bitcoin, den långsamma transaktionshastigheten och uppdelningen av bland människor som vill driva utvecklingen av exmepelvis bitcoin frammåt.

Blockchain utan byzantine fault tolerance?

Dessa tre problem undviker man när man centraliserar en blockkedja. Men frågan är vad om är bäst? Att gå miste om att systemet är byzantine fault tolerant eller att systemet är snabbare just nu? Kommer vi att kunna utveckla energieffektiva, snabba system också är byzantine fault toleranta? Eller kommer det aldrig att gå? Den verkliga innovationen i en blockkedja är att man löste generalens problem. Nu när vi ser många som försöker göra liknande lösningar, så ser vi också att problemet förblir olöst, så är det verkligen en innovation? Måste en blockkedja vara byzantine fault tolerant? Detta är frågor vi alla behöver fundera över i jakten på nästa generations lösningar med blockkedjor.

Detta är definitivt ingenting som är lätt att förstå när man läser det för första gången. Men ju mer man läser och lyssnar om det och ju mer man börjar förstå, desto mer intressant blir det. Här nedan följer några videos av ett gäng mycket duktiga personer som förklarar Byzantine Generals Problem.

Videos

Först ut har vi Ivan Liljekvist, känd som Ivan On Tech på youtube. Ivan är Svensk och mycket duktig på att med entusiasm berätta och förklara hur blockchain fungerar. Detta klipp är 24 minuter långt

 

Andra video som vi valt att ta med här är med ingen mindre än Andreas Antonopoulos. Andreas är oerhört duktig och kunnig om bitcoin och blockchain. Han går in på djupet och förklarar bitcoins konsensusalgoritm proof of work.

LÄMNA ETT SVAR

Lämna en kommentar
Ange ditt namn här