Czym jest Byzantine Fault Tolerance (BFT)?

Czym jest Byzantine Fault Tolerance (BFT)?

Byzantine Fault Tolerance (BFT) to w skrócie zdolność sieci komputerowej do dalszego poprawnego działania, gdy część uczestników przestaje działać, popełnia błędy lub celowo rozpowszechnia nieprawdziwe informacje.

Jest to szczególnie istotne dla blockchainów. Blockchain nie ma centralnego administratora, który decyduje, które transakcje i bloki są ważne. Zamiast tego rozproszone komputery, nazywane także węzłami lub walidatorami, muszą wspólnie osiągnąć porozumienie co do jednej wersji blockchaina.

Walidator może ulec awarii na różne sposoby, a mianowicie może wystąpić zwykły błąd albo Byzantine Fault. W przypadku zwykłego błędu dla sieci jest jasne, że walidator nie działa prawidłowo. Na przykład przestaje odpowiadać, traci połączenie z internetem albo nie wysyła wiadomości na czas. Wówczas nie dostarcza użytecznych informacji. Blockchain zazwyczaj potrafi sobie z tym stosunkowo łatwo poradzić. Pozostali walidatorzy nie czekają bez końca, lecz po pewnym czasie kontynuują pracę bez niedziałającego walidatora. Dopóki działa wystarczająco wielu innych walidatorów, sieć nadal przetwarza nowe bloki.

W przypadku Byzantine fault walidator zachowuje się nie tylko wadliwie, lecz także nieprzewidywalnie. Nadal może wysyłać wiadomości, ale przekazuje w nich nieprawdziwe lub sprzeczne informacje. Może na przykład powiedzieć jednemu walidatorowi, że blok A jest ważny, a innemu walidatorowi, że blok B jest ważny.

Różnica jest więc następująca:

  • W przypadku zwykłego błędu brakuje informacji od walidatora.
  • W przypadku Byzantine fault informacja istnieje, ale nie wiadomo, czy jest poprawna.

Dlatego Byzantine fault jest trudniejszy do rozwiązania. Sieć musi nie tylko być w stanie działać dalej bez niedziałającego walidatora, lecz także zapobiegać temu, by nieprawdziwe lub sprzeczne wiadomości prowadziły do błędnej decyzji.

Byzantine Fault Tolerance opisuje, w jaki sposób sieć mimo takich problemów może podjąć jedną wspólną decyzję. Protokół wykorzystuje w tym celu m.in. mechanizmy weryfikacji, podpisy cyfrowe, różne rundy głosowania oraz wysoki próg głosów.

Wiele protokołów BFT wymaga, aby ponad dwie trzecie całkowitej wagi głosów poparło tę samą propozycję, zanim blok stanie się ostateczny. Dzięki temu niewielka grupa wadliwych lub złośliwych walidatorów nie może samodzielnie decydować, która wersja blockchaina jest ważna.

BFT nie jest odrębnym mechanizmem konsensusu. Jest to cecha sieci lub protokołu konsensusu. Protokoły takie jak PBFT, Tendermint i HotStuff stosują własne reguły, aby tolerować Byzantine faults.


Najważniejsze informacje

  • Byzantine Fault Tolerance pomaga blockchainowi radzić sobie z wadliwymi lub niewiarygodnymi walidatorami.
  • Byzantine fault może wynikać z awarii technicznej, błędu oprogramowania lub celowego ataku.
  • Walidatorzy weryfikują propozycje i głosują nad nowymi blokami.
  • Wiele protokołów BFT wymaga poparcia ponad dwóch trzecich całkowitej wagi głosów.
  • BFT pomaga zapobiegać jednoczesnemu uznaniu za ostateczne kilku wersji blockchaina.
  • PBFT, Tendermint i HotStuff to przykłady protokołów BFT.

Jakie problemy rozwiązuje Byzantine Fault Tolerance?

Byzantine Fault Tolerance zapobiega temu, aby niewielka grupa wadliwych lub złośliwych walidatorów mogła samodzielnie decydować, która wersja blockchaina jest ważna. Pomaga sieci zachować jedną wspólną historię transakcji, nawet gdy część uczestników wypada z działania, nie reaguje lub rozpowszechnia nieprawdziwe informacje.

Niewiarygodny walidator może na przykład wysyłać różne bloki do różnych uczestników, głosować na dwa sprzeczne bloki lub próbować doprowadzić do zatwierdzenia nieważnego bloku. Walidator może też odmówić współpracy i w ten sposób spowalniać osiągnięcie konsensusu.

