Hvordan løser blockchain det byzantinske generalproblem?

Problem med byzantinske generaler forklaret

Et pålideligt computersystem skal kunne fungere, selvom en eller flere af dets komponenter svigter. En defekt komponent kan vise en ofte overset adfærd:levering af modstridende data til forskellige dele af systemet. Så hvad er de byzantinske generalers problem? Det byzantinske generalproblem er et abstrakt udtryk for problemet med at håndtere denne type fiasko.

Det byzantinske generalproblem er et spilteoretisk problem, der beskriver, hvor svært det er for spredte parter at nå til enighed uden hjælp fra en betroet central part. Hvordan kan medlemmer af et netværk blive enige om en bestemt virkelighed, når ingen kan verificere andre medlemmers identitet?

Spilteori er en ramme for at tænke på sociale begivenheder med konkurrerende skuespillere. I et strategisk miljø opfatter spilteorien sociale forhold blandt konkurrerende deltagere og producerer optimal beslutningstagning af autonome og konkurrerende agenter.

De byzantinske generaler er baseret på en spilteori-analogi. Problemet er, at flere generaler belejrer Byzans. De har omringet byen, men de skal beslutte, hvornår de vil angribe som en gruppe. De vil vinde, hvis alle generaler angriber samtidigt; dog vil de tabe, hvis de angriber.

Fordi ethvert brev, de sender eller modtager, kunne være blevet opsnappet eller sendt vildledende af Byzans forsvarere, har generalerne ingen sikre kommunikationskanaler med hinanden. Hvordan kan generalerne koordinere samtidige angreb?

Denne artikel har til formål at forklare, hvad en byzantinsk fejl i blockchain er, og hvordan man løser det byzantinske generalproblem.

Forskningspapiret

"The Byzantine Generals Problem", en forskningsartikel af Leslie Lamport, Robert Shostak og Marshall Pease, blev publiceret i 1982. Betydningen af ​​dette problem fremgår af åbningssiden, som bemærker, at National Aeronautics and Space Administration (NASA), Ballistic Missile Defense Systems Command og Army Research Office finansierede alle deres forskning.

Selvom det byzantinske generalproblem var blevet undersøgt inden for datalogi før 1982, var dette et af de første forsøg på at omsætte det til parallelle og foreslåede løsninger. Den følgende analogi illustrerer det byzantinske generalproblem. Flere divisioner af den byzantinske hær er stationeret lige uden for en fjendes by, forberedt på krig. Den eneste måde for forskellige generaler at forbinde er gennem en messenger. De skal blive enige om en fremgangsmåde.

Men vi må antage, at visse generaler, der har til hensigt at forhindre loyale generaler fra at beslutte sig for en enkelt handling, er forrædere. For at sikre, at en lille gruppe forrædere ikke kan afbryde kommunikationen, kræves der en algoritme.

For at løse problemet med de byzantinske generaler har loyale generaler brug for et sikkert middel til at blive enige om en plan (kendt som konsensus) og udføre den (kendt som koordinering). Selvom det er en vanskelig opgave at løse det byzantinske generalproblem, forstår vi nu bedre det grundlæggende problem. Det er vigtigt at bemærke, at konceptet, som eksemplet antyder, kan anvendes på militær kommunikation.

Men dette problem påvirker alle typer computersystemer, ikke kun dem, der bruges i militære applikationer. Det byzantinske generalproblem skal løses, hvis en spredt gruppe af noder (f.eks. computere eller andre fysiske enheder) skal opnå pålidelig kommunikation.

Forstå byzantinsk fejltolerance (BFT)

Der er flere grunde til, at et distribueret computersystem kan fejle. I det militære scenarie ovenfor er byzantinske fiaskoer i det væsentlige forrædere, der forsøger at afbryde kommunikationen mellem loyale generaler.

Dette kan være en softwarefejl, en hardwarefejl eller et ondsindet angreb, når det anvendes på computersystemer i den virkelige verden. For at sige det på en anden måde behøver byzantinske fiaskoer ikke altid at være resultatet af en velkoordineret indsats fra en dårlig skuespiller. Der kan være vanskeligheder, der forhindrer noder i at opnå konsensus om distribuerede netværk.

Enhver systemfejl, der udviser forskellige symptomer for forskellige observatører, omtales som en byzantinsk fejl. Den indeholder ingen begrænsninger og antagelser om den type adfærd, som en node kan udvise (f.eks. kan en node generere vilkårlige data, mens den udgiver sig for at være en ærlig aktør).

I ethvert distribueret computersystem er byzantinske fejl praktisk talt uundgåelige.

