Od początku powstania Bitcoina w 2008 roku jako elektronicznego systemu finansowego typu peer-to-peer powstało wiele walut cyfrowych, z których każda działa w oparciu o specjalny mechanizm. Jednak jedyną cechą wspólną wszystkich walut cyfrowych jest blockchain jako podstawowy element ich struktury.

Wszystkie łańcuchy bloków są celowo zaprojektowane tak, aby były zdecentralizowane i z nielicznymi wyjątkami działają jak cyfrowa księga prowadzona przez rozproszoną sieć węzłów komputerowych. Z tego powodu technologia blockchain umożliwiła stworzenie godnych zaufania systemów gospodarczych, w których transakcje finansowe mogą być przeprowadzane w sposób przejrzysty i niezawodny, bez konieczności korzystania z pośredników.

Korzystanie z walut cyfrowych jest obecnie uznawane za realną alternatywę dla tradycyjnych systemów bankowych i metod płatności, które w dużym stopniu opierają się na zaufaniu.

Podobnie jak w przypadku większości rozproszonych systemów obliczeniowych, uczestnicy sieci kryptowalut muszą regularnie uzgadniać aktualny stan, w jakim działa blockchain. Nazywamy to osiągnięciem konsensusu. Jednak osiągnięcie konsensusu w sprawie sieci rozproszonych w bezpieczny sposób jest bardzo trudnym zadaniem.

Jak zatem rozproszona sieć węzłów komputerowych może uzgodnić, czy niektóre węzły prawdopodobnie ulegną awarii lub będą działać nielegalnie? Jest to podstawowe pytanie tak zwanego problemu generałów bizantyjskich, z którego wywodzi się koncepcja bizantyjskiej tolerancji wobec błędów.


Na czym polega problem generałów bizantyjskich?

Krótko mówiąc, problem generałów bizantyjskich z 1982 r. został pomyślany jako logiczny dylemat ilustrujący, jak grupa bizantyjskich generałów może mieć problemy z komunikowaniem się między sobą, próbując uzgodnić kolejny krok swojego planu.

Dylemat zakłada, że ​​każdy generał ma swoją własną armię, że każda grupa jest zlokalizowana w różnych miejscach miasta, które zamierza zaatakować, i że każdy generał musi zgodzić się na atak lub odwrót. Nie ma znaczenia, czy zaatakują, czy się wycofają, dopóki wszyscy generałowie osiągną konsensus, tj. zgodzą się na wspólną decyzję w celu skoordynowanej jej realizacji.

Dlatego możemy rozważyć następujące cele:

  • Każdy generał musi zdecydować: atak lub odwrót (tak lub nie).

  • Raz podjętej decyzji nie można zmienić.

  • Wszyscy generałowie muszą zgodzić się na tę samą decyzję i wdrożyć ją w sposób zsynchronizowany.

Powyższe problemy komunikacyjne wynikają z faktu, że każdy generał może komunikować się z innym generałem jedynie poprzez wiadomości przesyłane przez przewoźnika/kuriera. Zatem głównym wyzwaniem dla generałów bizantyjskich było to, że wiadomości mogły zostać opóźnione, uszkodzone lub utracone.

Dodatkowo, nawet jeśli wiadomość zostanie pomyślnie dostarczona, jeden lub więcej generałów może (z dowolnego powodu) podjąć złośliwe działanie i wysłać sfałszowaną wiadomość, aby zmylić pozostałych generałów, co doprowadzi do całkowitego niepowodzenia misji.

Jeśli zastosujemy ten dylemat w kontekście blockchain, każdy gen reprezentuje węzeł sieci, a węzły muszą osiągnąć konsensus co do bieżącego stanu systemu. Inaczej mówiąc, większość uczestników sieci rozproszonej musi zgodzić się na tę samą czynność i wykonać ją, aby uniknąć całkowitej awarii.

Dlatego jedynym sposobem na osiągnięcie konsensusu w tego typu systemach rozproszonych jest posiadanie ⅔ (dwóch trzecich) lub więcej uczciwych węzłów. Oznacza to, że jeśli większość sieci zdecyduje się działać złośliwie, system będzie podatny na awarie i ataki (np. atak 51%).


Bizantyjska tolerancja na błędy - BFT

Krótko mówiąc, bizantyjska tolerancja na błędy (BFT) jest właściwością systemu zdolnego przeciwstawić się awariom wynikającym z Problemu Bizantyjskich Generałów. Oznacza to, że system BFT jest w stanie kontynuować pracę nawet w przypadku awarii niektórych węzłów lub zachowywania się złośliwie.

Istnieje więcej niż jedno możliwe rozwiązanie problemu generałów bizantyjskich, co oznacza, że ​​istnieje wiele sposobów zbudowania systemu BFT. Podobnie istnieje wiele różnych podejść do łańcuchów bloków w celu osiągnięcia bizantyjskiej odporności na błędy, co prowadzi nas do tak zwanych algorytmów konsensusu.


Algorytmy konsensusu Blockchain

Możemy zdefiniować algorytm konsensusu jako mechanizm, dzięki któremu sieć blockchain osiąga konsensus. Najpopularniejszymi aplikacjami są Proof of Work (PoW) i Proof of Stake (PoS). Ale weźmy przykład Bitcoina.

Chociaż protokół Bitcoin określa podstawowe zasady systemu, to algorytm konsensusu znany jako Proof of Work (PoW) określa, w jaki sposób te zasady są przestrzegane w celu osiągnięcia konsensusu (na przykład podczas weryfikacji transakcji).

Choć koncepcja Proof of Work jest starsza niż kryptowaluty, Satoshi Nakamoto opracował jej zmodyfikowaną wersję jako algorytm, który umożliwił stworzenie Bitcoina jako systemu BFT.

Należy pamiętać, że algorytm Proof of Work (PoW) nie jest w 100% odporny na błędy bizantyjskie, ale ze względu na kosztowny proces wydobycia i techniki kryptograficzne, PoW okazał się jedną z najbezpieczniejszych i godnych zaufania implementacji sieci blockchain.

Dlatego algorytm Proof of Work zaprojektowany przez Satoshi Nakamoto jest przez wielu używany jako jedno z najgenialniejszych rozwiązań błędów bizantyjskich.


Wniosek

Problem generałów bizantyjskich to ciekawy dylemat, który ostatecznie doprowadził do powstania systemów BFT, które są szeroko stosowane w różnych scenariuszach. Nawet poza branżą blockchain kilka przypadków użycia BFT obejmuje przemysł lotniczy, kosmiczny i energię jądrową.

W kontekście walut cyfrowych posiadanie wydajnej sieci komunikacyjnej wraz z mechanizmem konsensusu jest niezbędne dla każdego systemu blockchain. Zabezpieczanie tych systemów wymaga ciągłego wysiłku, a istniejące algorytmy konsensusu wciąż pracują nad pokonaniem pewnych ograniczeń (takich jak skalowalność). Jednakże Proof of Work (PoW) i Proof of Stake (PoS) to dwa bardzo interesujące podejścia do systemów BFT, a potencjalne zastosowania z pewnością są źródłem szerokiej inspiracji.