Gwiezdny protokół konsensusu

Protokół Stellar Consensus Protocol (SCP) jest podstawowym algorytmem konsensusu sieci Stellar, który działa jako dająca się udowodnić bezpieczna konstrukcja Federacji Bizantyjskiej Umowy (FBA). Sieć Stellar implementuje wiele podobnych mechanizmów rozproszonej odporności na błędy w całej sieci finansowej, jak inne kryptowaluty z pewnymi wyraźnymi odmianami.

Gwiezdny protokół konsensusu

SCP wywodzi się z koncepcji porozumień bizantyjskich (BA) i jest dostosowany do zdecentralizowanej i pozbawionej pozwoleń sieci przy użyciu kworów i wycinków kworum. Zrozumienie SCP wymaga krótkiej historii BA i ich porównania z FBA, a następnie opisu kworów i wycinków kworum, federacyjnego modelu głosowania i wreszcie systemu głosowania zatwierdzającego / przerywającego samego protokołu SCP.

Umowy bizantyjskie i federacyjne porozumienia bizantyjskie

Umowa bizantyjska jest Bizantyjska tolerancja błędów rozproszonych systemów obliczeniowych, które pozwalają im dojść do konsensusu pomimo arbitralnego zachowania części węzłów w sieci. Konsensus BA nie zakłada żadnych założeń dotyczących zachowania węzłów w systemie. Praktyczna bizantyjska tolerancja na błędy (pBFT) to prototypowy model porozumienia bizantyjskiego, który może szybko i skutecznie osiągnąć konsensus przy jednoczesnym oddzieleniu konsensusu od zasobów (np. Udział finansowy w PoS lub energia elektryczna w PoW).

Praktyczna bizantyjska tolerancja błędów

Przeczytaj: Co to jest praktyczna odporność na błędy bizantyjskie?

Jednak BA (pBFT) nie skaluje się dobrze i wymaga dużego narzutu komunikacyjnego między wszystkimi uczestniczącymi węzłami. Ponadto system potrzebuje jednomyślnej zgody na członkostwo w sieci, aby złagodzić skutki Sybil atakuje.

Federacyjna umowa bizantyjska została wprowadzona przez Biała księga SCP i wyraźnie odnosi się do ograniczeń BA poprzez wspieranie protokołu konsensusu, który gwarantuje, co następuje:

  • Zdecentralizowana kontrola
  • Elastyczne zaufanie
  • Małe opóźnienia
  • Asymptotyczne bezpieczeństwo

Jedną z głównych konsekwencji FBA w porównaniu z BA jest to, że system FBA jest otwarty dla węzłów łączących się bez uprawnień, a nie za pośrednictwem zamkniętej (uprawnionej) listy członkostwa.

FBA zgadza się na aktualizacje stanu za pomocą unikalnego otwór gdzie wnioskuje się o zależnościach aktualizacji między węzłami. Węzły muszą uzgodnić aktualizację slotu w każdej rundzie konsensusu. Ponieważ jednak system jest otwarty na węzły przyłączające się do sieci i opuszczające ją w dowolnym momencie, mechanizm konsensusu kworum oparty na większości nie będzie działał. Zamiast tego zatrudnia FBA w SCP plasterki kworum które są podzbiorami kworów, które są w stanie przekonać poszczególne węzły do ​​porozumienia.

Według Stellar blog:

„Kluczowa różnica między bizantyjskim systemem porozumień a federacyjnym bizantyjskim systemem porozumień (FBAS) polega na tym, że w FBA każdy węzeł wybiera własne wycinki kworum”.

Kwory i wycinki kworum zostaną omówione bardziej szczegółowo poniżej, ale głównym wnioskiem jest to, że poszczególne węzły mogą niezależnie decydować, którym innym węzłom (uczestnikom) ufają w kwestii informacji. Dlatego SCP jest pierwszym protokołem BA, który daje każdemu uczestnikowi maksymalną swobodę w wyborze, komu ufać.

Kwory i wycinki kworum

ZA kworum definiuje się jako zbiór węzłów potrzebnych do osiągnięcia porozumienia w systemie rozproszonym. Kiedy węzły próbują dojść do porozumienia, komunikują się ze sobą (przy założeniu, że żadne wiadomości nie są fałszowane – tu pojawia się kryptografia) i zgadzają się, że aktualizacja stanu jest ważna po osiągnięciu określonego progu węzłów w porozumieniu.

