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?
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
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.
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.