Bez odpowiednich reguł różne grupy walidatorów mogłyby w konsekwencji podążać za inną wersją blockchaina. Sieć nie byłaby wtedy w stanie z pewnością określić, które transakcje i bloki są ważne.

BFT zapobiega temu, potwierdzając blok dopiero wtedy, gdy wystarczająco wielu walidatorów zweryfikowało i poparło tę samą propozycję. Dzięki temu ograniczona grupa niewiarygodnych uczestników nie może samodzielnie wprowadzić sieci w błąd.

Uczestnicy nie muszą przy tym ufać sobie osobiście. Ufają stałym regułom protokołu konsensusu, takim jak podpisy cyfrowe, rundy głosowania oraz wysoki próg głosów.

Dzięki BFT możliwe jest utrzymywanie jednej współdzielonej i spójnej wersji blockchaina bez centralnego administratora.

Jak działa Byzantine Fault Tolerance?

Aby dobrze zrozumieć Byzantine Fault Tolerance, warto najpierw poznać różnicę względem mechanizmu konsensusu.

Mechanizm konsensusu to zestaw reguł, dzięki którym uczestnicy blockchaina osiągają porozumienie w sprawie nowych bloków oraz ważnej historii sieci. Określa na przykład, kto może zaproponować blok, jak walidatorzy nad nim głosują oraz kiedy blok zostaje potwierdzony lub staje się ostateczny.

Byzantine Fault Tolerance to cecha, która sprawia, że ten proces nadal działa, gdy część walidatorów przestaje działać, popełnia błędy lub wysyła nieprawdziwe informacje.

BFT nie jest więc zazwyczaj osobnym systemem obok mechanizmu konsensusu. Składa się z reguł w ramach procesu konsensusu, które uniemożliwiają niewiarygodnym walidatorom wprowadzenie blockchaina w błąd. Można tu wskazać na przykład wysoki próg głosów, podpisy cyfrowe, wiele rund głosowania oraz zastępowanie walidatora, który nie proponuje poprawnego bloku.

Dokładne działanie różni się w zależności od blockchaina, jednak w wielu protokołach BFT proces przebiega w przybliżeniu podobnie.

Jeden walidator jest tymczasowo wyznaczany do zaproponowania nowego bloku. Tego walidatora często nazywa się proposerem lub liderem. W bloku znajdują się nowe transakcje oraz odwołanie do poprzedniego bloku. Proposer podpisuje propozycję cyfrowo, aby inni walidatorzy mogli sprawdzić, od kogo pochodzi.

Pozostali walidatorzy sprawdzają następnie, czy blok jest ważny. Weryfikują na przykład, czy transakcje spełniają reguły, czy użytkownicy mają wystarczające saldo oraz czy te same tokeny nie są wydawane podwójnie. Sprawdzają także, czy blok pasuje do właściwej wersji blockchaina.

Gdy walidator uzna blok za ważny, oddaje cyfrowy głos. Dzięki temu podpisowi sieć widzi, kto głosował, którego bloku dotyczył głos oraz czy walidator głosował także na blok sprzeczny.

W tym miejscu pojawia się Byzantine Fault Tolerance. Sieć nie opiera się na decyzji jednego walidatora. W wielu protokołach BFT ponad dwie trzecie całkowitej wagi głosów musi poprzeć ten sam blok, aby mógł stać się ostateczny.

Ten wysoki próg głosów zapewnia, że niewielka grupa wadliwych lub złośliwych walidatorów nie może samodzielnie decydować, który blok jest ważny. Gdy kilku walidatorów wysyła nieprawdziwe informacje lub nie reaguje, pozostali walidatorzy nadal mogą wspólnie dojść do jednej decyzji.

Przykład: Ethereum używa Proof of Stake oraz reguł podobnych do BFT, aby nadawać blokom finalność. Walidatorzy blokują ETH i następnie głosują na punkty kontrolne w blockchainie. Co najmniej dwie trzecie całkowitej liczby zestakowanych ETH musi poprzeć ten sam punkt kontrolny, aby stał się ostateczny. Gdy niewielka część walidatorów wypada z działania lub głosuje błędnie, Ethereum nadal może osiągnąć finalność. Jeśli około jedna trzecia całkowitej wagi głosów nie uczestniczy prawidłowo, finalność może się tymczasowo zatrzymać. Ethereum stosuje w tym celu inactivity leak: walidatorzy, którzy przez dłuższy czas nie uczestniczą, stopniowo tracą część swojego stake. Dzięki temu aktywni walidatorzy mogą ostatecznie znów reprezentować wystarczającą wagę głosów, aby osiągnąć finalność.