Lad os forestille os, at der er en strømafbrydelse, og alle noderne går offline samtidigt. Nu opstår spørgsmålet, om netværket stadig er operationelt og i stand til at opretholde pålidelig kommunikation? Eller holder systemet som helhed op med at fungere eller bliver det pludselig åbent for angreb?

I et rimeligt sikkert netværk har alt så lille som et par offline noder ingen mærkbar effekt på netværket. Byzantinsk fejltolerance er evnen til at forsvare sig mod disse forhold. Netværk, der kan tåle flere byzantinske fejl, siges at have en højere tolerance, hvilket antyder, at de er mere sikre end dem, der ikke kan.

Den faktiske forekomst og taksonomi af byzantinske fejl i forskellige systemer er et stort og udfordrende emne. Det kan dog specificeres på en sådan måde, at der opstår en formel definition af byzantinsk fejltolerance.

Det er værd at bemærke, at byzantinske fejl er de mest alvorlige og svære at rette. Byzantinsk fejltolerance er påkrævet i atomkraftværker, luftfartsmotorsystemer og stort set alle systemer, hvis handlinger er afhængige af resultaterne af et stort antal sensorer.

Problem med byzantinske generaler i et distribueret system

Kun decentraliserede systemer er modtagelige for det byzantinske generalproblem, da de mangler en pålidelig informationskilde og ikke har mulighed for at bekræfte den information, de får fra andre netværksbrugere. I centraliserede systemer er en myndighed betroet til at sprede nøjagtige oplysninger og samtidig forhindre spredning af fejlagtige eller svigagtige oplysninger på tværs af netværket.

For eksempel, i det traditionelle finansielle system er banker betroet til at give kunderne nøjagtige saldi og transaktionshistorik. Hvis en bank forsøger at bedrage eller vildlede sine forbrugere, er centralbanken eller regeringen bemyndiget til at genoprette troen.

Det byzantinske generals dilemma, som inkonsekvent nødvendiggør etableringen af ​​sandhed, løses ikke af centraliserede systemer. I stedet vælger de slet ikke at konfrontere problemet og vælger effektivitet frem for troværdighed. Centraliserede systemer er på den anden side tilbøjelige til korruption af centrale myndigheder.

Eksempel på byzantinske generalers problem

Det byzantinske generalproblem er eksemplificeret ved penge. Hvordan kunne et samfund opbygge et pengesystem, som alle medlemmer kan stole på og blive enige om? Samfund har brugt ædle metaller eller andre sjældne genstande, såsom skaller eller glasperler, som valuta i det meste af historien. Guld tog fat på det byzantinske generalproblem, fordi det var tillid til og anerkendt på tværs af decentraliserede systemer som international handel.

Gulds vægt og renhed forblev på den anden side upålidelig indtil nu. Guldets manglende evne til fuldstændigt at løse det byzantinske generalproblem førte til, at etableringen og udstedelsen af ​​penge blev overtaget af betroede centrale organer, hovedsageligt regeringer. Regeringer monopoliserede møntsteder for at indgyde tillid til valutaens vægt og renhed. Derfor blev byzantinsk fejl ikke løst af centraliserede systemer.

Desuden har de betroede centrale myndigheder for penge, regeringer, forrådt denne tillid ved at beslaglægge, nedværdige eller ændre den. For at løse det byzantinske generalproblem skal en valuta være verificerbar, forfalskningsbestandig og utroværdig. Denne præstation blev ikke opnået før fremkomsten af ​​Bitcoin (BTC).

Hvordan løser du problemet med byzantinske generaler?

Problemet kan løses ved at implementere en protokol, der anvender fejltolerante mekanismer. Når man står over for usikkerhed, er det at vedtage en procedure blandt generalerne den bedste metode til at træffe valg.

Som et resultat bliver det probabilistisk snarere end deterministisk, fordi intet kan garanteres. Det er netop tilfældet, når der er mindre direkte kommunikation mellem jævnaldrende, og hver enkelt er selvstændig. Fordi hver general er et andet sted, er der en fysisk adskillelse mellem dem.

Blockchain:Løsningen på det byzantinske generelle problem

Det byzantinske generelle problem kan løses ved hjælp af en blockchain. Det handler om at give folk en måde at kommunikere sikkert og sikkert i en uforudsigelig verden. I den faktiske verden sker de fleste transaktioner mellem fremmede, som ikke kender eller stoler på hinanden.

Hvert individ er som en general, der venter på ordre om at angribe eller forsvare deres position. Der er ingen mellemmænd til at voldgifte angrebet på dine vegne; du er helt på egen hånd med at træffe din beslutning.

