Od powstania Bitcoina w 2008 roku, jako elektronicznego systemu gotówkowego typu peer-to-peer, powstało wiele innych kryptowalut, każda z określonym mechanizmem. Ale jedną rzeczą, która łączy prawie wszystkie kryptowaluty, jest blockchain, jako podstawowy element ich architektury.

Z nielicznymi wyjątkami łańcuchy bloków są celowo zaprojektowane tak, aby były zdecentralizowane i działały jako cyfrowa księga prowadzona przez rozproszoną sieć węzłów komputerowych. Z tego powodu technologia blockchain pozwoliła na stworzenie systemów gospodarczych pozbawionych zaufania, w których można było dokonywać przejrzystych i wiarygodnych transakcji finansowych bez konieczności korzystania z pośredników. Kryptowaluty są akceptowane jako realna alternatywa dla tradycyjnych systemów bankowych i płatniczych, które w dużym stopniu zależą od zaufania.

Podobnie jak większość rozproszonych systemów komputerowych, uczestnicy sieci kryptowalut muszą regularnie uzgadniać aktualny stan blockchainu i to właśnie nazywamy osiągnięciem konsensusu. Jednak osiągnięcie konsensusu w sprawie sieci rozproszonych w bezpieczny i skuteczny sposób nie jest łatwym zadaniem.

Jak więc rozproszona sieć węzłów komputerowych może uzgodnić decyzję, jeśli niektóre z węzłów najprawdopodobniej zawiodą lub będą działać nieuczciwie? Oto zasadnicze pytanie w tak zwanym problemie generałów bizantyjskich, który dał początek koncepcji bizantyjskiej tolerancji na błędy.


Na czym polega problem bizantyjskich generałów?

W kilku słowach Problem Bizantyjskich Generałów powstał w 1982 roku jako logiczny dylemat ilustrujący, jak grupa bizantyjskich generałów może mieć problemy z komunikacją, próbując uzgodnić swój następny ruch.

Dylemat zakłada, że ​​każdy generał ma swoją własną armię i że każda grupa jest rozmieszczona w różnych miejscach miasta, które zamierza zaatakować. Generałowie muszą 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 skoordynowanego jej wykonania.

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

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

  • Po podjęciu decyzji nie można jej zmienić;

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

Wspomniane problemy komunikacyjne wiążą się z faktem, że jeden generał może porozumiewać się z drugim jedynie za pomocą wiadomości przekazywanych przez kuriera. W rezultacie głównym wyzwaniem Problemu Bizantyjskich Generałów jest to, że przesłania mogą zostać w jakiś sposób opóźnione, zniszczone lub utracone.

Ponadto, nawet jeśli wiadomość zostanie pomyślnie dostarczona, jeden lub więcej generałów może zdecydować się (z dowolnego powodu) na złośliwe działanie i wysłać fałszywą wiadomość, aby zmylić pozostałych generałów, co doprowadzi do całkowitej porażki.

Jeśli zastosujemy ten dylemat do kontekstu łańcuchów bloków, każdy generał reprezentuje węzeł sieci, a węzły muszą osiągnąć konsensus co do bieżącego stanu systemu. Innymi słowy, większość uczestników sieci rozproszonej musi zgodzić się i wykonać to samo działanie, aby uniknąć całkowitej awarii.

Dlatego jedynym sposobem na osiągnięcie konsensusu w tego typu systemach rozproszonych jest posiadanie co najmniej ⅔ lub więcej niezawodnych i uczciwych węzłów sieci. 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, który jest w stanie przeciwstawić się klasie niepowodzeń wywodzącej się z Problemu Bizantyjskich Generałów. Oznacza to, że system BFT może kontynuować działanie nawet w przypadku awarii niektórych węzłów lub złośliwego działania.

Istnieje więcej niż jedno możliwe rozwiązanie Problemu Bizantyjskich Generałów, a co za tym idzie, istnieje wiele sposobów budowania systemu BFT. Podobnie istnieją różne podejścia do blockchainu, aby osiągnąć bizantyjską odporność 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 wdrożeniami są Proof of Work (PoW) i Proof of Stake (PoS). Ale weźmy jako przykład sprawę Bitcoina.

Podczas gdy protokół Bitcoin określa podstawowe zasady systemu, algorytm konsensusu PoW określa, w jaki sposób te zasady będą przestrzegane w celu osiągnięcia konsensusu (na przykład podczas weryfikacji i walidacji 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 PoW nie jest w 100% tolerancyjny na błędy bizantyjskie, ale ze względu na kosztowny proces wydobycia i leżące u jego podstaw techniki kryptograficzne, PoW okazał się jedną z najbezpieczniejszych i niezawodnych implementacji sieci blockchain. W tym sensie algorytm konsensusu Proof of Work, zaprojektowany przez Satoshi Nakamoto, jest przez wielu uważany za jedno z najbardziej genialnych rozwiązań błędów bizantyjskich.


Końcowe przemyślenia

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

W kontekście kryptowalut posiadanie wydajnej komunikacji sieciowej wraz z dobrym mechanizmem konsensusu jest niezbędne dla każdego ekosystemu blockchain. Zabezpieczanie tych systemów wymaga ciągłego wysiłku, a istniejące algorytmy konsensusu muszą jeszcze pokonać kilka ograniczeń (takich jak skalowalność). Niemniej jednak PoW i PoS są bardzo interesującymi podejściami jako systemy BFT, a potencjalne zastosowania z pewnością inspirują powszechne innowacje.