W sieciach Proof-of-Stake zazwyczaj liczy się więc nie tylko liczba walidatorów, lecz przede wszystkim ich waga głosu. Ta waga zależy od liczby tokenów, które zestakowali.

Niektóre protokoły konsensusu wykorzystują wiele rund głosowania. Znanym przykładem jest Tendermint, obecnie rozwijany dalej jako CometBFT i używany przez wiele blockchainów w ekosystemie Cosmos, w tym Cosmos Hub. Walidatorzy najpierw głosują nad zaproponowanym blokiem, a następnie w kolejnej rundzie potwierdzają, że wystarczająco wielu innych walidatorów popiera tę samą propozycję. W ten sposób sieć sprawdza nie tylko, czy blok jest ważny, lecz także czy istnieje co do niego szerokie porozumienie.

Może się też zdarzyć, że nie uda się uzyskać wystarczającego poparcia. Proposer może na przykład być offline, zaproponować nieważny blok lub rozpowszechniać sprzeczne propozycje. Mechanizm konsensusu po określonym czasie oczekiwania rozpoczyna wówczas nową rundę z innym proposerem.

To również stanowi element tolerancji błędów. Jeden wadliwy lub złośliwy walidator nie może w ten sposób blokować sieci bez ograniczeń.

Mechanizm konsensusu określa zatem, jak blockchain wspólnie podejmuje decyzje. Byzantine Fault Tolerance sprawia, że to podejmowanie decyzji pozostaje wiarygodne, gdy nie każdy uczestnik działa poprawnie.

Krótkie podsumowanie: jak działa Byzantine Fault Tolerance?

  1. Mechanizm konsensusu określa, który walidator może zaproponować blok i jak inni walidatorzy nad nim głosują.
  2. Pozostali walidatorzy sprawdzają, czy zaproponowany blok jest ważny.
  3. BFT sprawia, że sieć nie ufa jednemu walidatorowi, lecz podejmuje decyzję dopiero wtedy, gdy duża większość popiera ten sam blok.
  4. Podpisy cyfrowe pokazują, kto na co głosował oraz czy walidator oddał sprzeczne głosy.
  5. W wielu protokołach BFT do nadania blokowi finalności potrzebne jest ponad dwie trzecie całkowitej wagi głosów.
  6. Gdy proposer wypada z działania, kłamie lub nie uzyskuje ważnej większości, protokół rozpoczyna nową rundę głosowania z innym proposerem.
  7. Rola BFT polega więc na utrzymaniu wiarygodności konsensusu, gdy część walidatorów wypada z działania, popełnia błędy lub celowo rozpowszechnia nieprawdziwe informacje.

Co mają chronić safety i liveness?

Byzantine Fault Tolerance ma sprawić, że blockchain pozostanie wiarygodny, gdy część walidatorów wypada z działania, popełnia błędy lub rozpowszechnia nieprawdziwe informacje. Przy tym sieć musi zapobiegać dwóm problemom.

Po pierwsze, walidatorzy nie mogą dojść do dwóch różnych ostatecznych wersji blockchaina. Po drugie, sieć powinna, o ile to możliwe, dalej przetwarzać nowe bloki i transakcje.

Te dwa cele w ramach BFT nazywa się safety i liveness.

Safety: brak dwóch różnych wersji

Safety oznacza, że sieć nie akceptuje dwóch sprzecznych bloków jako ostatecznych.

Załóżmy, że dwie grupy walidatorów otrzymują różne bloki. Bez jasnych reguł obie grupy mogłyby uznać, że ich własna wersja jest ważna. Blockchain mógłby wtedy mieć dwie różne historie transakcji.

Protokoły BFT starają się temu zapobiegać, stosując wysoki próg głosów, wiele rund głosowania oraz cyfrowo podpisane głosy. Mogą też obowiązywać reguły, które uniemożliwiają walidatorom swobodne głosowanie na inny blok po tym, jak wcześniej wsparli już pewną propozycję.