Plasterki kworum to podzbiory kworum, które są w stanie przekonać określone węzły do ​​porozumienia, co oznacza, że ​​węzeł może polegać na wielu zestawach węzłów potwierdzających instrukcje. Węzeł może zależeć od wielu wycinków informacji, a zaufanie to może opierać się na informacjach spoza systemu. W szczególności ustanowiono zaufanie w ciągu węzła config plik, umożliwiając dynamiczne tworzenie wycinków kworum i późniejszą decentralizację.

Jako przykład:

Węzeł A może stwierdzić, że nie ufa bankom, co powoduje potrzebę innego segmentu kworum, któremu ufa węzeł A, aby zawrzeć porozumienie z bankami. Po osiągnięciu porozumienia tworzy się kworum. Poniższa grafika jest doskonała do lepszego zrozumienia tego przykładu. Węzeł 7 (i 8) reprezentowałby węzeł A, który nie ufa bankom.

Źródło zdjęcia – David Mazieres Prezentacja w Google

Tradycyjne BA wymaga, aby wszystkie węzły akceptowały te same wycinki, zamiast rozpoznawać źródła zaufanych informacji dla siebie. W związku z tym nie ma sposobu na rozróżnienie wycinków i kworów, co wymaga dostępu do sieci zamkniętego i uprawnionego członka.

Model FBA polega na tym, że poszczególne węzły wybierają własne zestawy wycinków kworum, skutecznie umożliwiając organiczne i bardziej zdecentralizowane tworzenie kworów, które opierają się na indywidualnych decyzjach, stąd nazwa „federacja”. W dyskusji bezpieczeństwo i żywotność w protokole FBA musimy ocenić przecięcie kworum i rozłączne kwora.

Według białej księgi SCP:

„Protokół może zagwarantować zgodność tylko wtedy, gdy wycinki kworum reprezentowane przez funkcję Q spełniają właściwość ważności, którą nazywamy przecięciem kworum”.

Kwory przecinają się, jeśli mają wspólny węzeł. Dobre kwora mają wspólne węzły i prowadzą do nakładania się kworów. Węzły są odpowiedzialne za zapewnienie, że ich wybór wycinków kworum nie narusza przecięcia kworum i zazwyczaj wymaga, aby węzły wybierały wycinki, które są konserwatywne i prowadzą do dużych kworów.

Kiedy kwora się nie przecinają, nazywane są rozłączne kwora. Kwora rozłączne to złe kwory, które mogą prowadzić do sprzecznych stwierdzeń, które podważają konsensus. Aby zapewnić właściwy proces wyboru wycinków, węzły muszą się zrównoważyć bezpieczeństwo i żywotność.

Węzły nie są bezpieczne, gdy uzewnętrzniają wartości, które są sprzeczne z innymi węzłami. Węzły tracą żywotność, gdy są zablokowane w drodze do porozumienia. Model głosowania federacyjnego odgrywa kluczową rolę w uzgadnianiu przez węzły oświadczenia.

Głosowanie federacyjne

Głosowanie federacyjne to metoda, za pomocą której SCP uzgadnia oświadczenia składane przez uczestników. Ogólnie rzecz biorąc, istnieją dwa zestawy komunikatów wymienianych między węzłami, a dwie rundy komunikatów można podzielić na stany zgodności: nieznany, przyjęty, i Potwierdzony. Warto zauważyć, że głosowanie w środowisku federacyjnym musi uwzględniać otwarte członkostwo, co czyni ten proces bardziej skomplikowanym niż system zamknięty.

Proces głosowania federacyjnego składa się z 4 faz:

  1. Głosowanie wstępne
  2. Przyjęcie
  3. Ratyfikacja
  4. Potwierdzenie

Głosowanie wstępne to sytuacja, w której węzły głosują na konkretne stwierdzenie, które według nich jest ważne i że nie będą głosować za sprzecznymi oświadczeniami. Jednak to nadal pozostawia otwartą możliwość dla węzła do zmiany swojego głosu, jeśli wystarczająca liczba innych uczestniczących węzłów – którym węzeł ufa – zagłosuje na inny ważny komunikat. Głosy na tym etapie są technicznie głosami wstępnymi.

Przyjęcie jest etapem, na którym węzeł akceptuje instrukcję na podstawie tego, czy ten konkretny węzeł przyjął sprzeczną instrukcję lub blokowanie v zbiór węzłów znajdujących się w wycinkach kworum z tym węzłem (przecięcie kworum) przyjmuje instrukcję. Jeśli węzeł nie zaakceptował sprzecznej instrukcji lub zestaw węzłów blokujących v głosował za przyjęciem instrukcji, wówczas instrukcja jest akceptowana przez węzeł.

