Een betrouwbaar computersysteem moet kunnen functioneren, zelfs als een of meer van zijn componenten defect raken. Een defect onderdeel kan een gedrag vertonen dat vaak over het hoofd wordt gezien:het leveren van tegenstrijdige gegevens aan verschillende delen van het systeem. Dus, wat is het probleem van de Byzantijnse generaals? Het Byzantijnse generaalsprobleem is een abstracte uitdrukking van het probleem van het omgaan met dit soort mislukkingen.
Het Byzantijnse generaalsprobleem is een speltheorieprobleem dat beschrijft hoe moeilijk het is voor verspreide partijen om een consensus te bereiken zonder de hulp van een vertrouwde centrale partij. Hoe kunnen leden van een netwerk het eens worden over een specifieke realiteit als niemand de identiteit van andere leden kan verifiëren?
Speltheorie is een raamwerk voor het denken over sociale gebeurtenissen met concurrerende acteurs. In een strategische omgeving bedenkt de speltheorie sociale omstandigheden tussen concurrerende deelnemers en produceert het optimale besluitvorming van autonome en concurrerende agenten.
De Byzantijnse generaals zijn gebaseerd op een speltheorie-analogie. Het probleem is dat meerdere generaals Byzantium belegeren. Ze hebben de stad omsingeld, maar ze moeten beslissen wanneer ze als groep zullen aanvallen. Ze zullen winnen als alle generaals tegelijk aanvallen; ze zullen echter verliezen als ze aanvallen.
Omdat alle brieven die ze verzenden of ontvangen kunnen zijn onderschept of bedrieglijk verzonden door de verdedigers van Byzantium, hebben de generaals geen veilige communicatiekanalen met elkaar. Hoe kunnen de generaals gelijktijdige aanvallen coördineren?
Dit artikel is bedoeld om uit te leggen wat een Byzantijnse fout in blockchain is en hoe het probleem van de Byzantijnse generaals op te lossen.
"The Byzantine Generals Problem", een onderzoeksartikel van Leslie Lamport, Robert Shostak en Marshall Pease, werd in 1982 gepubliceerd. Het belang van dit probleem blijkt duidelijk uit de openingspagina, waarop staat dat de National Aeronautics and Space Administration (NASA), het Ballistic Missile Defense Systems Command en het Army Research Office hebben allemaal hun onderzoek gefinancierd.
Hoewel het Byzantijnse generaalsprobleem vóór 1982 in de informatica was bestudeerd, was dit een van de eerste pogingen om het te vertalen in parallelle en voorgestelde oplossingen. De volgende analogie illustreert het probleem van de Byzantijnse generaals. Verschillende divisies van het Byzantijnse leger zijn gestationeerd net buiten de stad van een vijand, voorbereid op oorlog. De enige manier voor verschillende generaals om contact te maken is via een boodschapper. Ze moeten het eens worden over een actieplan.
We moeten er echter van uitgaan dat bepaalde generaals, die erop uit zijn om loyale generaals ervan te weerhouden te beslissen over een enkele handelwijze, verraders zijn. Om ervoor te zorgen dat een kleine groep verraders de communicatie niet kan onderbreken, is een algoritme nodig.
Om het probleem van de Byzantijnse generaals aan te pakken, hebben loyale generaals een veilig middel nodig om overeenstemming te bereiken over een plan (bekend als consensus) en dit uit te voeren (bekend als coördinatie). Hoewel het oplossen van het Byzantijnse generaalsprobleem een moeilijke taak is, begrijpen we nu het fundamentele probleem beter. Het is van cruciaal belang op te merken dat, zoals het voorbeeld suggereert, het concept kan worden toegepast op militaire communicatie.
Dit probleem is echter van invloed op alle typen computersystemen, niet alleen die welke in militaire toepassingen worden gebruikt. Het probleem van de Byzantijnse generaals moet worden opgelost als een verspreide groep knooppunten (bijvoorbeeld computers of andere fysieke apparaten) betrouwbare communicatie moet realiseren.
Er zijn verschillende redenen waarom een gedistribueerd computersysteem zou kunnen falen. In het bovenstaande militaire scenario zijn Byzantijnse mislukkingen in wezen verraders die proberen de communicatie tussen loyale generaals te onderbreken.
Dit kan een softwaredefect, een hardwarestoring of een kwaadaardige aanval zijn bij toepassing op echte computersystemen. Anders gezegd, Byzantijnse mislukkingen hoeven niet altijd het resultaat te zijn van een goed gecoördineerde inspanning van een slechte acteur. Er kunnen problemen zijn die nodes verhinderen om consensus te bereiken over gedistribueerde netwerken.
Elke systeemstoring die verschillende symptomen vertoont voor verschillende waarnemers, wordt een Byzantijnse fout genoemd. Het bevat geen beperkingen en aannames over het soort gedrag dat een knooppunt kan vertonen (een knooppunt kan bijvoorbeeld willekeurige gegevens genereren terwijl het zich voordoet als een eerlijke actor).
In elk gedistribueerd computersysteem zijn Byzantijnse storingen vrijwel onvermijdelijk.
Stel je voor dat er een stroomstoring is en dat alle nodes tegelijkertijd offline gaan. Nu rijst de vraag of het netwerk nog steeds operationeel is en in staat is om betrouwbare communicatie in stand te houden? Of werkt het systeem als geheel niet meer of wordt het plotseling opengesteld voor aanvallen?
In een redelijk veilig netwerk heeft iets kleins als een paar offline knooppunten geen waarneembaar effect op het netwerk. Byzantijnse fouttolerantie is het vermogen om zich tegen deze omstandigheden te verdedigen. Van netwerken die meer Byzantijnse storingen kunnen doorstaan, wordt gezegd dat ze een hogere tolerantie hebben, wat inhoudt dat ze veiliger zijn dan netwerken die dat niet kunnen.
De feitelijke incidentie en taxonomie van Byzantijnse fouten in verschillende systemen is een omvangrijk en uitdagend onderwerp. Het kan echter zo worden gespecificeerd dat er een formele definitie van Byzantijnse fouttolerantie ontstaat.
Het is vermeldenswaard dat Byzantijnse gebreken de ernstigste en moeilijkst te corrigeren zijn. Byzantijnse fouttolerantie is vereist in kerncentrales, vliegtuigmotorsystemen en vrijwel elk systeem waarvan de acties afhankelijk zijn van de resultaten van een groot aantal sensoren.
Alleen gedecentraliseerde systemen zijn vatbaar voor het Byzantijnse generaals-probleem, omdat ze geen betrouwbare informatiebron hebben en geen manier hebben om de informatie te bevestigen die ze van andere netwerkgebruikers krijgen. In gecentraliseerde systemen wordt een autoriteit vertrouwd om nauwkeurige informatie te verspreiden en tegelijkertijd de verspreiding van foutieve of frauduleuze informatie over het netwerk te voorkomen.
In het traditionele financiële systeem worden banken bijvoorbeeld vertrouwd om klanten nauwkeurige saldi en transactiegeschiedenissen te verstrekken. Als een bank haar consumenten probeert te misleiden of te misleiden, is de centrale bank of de overheid bevoegd om het vertrouwen te herstellen.
Het Byzantijnse generaals-dilemma, dat inconsequent de vaststelling van de waarheid vereist, wordt niet opgelost door gecentraliseerde systemen. In plaats daarvan kiezen ze ervoor om het probleem helemaal niet onder ogen te zien en kiezen ze voor efficiëntie boven betrouwbaarheid. Aan de andere kant zijn gecentraliseerde systemen vatbaar voor corruptie door de centrale autoriteit.
Het probleem van de Byzantijnse generaals wordt geïllustreerd door geld. Hoe kan een samenleving een monetair systeem bouwen dat alle leden kunnen vertrouwen en waar ze het over eens kunnen zijn? Samenlevingen hebben voor het grootste deel van de geschiedenis edele metalen of andere zeldzame voorwerpen, zoals schelpen of glaskralen, als betaalmiddel gebruikt. Goud pakte het probleem van de Byzantijnse generaals aan omdat het werd vertrouwd en erkend in gedecentraliseerde systemen zoals internationale handel.
Het gewicht en de zuiverheid van goud daarentegen bleven tot nu toe onbetrouwbaar. Het falen van goud om het probleem van de Byzantijnse generaals volledig aan te pakken, leidde ertoe dat de oprichting en uitgifte van geld werd overgenomen door vertrouwde centrale instanties, voornamelijk regeringen. Regeringen monopoliseerden pepermuntjes om vertrouwen te wekken in het gewicht en de zuiverheid van de munt. Daarom werd het Byzantijnse falen niet opgelost door gecentraliseerde systemen.
Bovendien hebben de vertrouwde centrale autoriteiten voor geld, regeringen, dat vertrouwen geschonden door het te grijpen, te verlagen of te wijzigen. Om het probleem van de Byzantijnse generaals op te lossen, moet een valuta verifieerbaar, bestand tegen vervalsing en onbetrouwbaar zijn. Deze prestatie werd pas bereikt met de komst van Bitcoin (BTC).
Het probleem kan worden opgelost door een protocol te implementeren dat gebruikmaakt van fouttolerante mechanismen. Bij onzekerheid is het hanteren van een procedure onder de generaals de beste methode om keuzes te maken.
Als resultaat wordt het probabilistisch in plaats van deterministisch, omdat niets kan worden gegarandeerd. Dat is precies het geval wanneer er minder directe communicatie is tussen leeftijdsgenoten en elk op zichzelf staat. Omdat elke generaal zich op een andere plaats bevindt, is er een fysieke scheiding tussen hen.
Het Byzantijnse algemene probleem kan worden opgelost met behulp van een blockchain. Het gaat erom mensen een manier te geven om veilig te communiceren in een onvoorspelbare wereld. In de echte wereld vinden de meeste transacties plaats tussen vreemden die elkaar niet kennen of vertrouwen.
Elk individu is als een generaal, wachtend op orders om hun positie aan te vallen of te verdedigen. Er zijn geen tussenpersonen die namens u de aanval bemiddelen; je bent helemaal alleen bij het nemen van je beslissing.
Een blockchain creëert een laag die kan worden vertrouwd zonder dat elk individu hoeft te worden vertrouwd. Dit wordt bereikt door een netwerk van knooppunten die samenkomen om overeenstemming te bereiken over de waarheid voordat deze wordt vastgelegd. Als de generaal niet zeker is van de inhoud van de communicatie, kunnen de andere generaals deze verifiëren met wat zij weten dat waar is.
Zodra een knooppunt het heeft opgenomen, wordt een kopie verzonden naar alle andere knooppunten in het netwerk, waardoor de informatie overbodig wordt. Het PoW-consensusalgoritme is ontworpen om dit doel te bereiken. Slechte acteurs zullen nog steeds proberen het systeem te bespelen omdat de informatie niet altijd juist is.
Aangezien het systeem is ontworpen voor gebruik door het grote publiek, zijn er fouttolerante mechanismen en beveiliging aanwezig in een blockchain. In dit scenario was cryptografie vereist om ervoor te zorgen dat de berichten niet konden worden gewijzigd.
Het systeem biedt sleutelparen voor het digitaal ondertekenen van een bericht om de identiteit te verifiëren als bewijs dat het afkomstig is van de personen die het bericht zouden hebben verzonden. Zodra berichten zijn geverifieerd, worden ze opgenomen voor transparantie en historisch bewijs van aansprakelijkheid.
Met betrekking tot geld was Bitcoin de eerste gerealiseerde oplossing voor het probleem van de Byzantijnse generaals. Veel plannen en projecten vóór Bitcoin probeerden geld te creëren dat onafhankelijk was van de overheid, maar ze faalden allemaal op de een of andere manier.
Bitcoin heeft de middelen nodig om het eigendom te beheren en dubbele uitgaven te voorkomen als een monetair systeem. Bitcoin gebruikt een blockchain, of een openbaar, gedistribueerd grootboek, dat een geschiedenis van alle transacties opslaat om dit op een betrouwbare manier te bereiken. De blockchain, in de analogie van de Byzantijnse generaals, is de waarheid waar alle partijen het over eens moeten zijn.
Als alle knooppunten in het Bitcoin-netwerk het eens zouden kunnen worden over welke transacties wanneer en in welke volgorde plaatsvonden, zouden ze het eigendom van Bitcoin kunnen verifiëren en een werkend, betrouwbaar monetair systeem kunnen creëren zonder dat er een gecentraliseerde autoriteit nodig is.
Satoshi Nakamoto bracht de eerste Bitcoin-whitepaper uit in oktober 2008. Hoewel de naam "Byzantijns generaalsprobleem" in dit document niet wordt gebruikt, heeft Nakamoto in feite een oplossing geboden die in januari 2009 met de introductie zou worden geïmplementeerd van het Bitcoin-netwerk.
Satoshi bedacht een middel om cryptografische beveiliging en versleuteling met openbare sleutels te gebruiken om het algemene Byzantijnse probleem in een digitaal elektronisch netwerk op te lossen. Om manipulatie van gegevens te voorkomen, maakt cryptografische beveiliging gebruik van hashing, een proces van codering. De identiteit van een netwerkgebruiker wordt geverifieerd via versleuteling met openbare sleutels.
Een transactie is beveiligd in een blok dat is verbonden met andere blokken door zijn hash-waarde in cryptografische beveiliging. Alle hashes kunnen worden getraceerd tot aan de wortel van alle hashes, wat een eerste blok is. De blockchain is een systeem dat een Merkle Tree gebruikt om hashes te verifiëren die afkomstig zijn van een genesisblok.
Elk blok in het netwerk dat uit het eerste blok komt, ook wel het genesisblok genoemd, is geldig. Mijnwerkers valideren blokken, die concurreren met andere mijnwerkers om cryptografische puzzels op te lossen om blokken te produceren als onderdeel van een PoW-consensusmethode.
Door gebruik te maken van een proof-of-work consensusmechanisme, overwon Bitcoin het probleem van de Byzantijnse generaals en stelde het een duidelijk, objectief regelboek voor de blockchain op. Om informatie aan de blockchain toe te voegen, blokken genaamd, moet een netwerklid bewijs publiceren dat ze veel moeite hebben gedaan om het blok te maken. Dit werk brengt hoge kosten met zich mee voor de maker en stimuleert hen om nauwkeurige informatie te delen.
Er kan geen onenigheid of geknoei met de informatie op het Bitcoin-netwerk zijn, omdat de regels objectief zijn. Het systeem voor het selecteren van wie nieuwe Bitcoin mag slaan en de wetten die bepalen welke transacties geldig of ongeldig zijn, zijn beide doelstellingen. Bovendien is het onmogelijk om een blok uit de blockchain te verwijderen nadat het is toegevoegd, waardoor de geschiedenis van Bitcoin onveranderlijk is.
Daarom wordt het Byzantijnse generaalsprobleem opgelost door miners die vergelijkbaar zijn met generaals in Satoshi's versie van de blockchain. Elk knooppunt is verantwoordelijk voor het valideren van transacties, die vergelijkbaar zijn met berichten die aan de generaals worden afgeleverd. Slechte actoren (bijvoorbeeld hackers) die berichten willen stelen of het netwerk willen beschadigen, kunnen als de vijand worden beschouwd.
Hackers (d.w.z. de man-in-the-middle) kunnen de blockchain niet gemakkelijk aanvallen omdat berichten cryptografische beveiliging gebruiken. Om manipulatie te voorkomen, worden de berichten of transacties gebundeld in blokken en gehasht voor extra bescherming. Satoshi maakt dingen waarschijnlijker door miners in een competitie te plaatsen om de blokken te valideren. Dit maakt het meer gedecentraliseerd omdat geen enkele mijnwerker alle beloningen kan ontvangen door validatie te monopoliseren.
In plaats daarvan moeten miners wedijveren om een raadsel op te lossen door gebruik te maken van hun rekenkracht, de zogenaamde hash-snelheid. Hoe hoger de hash-snelheid van een miner, hoe groter de kans dat ze de puzzel oplossen. Wanneer de mijnwerker die de puzzel heeft opgelost de oplossing naar het netwerk uitzendt, moeten alle andere mijnwerkers de waarde valideren of ontkennen als deze onjuist is. Een moeilijkheidsdoel is een waarde die gelijk aan of kleiner moet zijn dan de juiste waarde.
Leden van het Bitcoin-netwerk kunnen dus op elk moment overeenstemming bereiken over de status van de blockchain en alle transacties in blockchain. Elk knooppunt controleert of blokken geldig zijn volgens het proof-of-work-criterium en of transacties geldig zijn volgens aanvullende criteria.
Als een netwerklid misleidende informatie probeert uit te zenden, zullen alle knooppunten op het netwerk dit als objectief ongeldig detecteren en negeren. Het is niet nodig om andere leden van het Bitcoin-netwerk te vertrouwen, omdat elk knooppunt alle informatie op het netwerk zelf kan verifiëren, waardoor Bitcoin een betrouwbaar systeem wordt.
De blockchain is ook gedecentraliseerd, wat betekent dat het systeem geen enkel storingspunt mag hebben. De blokken worden opgeslagen in een gedistribueerde database, die over het netwerk wordt gerepliceerd. Deze redundantie helpt ook bij fouttolerantie, zodat geen enkele defecte computer het hele systeem kan neerhalen. Dit is het equivalent van het hebben van veel boodschappers voor het geval iemand in een hinderlaag wordt gelokt door de vijand. Het bericht gaat niet verloren omdat het door andere boodschappers wordt gekopieerd.
PoS is een ander blockchain-consensusmechanisme dat het probleem van de Byzantijnse generaals probeert aan te pakken. Het werd voor het eerst ingezet in 2012. PoS-gebaseerde netwerken, in tegenstelling tot PoW-gebaseerde netwerken, zijn niet afhankelijk van cryptocurrency-mining. In plaats daarvan wordt een techniek genaamd uitzetten uitgevoerd.
Gebruikers (validators genoemd) zetten geld in dit systeem. Validators die meer munten op een blockchain bezitten, kunnen meer blokken valideren en grotere beloningen verdienen. Gebruikers die onjuiste transacties proberen te valideren, lopen het risico hun ingezette geld te verliezen.
Gebruikers kunnen munten inzetten met normale thuiscomputers in plaats van gespecialiseerde machines nodig te hebben voor mijnbouw in een PoW-gebaseerd netwerk. Verschillende PoS-gebaseerde netwerken hebben manieren gecreëerd om dubbele uitgaven en andere potentiële beveiligingsproblemen veroorzaakt door Byzantijnse fouten te voorkomen. Ethereum 2.0 (Serenity) gebruikt bijvoorbeeld het Casper PoS-algoritme, waarvoor een tweederde meerderheid van de knooppunten het eens moet worden over een blok voordat het kan worden gemaakt.
Gedelegeerde proof-of-stake is een blockchain-consensustechniek die op dezelfde manier werkt als proof-of-stake en voor het eerst werd ontwikkeld in 2014. Beide vereisen dat gebruikers geld op het spel zetten. Slechts een paar gebruikers (bekend als afgevaardigden) kunnen transacties valideren en blokkades genereren in op DPoS gebaseerde netwerken.
Over het algemeen kan elke gebruiker de munten van een blockchain inzetten om een stem uit te brengen ter ondersteuning van een afgevaardigde kandidaat. Blokbeloningen worden gewoonlijk door gekozen knooppunten evenredig verdeeld over het bedrag dat is ingezet bij de verkiezingen van afgevaardigden.
Nodes kunnen aanzienlijk sneller consensus bereiken met DPoS dan met PoW of PoS. Op grote schaal betekent dit dat transacties aanzienlijk sneller kunnen worden afgehandeld. Het handhaven van een hoog niveau van Byzantijnse fouttolerantie met DPoS kan in sommige gevallen problematisch worden vanwege de afweging.
Omdat minder nodes verantwoordelijk zijn voor het veilig houden van het netwerk, is het potentieel gemakkelijker voor nodes om samen te spannen tegen de belangen van de meerderheid. Aan de andere kant proberen op DPoS gebaseerde netwerken dit scenario te vermijden door regelmatig afgevaardigdenverkiezingen te houden om ervoor te zorgen dat afgevaardigden verantwoordelijk worden gehouden voor hun beslissingen.
Hoeveel kost het om de helling van een dak te verhogen?
Hoe beïnvloedt de overheid de economie?
Hoe beïnvloedt de aandelenmarkt de economie?
Hoe controleert de overheid de geldstroom?
Welke invloed heeft liquiditeit op de futures-markten?
Flow kopen (FLOW)
Hoe verhoudt de beurs zich tot de economie?