Safety sprawia więc, że uczciwi uczestnicy nadal podążają za tą samą ostateczną wersją blockchaina, nawet jeśli część walidatorów rozpowszechnia sprzeczne informacje.

Liveness: sieć nadal działa

Liveness oznacza, że sieć może dalej podejmować nowe decyzje.

To znaczy, że powstają nowe bloki, transakcje są przetwarzane, a wadliwy lub złośliwy proposer może zostać zastąpiony, jeśli wstrzymuje proces.

Protokoły BFT wykorzystują do tego na przykład czasy oczekiwania oraz nowe rundy głosowania. Jeśli proposer nie proponuje ważnego bloku lub nie reaguje, po pewnym czasie kolej przejmuje inny walidator.

Safety i liveness mogą czasem wchodzić ze sobą w konflikt. Gdy zbyt wielu walidatorów jest offline lub rozpowszechnia różne informacje, sieć może nie być w stanie zebrać wystarczającej liczby wiarygodnych głosów.

Protokół może wówczas zdecydować, by tymczasowo nie nadawać blokom finalności. Blockchain przez chwilę nie robi postępu, ale unika zatwierdzenia dwóch różnych wersji.

Dlatego w sytuacji poważnej niepewności protokoły BFT zazwyczaj nadają priorytet safety. Sieć woli zatrzymać się na jakiś czas, niż nadać finalność potencjalnie błędnej lub sprzecznej wersji blockchaina.

Jaka jest różnica między Byzantine Fault Tolerance a Byzantine Generals Problem?

Byzantine Generals Problem i Byzantine Fault Tolerance są ze sobą powiązane, ale nie oznaczają tego samego.

Byzantine Generals Problem to eksperyment myślowy, który pokazuje, dlaczego osiągnięcie porozumienia jest trudne w sieci bez centralnego decydenta. W historii kilku generałów musi wspólnie zdecydować, czy zaatakować, czy się wycofać. Komunikują się wyłącznie za pomocą wiadomości, a część generałów może kłamać lub rozpowszechniać sprzeczne informacje.

W blockchainie występuje w praktyce ten sam problem. Walidatorzy muszą wspólnie zdecydować, które transakcje i bloki są ważne, nie mając pewności, czy każdy uczestnik jest uczciwy i wiarygodny.

Byzantine Fault Tolerance opisuje następnie, jak sieć radzi sobie z tym problemem. Sprawia, że walidatorzy mimo to mogą dojść do jednej wspólnej decyzji, nawet gdy część uczestników wypada z działania, popełnia błędy lub wysyła nieprawdziwe informacje.

Byzantine Generals Problem opisuje więc problem. Byzantine Fault Tolerance to zdolność sieci do rozwiązania tego problemu. Konkretne reguły, dzięki którym to się odbywa, takie jak rundy głosowania, podpisy cyfrowe oraz wysoki próg głosów, składają się łącznie na protokół BFT.

Jak blockchains stosują Byzantine Fault Tolerance?

Blockchains mogą stosować Byzantine Fault Tolerance na różne sposoby. Nie każda sieć używa tego samego protokołu, lecz cel jest zawsze podobny: walidatorzy muszą wspólnie wybrać jedną ważną wersję blockchaina, nawet gdy część z nich wypada z działania lub rozpowszechnia nieprawdziwe informacje.

Różnice dotyczą głównie sposobu wyboru walidatora, który proponuje blok, liczby wymaganych rund głosowania oraz momentu, w którym blok staje się ostateczny. Zależy też od protokołu, co dzieje się, gdy walidatorzy nie reagują lub oddają sprzeczne głosy.

Practical Byzantine Fault Tolerance

Practical Byzantine Fault Tolerance, najczęściej skracane do PBFT, to jeden z najbardziej znanych protokołów BFT. Został opracowany przez Miguela Castro i Barbarę Liskov, aby uczynić Byzantine Fault Tolerance użytecznym w rzeczywistych systemach komputerowych.

PBFT działa z jednym tymczasowym liderem, który wysyła propozycję do pozostałych uczestników. Ci weryfikują propozycję, a następnie dzielą się między sobą informacją, czy uznają ją za ważną. Potem potwierdzają, że wystarczająco wielu uczestników popiera tę samą propozycję.