Ratyfikacja polega na tym, że wszyscy członkowie kworum głosują za przyjęciem oświadczenia. Jeśli tak, oświadczenie jest ratyfikowane przez węzły. Wracając do Węzła A, który nie ufa bankom, jeśli węzły, z którymi Węzeł A dzieli wycinek kworum, oprócz innych węzłów, którym ufa, głosują za przyjęciem oświadczenia, wówczas jest to ratyfikowane przez Węzeł A.

Potwierdzenie to ogólnosystemowa zgoda na oświadczenie. System uzgadnia określone oświadczenie po przetworzeniu wystarczającego progu komunikatów w sieci. Węzły propagują komunikaty akceptacji w sieci z węzłów należących do ich kworum. Te wiadomości mogą wpływać na inne węzły, aby zaakceptowały wiadomość, nawet jeśli zaakceptowały inną wiadomość początkową. Na koniec nadawana jest runda komunikatów potwierdzających w celu potwierdzenia komunikatu, kończąca rundę głosowania.

Mechanizm głosowania jest skomplikowany, ale Stellar oferuje doskonałe zasoby, jak lepiej go zmapować. Zapewniają „Konsensus galaktyczny”Dla szerszego przeglądu, a także przydatnego posta na blogu przy użyciu rozszerzenia Przykład w porze lunchu. Szczegółowe informacje techniczne można znaleźć w sekcji Głosowanie federacyjne w Papier SCP.

Protokół Gwiezdnego Konsensusu

SCP to implementacja protokołu Federated Bizantine Agreement, mająca na celu zminimalizowanie przypadków zablokowania porozumienia i zneutralizowanie ich za pomocą systemu głosowania. Protokół SCP składa się z 2 podstawowych protokołów podrzędnych, protokołu nominacji i protokołu do głosowania.

Dla każdego przedziału konsensusu protokół nominacji generuje wartości kandydatów. Ostatecznie każdy węzeł może deterministycznie generować wartość zbieżności dla każdego gniazda. Jednak nie mogą wiedzieć gdy nastąpi konwergencja, a złośliwe węzły mogą być w stanie zresetować proces nominacji.

Protokół głosowania jest wykonywany, gdy węzły uzgodnią, że protokół nominacji jest zbieżny. W protokole do głosowania karta do głosowania jest powiązana z wartością kandydata, a węzeł musi popełnić lub anulować wartość przypisana do tej karty do głosowania. Aby uniknąć blokowania zgody, węzły mogą przerwać niektóre głosy i przejść do kolejnego. I odwrotnie, węzły mogą głosować za zatwierdzeniem karty do głosowania, co eksternalizuje wartość związaną z tą kartą do przedziału konsensusu.

Na wysokim poziomie sposób, w jaki SCP traktuje każdy slot niezależnie, jest podobny do konsensusu pojedynczego miejsca Paxos, tylko z wieloma oddzielnymi instancjami.

W SCP nie ma żadnych zablokowanych stanów z przecięciem kworum. Zainfekowane węzły – węzły, które w dużym stopniu opierają się na złych węzłach – można nawet ominąć za pomocą zbędnego mechanizmu zestawu, w którym dobre węzły mogą ratyfikować instrukcje bez współpracy splugawionych węzłów. Węzły, do których doszło, nie mogą również podważyć konsensusu.

Zarówno protokół nominacji, jak i protokół głosowania zawierają bardzo złożone szczegóły dotyczące konkretnych scenariuszy, takich jak głosowanie podzielone. Te szczegóły są również dostępne w dokumencie SCP.

Jednym z ograniczeń SCP jest to, że może zagwarantować bezpieczeństwo tylko wtedy, gdy węzły wybiorą odpowiednie wycinki kworum. Ponadto możliwe są problemy z bezpieczeństwem w systemach federacyjnych, takie jak powszechnie zaufane węzły wykorzystujące swoje pozycje do nieetycznych korzyści. Na przykład, jeśli banki są zależne od dużej liczby węzłów, mogą mieć przewagę informacyjną niedostępną dla innych węzłów w sieci.

Wniosek

Ogólnie rzecz biorąc, SCP to pierwszy możliwy do udowodnienia bezpieczny protokół konsensusu, który może zapewnić zdecentralizowaną kontrolę, małe opóźnienia, elastyczne zaufanie i asymptotyczne bezpieczeństwo. Różne formy konsensusu wiążą się z kompromisami, ale SCP utrzymuje wysoki poziom skuteczności, umożliwiając szybkie osiągnięcie konsensusu w rozproszonej sieci bez pozwolenia bez poświęcania bezpieczeństwa.