En blockchain skaber et lag, som man kan stole på, uden at man behøver at stole på hver enkelt. Dette opnås ved, at et netværk af noder samles for at blive enige om sandheden, før den optages. Hvis generalen er usikker på indholdet af kommunikationen, kan de andre generaler bekræfte det ved at bruge det, de ved er sandt.

Når én node har optaget den, sendes en kopi til alle andre noder i netværket, hvilket gør informationen overflødig. PoW-konsensusalgoritmen er designet til at nå dette mål. Dårlige skuespillere vil stadig forsøge at spille systemet, fordi oplysningerne ikke altid er nøjagtige.

Da systemet blev designet til at blive brugt af den brede offentlighed, er fejltolerante mekanismer og sikkerhed på plads i en blockchain. I dette scenarie var kryptografi påkrævet for at sikre, at meddelelserne ikke kunne ændres.

Systemet leverer nøglepar til digital signering af en kommunikation for at bekræfte identiteten som bevis på, at den kommer fra de personer, der påstås at have sendt den. Når meddelelser er blevet godkendt, registreres de for gennemsigtighed og historisk bevis for ansvarlighed.

Hvordan løser Bitcoin det byzantinske generalproblem?

Med hensyn til penge var Bitcoin den første realiserede løsning på det byzantinske generalproblem. Mange planer og projekter før Bitcoin forsøgte at skabe penge, der var uafhængige af regeringen, men de mislykkedes alle på en eller anden måde.

Bitcoin har brug for midlerne til at håndtere ejerskab og undgå dobbeltforbrug som et pengesystem. Bitcoin anvender en blockchain eller en offentlig, distribueret hovedbog, der gemmer en historik over alle transaktioner for at opnå dette på en tillidsfri måde. Blockchain, i den byzantinske general-analogi, er sandheden, som alle parter skal være enige om.

Hvis alle noderne i Bitcoin-netværket kunne blive enige om, hvilke transaktioner der skete hvornår og i hvilken rækkefølge, kunne de verificere Bitcoin-ejerskab og skabe et fungerende, tillidsløst pengesystem uden behov for en centraliseret autoritet.

Proof-of-Work (PoW) og det byzantinske generalproblem

Satoshi Nakamoto udgav den første Bitcoin whitepaper i oktober 2008. Selvom navnet "Byzantine generals problem" ikke bruges i dette dokument, leverede Nakamoto effektivt en løsning, der ville blive implementeret i januar 2009 med introduktionen af Bitcoin-netværket.

Satoshi udtænkte et middel til at bruge kryptografisk sikkerhed og offentlig nøglekryptering til at løse det byzantinske generelle problem i et digitalt elektronisk netværk. For at forhindre datamanipulation bruger kryptografisk sikkerhed hashing, en kodningsproces. En netværksbrugers identitet verificeres via offentlig nøglekryptering.

En transaktion er sikret i en blok, der er forbundet med andre blokke ved sin hashværdi i kryptografisk sikkerhed. Alle hashes kan spores ned til roden af ​​alle hashes, som er en indledende blok. Blockchain er et system, der bruger et Merkle-træ til at verificere hash, der kommer fra en genesis-blok.

Hver blok i netværket, der kommer fra den første blok, også kendt som genesis-blokken, er gyldig. Minearbejdere validerer blokke, som konkurrerer med andre minearbejdere om at løse kryptografiske gåder for at producere blokke som en del af en PoW-konsensusmetode.

Ved at anvende en konsensusmekanisme for bevis-på-arbejde overvandt Bitcoin det byzantinske generalproblem og etablerede en klar, objektiv regelbog for blockchain. For at tilføje information til blockchainen, kaldet blokke, skal et netværksmedlem offentliggøre bevis for, at de har lagt en stor indsats i at lave blokeringen. Dette arbejde har en høj pris for skaberen, hvilket tilskynder dem til at dele nøjagtige oplysninger.

Der må ikke være nogen uenighed eller manipulation med oplysningerne på Bitcoin-netværket, fordi reglerne er objektive. Systemet til at vælge, hvem der kan præge nye Bitcoin og lovene, der regulerer, hvilke transaktioner der er gyldige eller ugyldige, er begge formål. Desuden er det umuligt at fjerne en blok fra blockchain, efter at den er blevet tilføjet, hvilket gør Bitcoins historie uforanderlig.

Derfor er det byzantinske generalproblem løst af minearbejdere, der ligner generaler i Satoshis version af blockchain. Hver node er ansvarlig for at validere transaktioner, som ligner meddelelser leveret til generalerne. Dårlige skuespillere (f.eks. hackere), der har til formål at stjæle beskeder eller skade netværket, kan betragtes som fjenden.