Dzięki tym różnym rundom komunikacji sieć może sprawdzić, czy rzeczywiście istnieje szerokie porozumienie. PBFT działa szczególnie dobrze w przypadku stosunkowo niewielkiej grupy znanych uczestników. Gdy grupa rośnie, trzeba wymieniać coraz więcej wiadomości. To sprawia, że protokół jest mniej efektywny dla blockchainów z bardzo dużą liczbą walidatorów.

Tendermint BFT

Tendermint BFT jest wykorzystywany przez wiele blockchainów w ekosystemie Cosmos. W Tendermint najpierw jeden walidator proponuje blok. Następnie odbywają się dwie rundy głosowania, w których walidatorzy wskazują, czy popierają blok.

Blok staje się ostateczny dopiero wtedy, gdy zgodzi się na niego ponad dwie trzecie wagi głosów. Tendermint wykorzystuje dodatkowo mechanizm blokowania (locking). Gdy walidator widzi, że blok ma wystarczające poparcie, zostaje niejako „zablokowany” na tym bloku.

Walidator nie może potem po prostu zagłosować na sprzeczny blok. Pomaga to zapobiegać zatwierdzeniu w różnych rundach dwóch sprzecznych bloków.

HotStuff

HotStuff to nowocześniejszy protokół BFT, który stara się zastosować tę samą podstawową ideę w bardziej efektywny sposób. Także tutaj tymczasowy lider proponuje bloki i wymagane jest wystarczające poparcie walidatorów.

HotStuff może podsumowywać poparcie walidatorów w postaci quorum certificate. Jest to kryptograficzny dowód, że wystarczająco wielu walidatorów poparło tę samą propozycję. Walidatorzy nadal muszą przesyłać swoje głosy, ale quorum certificate pozwala przekazać dowód tego szerokiego poparcia w zwięzłej formie. HotStuff zaprojektowano także tak, aby komunikacja i zmiana lidera przebiegały sprawniej.

Dzięki temu nie ma potrzeby przetwarzania każdorazowo wszystkich pojedynczych głosów osobno. Protokół został też zaprojektowany tak, aby szybciej zmieniać lidera, gdy obecny lider nie działa prawidłowo.

Różne nowoczesne protokoły blockchain są w całości lub częściowo inspirowane HotStuff.

Ethereum

Ethereum nie korzysta z klasycznej formy PBFT, Tendermint ani HotStuff. Sieć używa Proof of Stake, w którym walidatorzy głosują za pomocą ETH, które zestakowali. Mimo to wyraźnie widać zasady BFT w sposobie, w jaki Ethereum osiąga finalność.

Walidatorzy głosują nad punktami kontrolnymi w blockchainie. Punkt kontrolny staje się ostateczny dopiero wtedy, gdy poprze go co najmniej dwie trzecie całkowitej liczby zestakowanych ETH.

Gdy ponad jedna trzecia wagi głosów nie współpracuje, finalność może się tymczasowo zatrzymać. Sieć woli wtedy czekać na wystarczającą liczbę wiarygodnych głosów, zamiast nadawać finalność dwóm różnym wersjom.

Walidatorzy, którzy w sposób możliwy do wykazania głosują na sprzeczne wersje, mogą zostać ukarani. Nazywa się to slashing. Kara ekonomiczna wspiera tu reguły BFT: walidatorzy mogą rozpowszechniać nieprawdziwe informacje, ale takie zachowanie jest widoczne i może mieć konsekwencje.

Bitcoin

Bitcoin rozwiązuje ten sam podstawowy problem w inny sposób. Sieć również musi osiągnąć porozumienie, gdy uczestnicy nie ufają sobie w pełni, lecz nie stosuje klasycznego protokołu BFT opartego na głosowaniu.

Bitcoin wykorzystuje Proof of Work. Minerzy używają mocy obliczeniowej do tworzenia nowych bloków, po czym węzły sprawdzają, czy te bloki są ważne. Minerzy budują dalej na ważnym łańcuchu, w który zainwestowano najwięcej skumulowanej pracy obliczeniowej.

Blok nie jest tu od razu ostateczny. Prawdopodobieństwo, że zostanie cofnięty, maleje wraz z tym, jak powstaje więcej bloków nad nim. Nazywa się to finalnością probabilistyczną.

Bitcoin stara się więc rozwiązać ten sam ogólny problem co protokoły BFT: jak utrzymać jedną wiarygodną historię, gdy nie każdy uczestnik jest godny zaufania? Różnica polega na tym, że Bitcoin wykorzystuje moc obliczeniową i koszty ekonomiczne, podczas gdy klasyczne protokoły BFT działają głównie poprzez jawne rundy głosowania oraz wysoki próg głosów.

