Tolerancja na Bizantyjskie Wady
Strona Główna
Artykuły
Tolerancja na Bizantyjskie Wady

Tolerancja na Bizantyjskie Wady

Zaawansowany
Opublikowane Dec 6, 2018Zaktualizowane Aug 17, 2023
5m
Od czasu powstania Bitcoina w 2008 roku jako elektronicznego systemu przekazu pieniędzy w ramach sieci peer-to-peer, powstało już wiele innych kryptowalut, z których każda ma swój własny mechanizm działania. Aspektem, który łączy prawie wszystkie kryptowaluty jest łańcuch bloków (ang. blockchain), który funkcjonuje jako główny element ich architektury.

Poza kilkoma wyjątkami sieci blockchain są celowo zaprojektowane w taki sposób, aby charakteryzować się wysokim stopniem decentralizacji. Blockchain działa jako cyfrowa księga, która jest utrzymywana i zarządzana przez rozproszoną sieć węzłów komputerowych. To właśnie decentralizacja sprawiała, że technologia blockchain przyczyniła się do stworzenia systemów ekonomicznych nie potrzebujących wzajemnego zaufania ich uczestników do siebie, w których przejrzyste i wiarygodne transakcje finansowe mogą być realizowane bez potrzeby użycia i istnienia pośredników. Kryptowaluty są obecnie traktowane jako realna alternatywa dla tradycyjnych systemów bankowych i płatniczych, które w dużym stopniu uzależnione są właśnie od wzajemnego zaufania ich uczestników.

Podobnie jak w większości rozproszonych systemów komputerowych, uczestnicy sieci blockchain muszą regularnie uzgadniać i akceptować pomiędzy sobą bieżący stan łańcucha bloków, co w świecie kryptowalut nazywane jest osiągnięciem konsensusu. Jednak osiągnięcie konsensusu w sieciach rozproszonych w bezpieczny i godny zaufania sposób wcale nie jest tak łatwym zadaniem, jak by to mogło się wydawać.

Jak zatem rozproszona sieć węzłów komputerowych może zgodzić się w jakiejś sprawie, jeśli z góry wiadomym jest, że niektóre węzły mogą zawieść lub nie posiadają czystych intencji? Ta kwestia jest podstawowym założeniem, które umożliwiło sformułowanie tzw. Problemu Bizantyjskich Generałów (ang. Byzantine Generals Problem), który z kolei zrodził tzw. Bizantyjską Tolerancję na Błędy (ang. Byzantine Fault Tolerance.).


Na czym polega Problem Bizantyjskich Generałów?

W kilku słowach koncepcja BGP została stworzona w 1982 roku w formie logicznego dylematu, który ilustruje problemy grupy Bizantyjskich generałów borykających się z komunikacją, próbując zgodzić się na wspólny i skoordynowany ruch trzech różnych armii.

Dylemat zakłada, że każdy generał ma swoją własną armię oraz, że każda grupa wojskowych znajduje się w różnych miejscach obranego przez nich na cel miasta. Generałowie muszą dojść do porozumienia w kwestii podjęcia wspólnego atak lub wycofywanie się ze swoich pozycji. To czy zaatakują lub wycofają się nie ma tak naprawdę znaczenia. Ważne jest to, aby osiągnęli wspólny konsensus w danej sprawie, tj. uzgodnili wspólną decyzję, aby wykonać ją w skoordynowany sposób, gdyż w innym przypadku brak koordynacji może przynieść fatalne skutki.

W celu osiągnięcia konsensusu decyzyjnego, generałowie muszą spełnić następujące warunki:

  • Każdy z generałów musi zdecydować czy podjąć się ataku czy się wycofać (innymi słowy, odpowiadając na pytanie czy ma zaatakować: tak czy nie);
  • Po podjęciu decyzji nie może ona już ulec zmianie, jest ostateczna;
  • Wszyscy generałowie muszą dokonać takiej samej decyzji i wykonać ją w zsynchronizowany sposób.

Wymienione wcześniej problemy komunikacyjne są związane z faktem, że jeden generał może komunikować się z innym jedynie za pomocą wiadomości, które są przesyłane przez tzw. kuriera (lub gońca). W związku z tym głównym wyzwaniem z którym muszą się zmierzyć Bizantyjscy Generałowie jest to, że wiadomości z decyzją mogą zostać opóźnione w czasie, zniszczone lub całkowicie utracone.

