Od czasu narodzin Bitcoina jako elektronicznego systemu gotówkowego typu peer-to-peer w 2008 roku stopniowo pojawiło się wiele innych walut cyfrowych, a każda waluta cyfrowa ma swój własny, specyficzny mechanizm. Ale prawie wszystkie waluty cyfrowe mają jedną wspólną cechę, którą jest podstawowa architektura blockchain.

W większości przypadków łańcuchy bloków są zaprojektowane jako zdecentralizowane, elektroniczne księgi prowadzone przez rozproszoną sieć węzłów. Systemy Blockchain umożliwiają zatem przeprowadzanie transakcji finansowych w sposób całkowicie przejrzysty i niezawodny, bez pośredników. Waluty cyfrowe stopniowo wypierają tradycyjne systemy płatności bankowych, które wymagają dużej wiarygodności.

Podobnie jak w przypadku większości rozproszonych systemów informatycznych, uczestnicy sieci cyfrowej waluty muszą regularnie omawiać i uzgadniać bieżący stan łańcucha bloków. Nazywamy to konsensusem. Jednak osiągnięcie konsensusu w bezpieczny i wydajny sposób w sieci rozproszonej nie jest łatwym zadaniem.

Jak zatem rozproszona sieć węzłów komputerowych może uzgadniać decyzje w sytuacjach, gdy niektóre węzły mogą działać nieprawidłowo lub zachowywać się nieuczciwie? To jest źródło tak zwanego problemu generałów bizantyjskich, który dał początek koncepcji bizantyjskiej tolerancji błędów.


Na czym polega problem generałów bizantyjskich?

Mówiąc najprościej, w 1982 roku problem generałów bizantyjskich uznano za logiczny dylemat ilustrujący problemy komunikacyjne, jakie może napotkać grupa bizantyjskich generałów, próbując uzgodnić jednolitą opinię na temat ich następnego posunięcia.

Dylemat zakłada, że ​​każdy generał ma swoją własną armię, z których każda znajduje się w innym miejscu miasta, które zamierza zaatakować. Generałowie ci muszą uzgodnić, czy zaatakować, czy wycofać się. Nie ma znaczenia, czy jest to atak, czy odwrót, byle wszyscy generałowie osiągnęli konsensus, czyli skoordynowali i wspólnie postanowili go przeprowadzić.

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

  • Każdy generał musi podjąć decyzję: atak lub odwrót (tak lub nie);

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

  • Wszyscy generałowie muszą zgodzić się na jednolitą decyzję i wykonać ją jednocześnie.


Powyższy problem komunikacyjny polega na tym, że jeden generał może porozumiewać się z drugim generałem jedynie za pośrednictwem komunikatów wysyłanych przez agentów wywiadu. Dlatego też głównym wyzwaniem problemu generałów bizantyjskich jest to, że informacja może w jakiś sposób zostać opóźniona, uszkodzona lub utracona.

Co więcej, nawet jeśli wiadomość zostanie dostarczona pomyślnie, jeden lub więcej generałów może zdecydować się na złośliwe działanie (z dowolnego powodu) i wysłać fałszywe wiadomości, aby zmylić innych generałów, co spowoduje niepowodzenie operacji.

Jeśli odwzorujemy ten dylemat na łańcuch 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ć te same czynności, aby uniknąć awarii.

Dlatego jedynym sposobem na osiągnięcie konsensusu w tego typu systemach rozproszonych jest posiadanie co najmniej dwóch trzecich węzłów sieci, które są niezawodne i uczciwe. Oznacza to, że system jest podatny na awarie i ataki (takie jak ataki 51%), jeśli większość węzłów w sieci zdecyduje się działać złośliwie.


Bizantyjska tolerancja na błędy (BFT)

Mówiąc najprościej, tolerancja błędów bizantyjskich (BFT) to właściwość systemu, która jest w stanie przeciwstawić się serii awarii spowodowanych problemem bizantyjskich generałów. Oznacza to, że bizantyjski system odporny na awarie może nadal działać, nawet jeśli niektóre węzły zawiodą lub zachowają się złośliwie.

Istnieje wiele możliwych rozwiązań problemu bizantyjskich generałów i dlatego istnieje wiele sposobów zbudowania bizantyjskiego systemu odpornego na błędy. Podobnie łańcuchy bloków mają różne sposoby na osiągnięcie bizantyjskiej odporności na błędy, co nazywamy algorytmami konsensusu.


Algorytm konsensusu Blockchain

Algorytm konsensusu możemy zdefiniować jako mechanizm, dzięki któremu sieć blockchain osiąga konsensus. Najczęstszymi przykładami są Proof of Work (PoW) i Proof of Stake (PoS). Tutaj bierzemy Bitcoin jako przykład.

Protokół Bitcoin określa główne zasady systemu, a algorytm konsensusu proof-of-work wyjaśnia, w jaki sposób te zasady są przestrzegane, aby osiągnąć konsensus (na przykład podczas weryfikacji i weryfikacji transakcji).

Chociaż koncepcja dowodu pracy była starsza od waluty cyfrowej, Satoshi Nakamoto zmodyfikował oryginalną wersję i opracował ulepszony algorytm dowodu pracy, który może generować Bitcoin jako bizantyjski system odporny na błędy.

Należy pamiętać, że ten algorytm dowodu pracy nie jest w pełni odporny na błędy bizantyjskie, ale ze względu na kosztowny proces wydobycia i leżącą u jego podstaw technologię szyfrowania, dowód pracy okazał się jedną z najbezpieczniejszych i niezawodnych metod w sieci blockchain. W tym sensie algorytm konsensusu dowodu pracy zaprojektowany przez Satoshi Nakamoto jest przez wielu uważany za jedno z najbardziej wyrafinowanych rozwiązań bizantyjskiej tolerancji błędów.

podsumowując

Problem generałów bizantyjskich to interesujący dylemat, który ostatecznie doprowadził do powstania bizantyjskich systemów odpornych na błędy, które są szeroko stosowane w różnych scenariuszach. Oprócz branży blockchain, niektóre przypadki użycia bizantyjskich systemów tolerancji błędów obejmują również przemysł lotniczy, kosmiczny i energetykę jądrową.

W dziedzinie waluty cyfrowej wydajna komunikacja sieciowa i dobry mechanizm konsensusu mają kluczowe znaczenie dla każdego ekosystemu blockchain. Zabezpieczanie tych systemów wymaga ciągłych wysiłków i istnieją ograniczenia (takie jak skalowalność), których istniejące algorytmy konsensusu nie były w stanie pokonać. Niemniej jednak dowód pracy i dowód stawki to skuteczne metody w przypadku bizantyjskich systemów odpornych na błędy, a ich potencjalne zastosowania będą inspiracją dla dalszych innowacji.