Hackere (dvs. manden-i-midten) kan ikke uden videre angribe blockchainen, fordi meddelelser bruger kryptografisk sikkerhed. For at forhindre manipulation er meddelelserne eller transaktionerne bundtet i blokke og hashed for ekstra beskyttelse. Satoshi gør tingene mere sandsynlige ved at sætte minearbejdere i en konkurrence for at validere blokkene. Dette gør det mere decentraliseret, fordi ingen enkelt minearbejder kan modtage alle belønningerne ved at monopolisere validering.

I stedet skal minearbejdere konkurrere om at løse en gåde ved at bruge deres beregningskraft, kendt som hash-hastigheden. Jo højere en minearbejders hash-rate, jo større sandsynlighed er der for, at de løser gåden. Når minearbejderen, der har løst gåden, udsender løsningen til netværket, skal alle andre minearbejdere validere eller afvise værdien, hvis den er fejlagtig. Et sværhedsgradsmål er en værdi, der skal være lig med eller mindre end den korrekte værdi.

Medlemmer af Bitcoin-netværket kan således til enhver tid blive enige om status for blockchain og alle transaktioner i blockchain. Hver node verificerer, om blokke er gyldige i henhold til kriteriet om bevis på arbejde, og om transaktioner er gyldige i henhold til yderligere kriterier.

Hvis et netværksmedlem forsøger at udsende vildledende information, vil alle noder på netværket opdage det som objektivt ugyldigt og ignorere det. Der er ingen grund til at stole på andre medlemmer af Bitcoin-netværket, fordi hver node kan verificere alle informationer på netværket i sig selv, hvilket gør Bitcoin til et tillidsløst system.

Blockkæden er også decentraliseret, hvilket betyder, at systemet ikke bør have et enkelt fejlpunkt. Blokkene gemmes i en distribueret database, som replikeres på tværs af netværket. Denne redundans hjælper også med fejltolerance og sikrer, at ingen enkelt defekt computer kan ødelægge hele systemet. Dette svarer til at have mange budbringere, hvis man bliver overfaldet af fjenden. Beskeden vil ikke gå tabt, fordi den vil blive kopieret af andre budbringere.

De nye løsninger:Proof-of-stake (PoS) og Delegated proof-of-stake (DPoS)

PoS er en anden blockchain-konsensusmekanisme, der søger at løse det byzantinske generalproblem. Det blev først implementeret i 2012. PoS-baserede netværk er, i modsætning til PoW-baserede netværk, ikke afhængige af cryptocurrency-mining. I stedet udføres en teknik kaldet staking.

Brugere (kaldet validatorer) sætter penge ind i dette system. Validatorer, der ejer flere mønter på en blockchain, kan validere flere blokke og tjene større belønninger. Brugere, der forsøger at validere forkerte transaktioner, risikerer at miste deres indsatte kontanter.

Brugere kan satse mønter ved at bruge normale hjemmecomputere i stedet for at have brug for specialiserede maskiner til minedrift i et PoW-baseret netværk. Adskillige PoS-baserede netværk har skabt måder til at forhindre dobbeltforbrugsangreb og andre potentielle sikkerhedssårbarheder forårsaget af byzantinske fejl. For eksempel vil Ethereum 2.0 (Serenity) bruge Casper PoS-algoritmen, som kræver, at to tredjedeles flertal af noder bliver enige om en blok, før den kan oprettes.

Delegeret proof-of-stake er en blockchain-konsensusteknik, der fungerer på samme måde som proof-of-stake og blev først udviklet i 2014. Begge kræver, at brugerne sætter penge på spil. Kun få brugere (kendt som delegerede) kan validere transaktioner og generere blokke i DPoS-baserede netværk.

Generelt kan enhver bruger satse en blockchains mønter for at afgive en stemme til støtte for en delegeret kandidat. Blokbelønninger fordeles normalt proportionalt med mængden af ​​penge, der sættes ind i delegeretvalg af valgte noder til deres vælgere.

Noder kan opnå konsensus betydeligt hurtigere ved at bruge DPoS, end de kan med PoW eller PoS. I stor skala betyder det, at transaktioner kan håndteres væsentligt hurtigere. At opretholde et højt niveau af byzantinsk fejltolerance med DPoS kan i nogle tilfælde blive problematisk på grund af afvejningen.

Fordi færre noder er ansvarlige for at holde netværket sikkert, er det potentielt nemmere for noder at konspirere mod flertallets bedste interesser. DPoS-baserede netværk forsøger på den anden side at undgå dette scenario ved at afholde delegeretvalg regelmæssigt for at sikre, at delegerede holdes ansvarlige for deres beslutninger.


Blockchain
  1. Blockchain
  2. Bitcoin
  3. Ethereum
  4. Digital valutaveksling
  5. Minedrift