Ponadto, nawet jeśli wiadomość od jednego generała zostanie pomyślnie dostarczona do drugiego, to jeden z generałów może zdecydować się na złośliwe działanie, będące niezgodne z prawdą - z dowolnego powodu - i wysłać nieprawdziwą wiadomość o swoich zamiarach, aby zmylić innych generałów, a tym samym prowadząc do całkowitej porażki.

Przekładając problem Bizantyjskich Generałów na sieci blockchain, to każdy węzeł w sieci odpowiada jednemu generałowi, a poprawne działanie sieci wymaga aby węzły stale doprowadzały konsensusu między sobą na temat bieżącego stanu systemu. Inaczej mówiąc, większość uczestników rozproszonej sieci musi się zgodzić i wykonać to samo działanie, aby uniknąć jej przestojów lub awarii.

Biorąc powyższe pod uwagę, jedynym sposobem osiągnięcia konsensusu w rozproszonych systemach (czyt. sieciach) jest posiadanie co najmniej ⅔ lub więcej, rzetelnych, niezawodnych i uczciwych węzłów w sieci. Oznacza to, że jeśli większość sieci zdecyduje aby działać złośliwie, system jest podatny na różnego rodzaju awarie i ataki (takie jak np. atak 51%).


Tolerancja na Bizantyjskie Wady (ang. Byzantine Fault Tolerance - BFT)

BFT w kilku słowach określa zdolność danego systemu do przetrwania i przezwyciężenia problemów znanych z dylematu Bizantyjskich Generałów. Oznacza to, że system odporny na BFT może nadal działać, nawet jeśli niektóre z węzłów nie działają lub działają złośliwie (czyt. na szkodę systemu).

Istnieje więcej niż jedno możliwe rozwiązanie problemu Bizantyńskich Generałów, a co za tym idzie wiele sposobów budowania systemu odpornego na BFT (ang. BFT resistant). Podobnie istnieje wiele różnych podejść prowadzących do osiągnięcia przez sieć blockchain stanu odporności na BFT. Te podejścia zwane są algorytmami konsensusu.


Alogorytmy konensusu w sieciach blockchain

Algorytm konsensusu, to inaczej mechanizm dzięki któremu sieć blockchain osiąga konsensus - czyli zgodę co do określonych kwestii. Najczęściej spotykanymi implementacjami są algorytmy Proof of Work (PoW) oraz Proof of Stake (PoS). W celu lepszego zrozumienia ich działania weźmiemy pod lupę blockchain kryptowaluty Bitcoin.
Podczas gdy protokół Bitcoin określa podstawowe zasady działania swojej sieci blockchain, algorytm konsensusu PoW określa w jaki sposób reguły te będą stosowane w celu osiągnięcia konsensusu (na przykład podczas weryfikacji i walidacji transakcji).
Chociaż koncepcja Dowodu Pracy (ang. PoW) jest starsza niż same kryptowaluty, Satoshi Nakamoto - twórca lub twórcy Bitcoina - opracował zmodyfikowaną wersję tego algorytmu, który umożliwił mu stworzenie Bitcoina, czyli systemu odpornego na BFT.
Należy jednak zauważyć, że algorytm PoW nie jest w 100% odporny na BFT, ale ze względu na kosztowny proces kopania (ang. mining) i leżące u jego podstaw techniki kryptograficzne, PoW okazał się jedną z najbezpieczniejszych i najbardziej niezawodnych implementacji algorytmów konsensusu dla sieci typu blockchain. Biorąc powyższe pod uwagę Proof of Work zaprojektowany przez Satoshiego Nakamoto przez wielu uważany jest za jedno z najbardziej genialnych rozwiązań problemu Bizantyjskich Generałów.


Wnioski

BGT jest przykładem intrygującego dylematu, który ostatecznie doprowadził do powstania systemów odpornych na BFT. Poza samą branżą blockchain istnieje kilka innych gałęzi, które wykorzystują systemy odporne na BFT. Są to np. przemysł lotniczy, kosmiczny i energetyki jądrowej.

W kontekście kryptowalut posiadanie efektywnej komunikacji sieciowej oraz dobrego mechanizmu konsensusu jest kluczowe dla poprawnego działania sieci blockchain. Zabezpieczanie tych systemów oznacza konieczność podejmowania coraz to nowych prób i testowania różnych podejść. Istniejące algorytmy konsensusu cały czas borykają się i próbują przeciwstawić różnym ograniczeniom (takim jak np. skalowalność). Niemniej jednak PoW i PoS są bardzo interesującymi rozwiązaniami, które są odporne na BGT, a ich potencjał z pewnością napędzi szeroko rozumiane innowacje.