Co się dzieje, gdy walidatorzy nie współpracują?

To, co dzieje się, gdy walidatorzy wypadają z działania lub postępują nieprawidłowo, zależy od tego, jaką łączną wagę głosów reprezentują.

Gdy tylko niewielka grupa walidatorów nie współpracuje, pozostali walidatorzy zazwyczaj nadal mogą zebrać wystarczające poparcie, aby potwierdzać nowe bloki. Sieć działa wtedy normalnie, nawet jeśli nie każdy walidator jest aktywny lub wiarygodny.

Sytuacja zmienia się, gdy ponad jedna trzecia całkowitej wagi głosów nie uczestniczy. W wielu protokołach BFT sieć nie jest wtedy w stanie zebrać wymaganego poparcia przekraczającego dwie trzecie. W efekcie nowe bloki mogą tymczasowo nie uzyskiwać finalności. Taka grupa może więc blokować postęp, ale zazwyczaj nie może samodzielnie zatwierdzić sprzecznej wersji blockchaina.

Gdy grupa kontroluje ponad dwie trzecie wagi głosów i działa wspólnie, może samodzielnie zbudować wystarczające poparcie do potwierdzania bloków. Taka grupa może wówczas decydować, które ważne bloki osiągają finalność, oraz może cenzurować transakcje, nie umieszczając ich w blokach. Aby nadać finalność dwóm sprzecznym wersjom, walidatorzy musieliby jednak w sposób możliwy do wykazania naruszyć reguły konsensusu, co w wielu sieciach Proof-of-Stake może prowadzić do slashing.

Dlatego ważna jest nie tylko liczba walidatorów, lecz przede wszystkim rozkład wagi głosów. Blockchain może mieć tysiące walidatorów, a mimo to być relatywnie skoncentrowany, jeśli niewielka liczba podmiotów kontroluje dużą część zestakowanych tokenów.

Jak karze się złośliwych walidatorów?

Blockchains Proof-of-Stake mogą karać walidatorów, gdy można wykazać, że naruszyli reguły konsensusu. Nazywa się to slashing.

Walidator może zostać ukarany na przykład wtedy, gdy zagłosuje na dwa sprzeczne bloki albo spróbuje wspierać dwie różne wersje blockchaina. Ponieważ każdy głos jest podpisany cyfrowo, sieć może sprawdzić, który walidator dopuścił się naruszenia.

Kara różni się w zależności od blockchaina. Walidator może stracić nagrody za staking, utracić część zestakowanych tokenów lub zostać tymczasowo usunięty z zestawu walidatorów. W przypadku poważnych naruszeń wykluczenie może trwać dłużej albo być permanentne.

Slashing nie sprawia, że oszustwo jest niemożliwe, ale zwiększa konsekwencje finansowe. Walidator łamiący reguły konsensusu ryzykuje utratą części własnej wniesionej wartości.

Jakie są zalety Byzantine Fault Tolerance?

Byzantine Fault Tolerance ma kilka zalet:

  1. Sieć może działać mimo błędów: Nie każdy walidator musi być zawsze online lub działać bezbłędnie. O ile wystarczająco wielu walidatorów nadal działa poprawnie, sieć może dalej przetwarzać nowe bloki.
  2. Blockchain zachowuje jedną wspólną historię: BFT pomaga zapobiegać temu, by różne grupy walidatorów nadawały finalność sprzecznym blokom. Dzięki temu uczciwi uczestnicy podążają za tą samą wersją blockchaina.
  3. Bloki mogą szybko uzyskiwać finalność: Wiele protokołów BFT nadaje blokowi finalność, gdy tylko poprze go wystarczająco wielu walidatorów. Użytkownicy często nie muszą więc czekać na wiele dodatkowych bloków.
  4. Zachowanie walidatorów jest weryfikowalne: Głosy są podpisywane cyfrowo. Dzięki temu sieć widzi, który walidator głosował na który blok oraz czy ktoś oddał sprzeczne głosy.
  5. Nie jest potrzebny centralny decydent: Walidatorzy mogą wspólnie określać, które bloki są ważne, bez tego, by jedna centralna strona podejmowała wszystkie decyzje.

Jakie są wady Byzantine Fault Tolerance?

