Bütsantsi tõrketaluvuse tutvustus
Sisukord
Mis on Bütsantsi kindralite probleem?
Bütsantsi tõrketaluvus (Byzantine Fault Tolerance - BFT)
Plokiahela konsensusalgoritmid
Lõppmärkused
Avaleht
Artiklid
Bütsantsi tõrketaluvuse tutvustus

Bütsantsi tõrketaluvuse tutvustus

Edasijõudnud
Avaldatud Dec 6, 2018Värskendatud Dec 1, 2022
5m

Alates Bitcoini tekkest 2008. aastal võrdõigusvõrgus elektroonilise sularahasüsteemina, on loodud veel palju teisi krüptorahasid, millest igaühel on konkreetne mehhanism. Kuid plokiahel, kui nende arhitektuuri põhielement, on peaaegu kõigi krüptorahade ühine tunnus.

Kui mõned erandid välja arvata, on plokiahelad kavandatud tahtlikult detsentraliseerituks, toimides digitaalse pearaamatuna, mida haldab hajutatud arvutisõlmede võrk. Seetõttu võimaldab plokiahela tehnoloogia luua omaniketa majandussüsteeme, kus saab läbipaistvaid ja usaldusväärseid finantstehinguid sooritada ilma vahendajateta. Krüptorahasid võetakse kasutusele elujõulise alternatiivina traditsiooniliste pangandus- ja maksesüsteemidele, mis sõltuvad suuresti usaldusest.

Nii nagu enamikus hajutatud arvutisüsteemides, peavad ka krüptorahavõrgus osalejad plokiahela hetkeseisus regulaarselt kokku leppima. Seda me nimetame konsensuse saavutamiseks. Siiski ei ole hajutatud võrkude puhul konsensuse turvaliselt ja tõhusalt saavutamine sugugi lihtne ülesanne.

Kuidas saab arvutisõlmede hajutatud võrk otsuses kokku leppida, kui mõni sõlmedest ebaõnnestub või käitub ebaausalt? See on nn Bütsantsi kindralite probleemi põhiküsimus, millest sündis Bütsantsi tõrketaluvuse kontseptsioon.


Mis on Bütsantsi kindralite probleem?

Kokkuvõtvalt võib öelda, et Bütsantsi kindralite probleem loodi 1982. aastal loogilise dilemmana, mis illustreerib, kuidas Bütsantsi kindralitel võib olla suhtlemisprobleeme, kui nad üritavad oma järgmises sammus kokku leppida.

Dilemma eeldab, et igal kindralil on oma armee ja iga grupp asub erinevates kohtades linna ümber, mida nad kavatsevad rünnata. Kindralid peavad kokku leppima kas rünnata või taganeda. Pole vahet, kas nad ründavad või taganevad, kuni kõik kindralid jõuavad üksmeelele, st lepivad kokku ühises otsuses, mida kooskõlastatult ellu viia.

Seetõttu võime arvestada järgmiste nõuetega:

  • iga kindral peab otsustama, kas rünnata või taganeda (jah või ei);

  • pärast otsuse tegemist ei saa seda muuta;

  • kõik kindralid peavad sama otsusega nõustuma ja seda sünkroonselt ellu viima.

Eelmainitud suhtlusprobleemid on seotud sellega, et üks kindral suudab teisega suhelda vaid kasutades käskjala edastatud sõnumeid. Seetõttu on Bütsantsi kindralite probleemi keskne väljakutse, et sõnumid võivad mingil moel hilineda, hävida või kaduda.

Lisaks, isegi kui sõnum edastatakse edukalt, võib üks või mitu kindralit (ükskõik millisel põhjusel) otsustada tegutseda pahatahtlikult ja saata valeteate, et teisi kindraleid segadusse ajada, mille tulemus on täielik ebaõnnestumine.

Kui me rakendame dilemma plokiahelate konteksti, siis iga kindral esindab võrgusõlme ja sõlmed peavad süsteemi hetkeseisu suhtes jõudma konsensusele. Teisisõnu peab enamik hajutatud võrgu osalejaid nõustuma ja toimima samamoodi, et vältida täielikku ebaõnnestumist.

Seetõttu on ainus viis seda tüüpi hajutatud süsteemides konsensuse saavutamiseks omada vähemalt ⅔ või enamat usaldusväärset ja ausat võrgusõlme. See tähendab, et kui suurem osa võrgust otsustab pahatahtlikult tegutseda, on süsteem vastuvõtlik tõrgetele ja rünnakutele (nt 51% rünnak).


Bütsantsi tõrketaluvus (Byzantine Fault Tolerance - BFT)

Kokkuvõtvalt on Bütsantsi tõrketaluvus (BFT) süsteemi omadus, mis suudab vastu seista rikete klassile, mis on Bütsantsi kindralite probleemist tuletatud. See tähendab, et BFT-süsteem suudab jätkata tööd isegi siis, kui mõned sõlmed ebaõnnestuvad või tegutsevad pahatahtlikult. 

Võimalikke lahendusi Bütsantsi kindralite probleemile on rohkem kui üks ja seega mitu võimalust BFT-süsteemi loomiseks. Samuti on plokiahelal Bütsantsi tõrketaluvuse saavutamiseks erinevad lähenemisviisid ja see viib meid nn konsensusalgoritmide juurde.


Plokiahela konsensusalgoritmid

Saame määratleda konsensusalgoritmi kui mehhanismi, mille kaudu plokiahela võrk konsensusele jõuab. Kõige levinumad kasutuskohad on töötõendus (PoW) ja panuse tõendus (PoS). Kuid võtame näitena Bitcoini juhtumi.

Kui Bitcoini protokoll sätestab süsteemi põhireeglid, siis töötõenduse konsensusalgoritm määrab, kuidas neid reegleid konsensuse saavutamiseks järgitakse (näiteks tehingute kontrollimisel ja valideerimisel).

Kuigi töötõenduse kontseptsioon on vanem kui krüptorahad, töötas Satoshi Nakamoto algoritmina välja selle modifitseeritud versiooni, mis võimaldas luua BFT-süsteemina Bitcoini.

Juhime tähelepanu, et töötõenduse algoritm ei ole Bütsantsi tõrgete suhtes 100% tolerantne, kuid kulumahuka kaevandamisprotsessi ja selle aluseks olevate krüptotehnikate tõttu on töötõendus osutunud üheks turvalisemaks ja usaldusväärsemaks plokiahelavõrkude rakenduseks. Selles mõttes peavad paljud Satoshi Nakamoto loodud töötõenduse konsensusalgoritmi üheks geniaalsemaks lahenduseks Bütsantsi tõrgete lahendamiseks.


Lõppmärkused

Bütsantsi kindralite probleem on intrigeeriv dilemma, mille tulemusena tekkisid BFT-süsteemid, mida kasutatakse laialdaselt erinevates stsenaariumides. Lisaks plokiahelatööstusele kuuluvad BFT-süsteemide kasutusjuhtude hulka lennundus-, kosmose- ja tuumaenergiatööstus.

Krüptoraha kontekstis on iga plokiahela ökosüsteemi jaoks ülioluline tõhus võrgusuhtlus koos hea konsensusmehhanismiga. Nende süsteemide turvalisena hoidmine on pidev pingutus ja olemasolevad konsensusalgoritmid peavad veel mõningaid piiranguid (nt skaleeritavus) ületama. Sellegi poolest on BFT-süsteemidena töötõendusel ja panuse tõendusel väga huvitavad lähenemisviisid ning potentsiaalsed rakendused inspireerivad kindlasti laialdast innovatsiooni.