Od czasu powstania Bitcoina w 2008 roku, jako elektronicznego systemu płatności typu peer-to-peer, powstało wiele innych kryptowalut, każda z określonym mechanizmem operacyjnym. Ale jedną cechą wspólną prawie wszystkich kryptowalut jest blockchain, centralny 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 zarządzana przez rozproszoną sieć węzłów komputerowych. W tym kontekście technologia blockchain umożliwiła stworzenie systemów gospodarczych wolnych od potrzeby zaufania, w których można było dokonywać przejrzystych i rzetelnych transakcji finansowych bez 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 opierają się na zaufaniu.
Podobnie jak większość rozproszonych systemów komputerowych, uczestnicy sieci kryptowalut muszą bardzo regularnie uzgadniać stan blockchainu, nazywa się to osiąganiem konsensusu. Jednak osiągnięcie konsensusu w sieciach rozproszonych w bezpieczny i niezawodny 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 prawdopodobnie 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.
Co jest nie tak z bizantyjskimi generałami?
Mówiąc najprościej, problem generałów bizantyjskich powstał w 1982 roku jako logiczny dylemat opisujący, w jaki sposób grupa bizantyjskich generałów może mieć problemy z komunikacją, próbując uzgodnić kolejny strategiczny ruch.
Dylemat zakłada, że każdy generał ma swoją własną armię i że każda grupa zbrojna jest rozmieszczona w różnych miejscach wokół miasta, które chce oblegać. Generałowie muszą zgodzić się na atak lub odwrót. Niezależnie od tego, czy zaatakują, czy się wycofają, wszyscy generałowie muszą osiągnąć konsensus, to znaczy zgodzić się na wspólną decyzję, aby wykonać ją w sposób skoordynowany.
Dlatego możemy rozważyć następujące cele:
Każdy generał musi podjąć decyzję: atak lub odwrót (tak lub nie);
Raz podjętej decyzji nie można już zmienić.
Wszyscy generałowie muszą zgodzić się na tę samą decyzję i wykonać ją w synchronizacji.
Wspomniane problemy komunikacyjne wiążą się z faktem, że jeden generał może komunikować się z drugim jedynie za pośrednictwem wiadomości przekazywanych przez emisariusza. Dlatego głównym wyzwaniem problemu generałów bizantyjskich jest to, że wiadomości mogą zostać opóźnione, zniszczone 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ć fałszywą wiadomość, aby zmylić pozostałych generałów, co zakończy się całkowitym niepowodzeniem.
Jeśli zastosujemy ten dylemat do kontekstu blockchainó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 ⅔ 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)
W skrócie, bizantyjska tolerancja na błędy (BFT) charakteryzuje system zdolny wytrzymać szereg błędów wynikających 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 generałów bizantyjskich, a zatem istnieje wiele sposobów skonstruowania systemu BFT. Podobnie istnieją różne podejścia do blockchainu, aby osiągnąć bizantyjską odporność na błędy, co prowadzi nas do algorytmów konsensusu.
Algorytmy konsensusu Blockchain
Algorytm konsensusu możemy zdefiniować jako mechanizm, dzięki któremu sieć blockchain osiąga konsensus. Najpopularniejsze wdrożenia to dowód pracy i dowód stawki. Ale weźmy jako przykład sprawę Bitcoina.
Podczas gdy protokół Bitcoin określa główne zasady systemu, to algorytm konsensusu PoW określa, w jaki sposób te zasady będą przestrzegane, aby osiągnąć konsensus (na przykład podczas weryfikacji i walidacji transakcji).
Chociaż koncepcja dowodu pracy jest starsza niż kryptowaluty, Satoshi Nakamoto opracował jej zmodyfikowaną wersję jako algorytm BFT i system, który umożliwił stworzenie Bitcoina.
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 najbardziej niezawodnych implementacji w sieciach blockchain. W tym sensie algorytm konsensusu Proof of Work, zaprojektowany przez Satoshi Nakamoto, jest przez wielu uważany za jedno z najważniejszych rozwiązań błędów bizantyjskich.
Wniosek
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 sektorem blockchain niektóre przypadki użycia systemów BFT obejmują sektory lotniczy, kosmiczny i energii jądrowej.
W kontekście kryptowalut skuteczna komunikacja sieciowa w połączeniu z dobrym mechanizmem konsensusu jest niezbędna dla każdego ekosystemu blockchain. Zabezpieczanie tych systemów wymaga ciągłego wysiłku, a istniejące algorytmy konsensusu nadal muszą pokonać pewne ograniczenia (takie jak skalowalność). Niemniej jednak PoW i PoS są bardzo interesującymi podejściami jako systemy BFT, a ich potencjalne zastosowania z pewnością wymagają powszechnych innowacji.

