Hjem
Artikler
Forklaring af byzantinsk fejltolerance

Forklaring af byzantinsk fejltolerance

Avanceret
Offentliggjort Dec 6, 2018Opdateret Aug 17, 2023
5m

Siden opstarten af Bitcoin i 2008, som et elektronisk peer to peer-kontantsystem, blev der oprettet mange andre kryptovalutaer, hver med en bestemt mekanisme. Men én ting, som næsten alle kryptovalutaer har til fælles, er blockchainen som kerneelementet i deres arkitektur.

Med få undtagelser er blockchains bevidst designet til at blive decentraliseret og fungere som en digital ledger, der vedligeholdes af et distribueret netværk af computer-noder. Af denne grund tillod blockchain-teknologi oprettelsen af trustless økonomiske systemer, hvor gennemsigtige og pålidelige finansielle transaktioner kunne udføres uden behov for mellemmænd. Kryptovalutaer bliver vedtaget som et levedygtigt alternativ til traditionelle bank- og betalingssystemer, som er stærkt afhængige af tillid.

Ligesom de fleste distribuerede computersystemer skal deltagerne i et kryptovalutanetværk blive enige om blockchainens aktuelle tilstand, og det er det, vi kalder konsensusopnåelse. Det er dog langt fra en let opgave at nå til konsensus om distribuerede netværk på en sikker og effektiv måde.

Så hvordan kan et distribueret netværk af computer-noder blive enige om en beslutning, hvis nogle af noderne sandsynligvis vil mislykkes eller handle uærligt? Dette er det grundlæggende spørgsmål om de såkaldte byzantinske generalers problem, som affødte begrebet byzantinsk fejltolerance.


Hvad er de byzantinske generalers problem?

Kort sagt blev de byzantinske generalers problem udtænkt i 1982 som et logisk dilemma, der illustrerer, hvordan en gruppe byzantinske generaler kan have kommunikationsproblemer, når de forsøger at blive enige om deres næste træk.

Dilemmaet forudsætter, at hver general har sin egen hær, og at hver gruppe befinder sig forskellige steder i den by, de har til hensigt at angribe. Generalerne skal blive enige om enten at angribe eller trække sig tilbage. Det er ligegyldigt, om de angriber eller trækker sig tilbage, så længe alle generaler når til konsensus, dvs. er enige om en fælles beslutning for at udføre den i koordination.

Derfor kan vi overveje følgende krav:

  • Hver general skal beslutte: angreb eller tilbagetrækning (ja eller nej);

  • Når beslutningen er truffet, kan den ikke ændres;

  • Alle generaler skal være enige om den samme beslutning og udføre den på en synkroniseret måde.

De ovennævnte kommunikationsproblemer er relateret til det faktum, at en general kun er i stand til at kommunikere med en anden gennem meddelelser, som videresendes af en kurer. Derfor er den centrale udfordring ved de byzantinske generalers problem, at meddelelserne på én eller anden måde kan blive forsinket, ødelagt eller tabt.

Hertil kommer, at selvom en meddelelse leveres med succes, kan én eller flere generaler vælge (uanset årsag) at handle ondsindet og sende en svigagtig besked for at forvirre de andre generaler, hvilket fører til en total fiasko.

Hvis vi anvender dilemmaet i forbindelse med blockchains, repræsenterer hver general en netværksnode, og noderne skal nå til konsensus om systemets aktuelle tilstand. Sagt på en anden måde skal flertallet af deltagerne i et distribueret netværk være enige og udføre den samme handling for at undgå fuldstændig fiasko.

Derfor er den eneste måde til at opnå konsensus i disse typer distribuerede systemer ved at have mindst to tredjedele eller mere af pålidelige og ærlige netværksnoder. Dette betyder, at hvis størstedelen af netværket beslutter at handle ondsindet, er systemet modtageligt for fejl og angreb (såsom 51 %-angrebet).


Byzantinsk fejltolerance (BFT)

Kort sagt er byzantinsk fejltolerance (BFT) egenskaben ved et system, der er i stand til at modstå kategorier af fejl, der stammer fra de byzantinske generalers problem. Dette betyder, at et BFT-system er i stand til at fortsætte med at fungere, selvom nogle af noderne fejler eller handler ondsindet. 

Der er mere end én mulig løsning på de byzantinske generalers problem og derfor flere måder til at opbygge et BFT-system. Ligeledes er der forskellige tilgange til en blockchain for at opnå byzantinsk fejltolerance, og dette fører os til de såkaldte konsensusalgoritmer.


Blockchain-konsensusalgoritmer

Vi kan definere en konsensusalgoritme som den mekanisme, hvorigennem et blockchain-netværk opnår konsensus. De mest almindelige implementeringer er Proof of Work (PoW) og Proof of Stake (PoS). Men lad os tage Bitcoin som et eksempel.

Mens Bitcoin-protokollen foreskriver systemets primære regler, er PoW-konsensusalgoritmen det, der definerer, hvordan disse regler vil blive fulgt for at nå til enighed (f.eks. under verifikation og validering af transaktioner).

Selvom begrebet Proof of Work er ældre end kryptovalutaer, udviklede Satoshi Nakamoto en modificeret version af det som en algoritme, der muliggjorde oprettelsen af Bitcoin som et BFT-system.

Bemærk, at PoW-algoritmen ikke er 100 % tolerant over for de byzantinske fejl, men på grund af den omkostningsintensive mining-proces og de underliggende kryptografiske teknikker har PoW vist sig at være én af de mest sikre og pålidelige implementeringer for blockchain-netværk. I den forstand betragtes Proof of Work-konsensusalgoritmen, designet af Satoshi Nakamoto, af mange som én af de mest geniale løsninger på de byzantinske fejl.


Sammenfatning

De byzantinske generalers problem er et spændende dilemma, der førte frem til BFT-systemerne, som i vid udstrækning anvendes i forskellige scenarier. Ud over blockchain-industrien inkluderer et par use cases fra BFT-systemer luftfarts-, rum- og atomkraftsbranchen.

Inden for kryptovalutakonteksten er det afgørende for ethvert blockchain-økosystem at have en effektiv netværkskommunikation sammen med en god konsensusmekanisme. Sikring af disse systemer er en løbende indsats, og de eksisterende konsensusalgoritmer mangler endnu at overvinde nogle få begrænsninger (såsom skalerbarhed). Ikke desto mindre er PoW og PoS meget interessante tilgange som BFT-systemer, og de potentielle applikationer inspirerer bestemt til udbredt innovation.