Byzantine Fault Tolerance ma również kilka wad:

  1. Sieć może tymczasowo się zatrzymać: Gdy zbyt mało walidatorów uczestniczy, nie da się utworzyć wymaganego quorum. Sieć może wtedy nadal proponować bloki, ale nie może nadawać im finalności. Transakcje pozostają przez to dłużej niepewne, a użytkownicy muszą czekać, aż wystarczająco wielu walidatorów znów zacznie uczestniczyć.
  2. Walidatorzy muszą wymieniać dużo informacji: Walidatorzy muszą w trakcie procesu konsensusu przekazywać sobie propozycje, głosy oraz potwierdzenia. Wraz ze wzrostem liczby walidatorów rośnie również ilość komunikacji. Może to spowalniać sieć oraz wymagać większej przepustowości i mocy obliczeniowej.
  3. Protokoły BFT są technicznie skomplikowane: Te protokoły opierają się na wielu rundach głosowania, czasach oczekiwania, tymczasowych liderach oraz regułach określających, kiedy walidator może zmienić głos. Błąd w tych regułach lub w oprogramowaniu może sprawić, że walidatorzy utkną, przetwarzają różne informacje albo tymczasowo nie osiągną konsensusu.
  4. Waga głosów może się koncentrować: Blockchain może mieć wielu walidatorów, a mimo to kilka dużych podmiotów stakingowych lub organizacji może łącznie kontrolować znaczną część wagi głosów. Jeśli te podmioty kontrolują ponad jedną trzecią wagi głosów, mogą potencjalnie wstrzymywać finalność. Przy kontroli ponad dwóch trzecich mogą silnie wpływać na to, które bloki są potwierdzane.
  5. BFT chroni wyłącznie warstwę konsensusu: BFT pomaga walidatorom osiągać porozumienie co do ważnego blockchaina, ale nie zabezpiecza wszystkich elementów sieci. Transakcja może na przykład zostać poprawnie potwierdzona, mimo że użyty smart contract zawiera błąd. BFT nie zapobiega też przejęciu walletów, podatnym bridges, błędnym danym cenowym z oracles, problemom na crypto-exchanges ani stratom wynikającym ze spadków kursów.

Podsumowanie

Byzantine Fault Tolerance sprawia, że blockchain może działać wiarygodnie, gdy część walidatorów wypada z działania, popełnia błędy lub celowo rozpowszechnia nieprawdziwe informacje. Sieć nie opiera się przy tym na jednym uczestniku, lecz wykorzystuje między innymi podpisy cyfrowe, rundy głosowania oraz wysoki próg głosów, aby dojść do jednej wspólnej decyzji.

BFT nie jest odrębnym mechanizmem konsensusu, lecz cechą procesu konsensusu. Pomaga zapobiegać jednoczesnemu nadaniu finalności różnym wersjom blockchaina i sprawia, że sieć, o ile uczestniczy w niej wystarczająco wielu walidatorów, może dalej przetwarzać nowe bloki.

Blockchains stosują te zasady na różne sposoby. Tendermint używa wielu rund głosowania i reguł blokowania, Ethereum wykorzystuje reguły podobne do BFT dla finalności, a Bitcoin rozwiązuje podobny problem za pomocą Proof of Work i finalności probabilistycznej.

Byzantine Fault Tolerance nie czyni blockchaina w pełni odpornym na wszystkie błędy i ataki. Stanowi jednak ważną podstawę dla sieci, w których uczestnicy nie muszą sobie w pełni ufać, a mimo to mogą wspólnie utrzymywać jedną ważną historię transakcji.

O Finst

Finst to wiodąca platforma kryptowalutowa w Holandii, oferująca bardzo niskie opłaty transakcyjne, bezpieczeństwo klasy instytucjonalnej oraz szeroki zakres usług crypto, takich jak trading, przechowywanie aktywów, staking oraz wpłaty i wypłaty fiat. Finst, założona przez byłych kluczowych członków zespołu DEGIRO, jest autoryzowana jako dostawca usług w zakresie kryptoaktywów na mocy MiCAR przez Holenderski Urząd ds. Rynków Finansowych (AFM) i obsługuje klientów detalicznych oraz instytucjonalnych w 30 krajach europejskich.

Platforma krypto dla wszystkich inwestorów

Niezależnie od tego, czy aktywnie handlujesz, czy inwestujesz długoterminowo, Finst pomaga Ci rozwijać portfel krypto z pewnością i spokojem.

Zarejestruj się