Co to jest gra walidacyjna lub „jak uruchomić blockchain typu proof-of-stake”

Zatem Twój zespół ukończył wersję alfa Twojego łańcucha bloków i nadszedł czas na uruchomienie sieci testowej, a następnie sieci głównej. Masz prawdziwy blockchain, z niezależnymi uczestnikami, dobrym modelem ekonomicznym, bezpieczeństwem, zaprojektowałeś zarządzanie i teraz nadszedł czas, aby wypróbować to wszystko w działaniu. W idealnym świecie kryptoanarchicznym umieszczasz w sieci blok genezy, ostateczny kod węzła, a walidatorzy sami uruchamiają wszystko, uruchamiają wszystkie usługi pomocnicze i wszystko dzieje się samo. Ale to jest w fikcyjnym świecie, ale w prawdziwym świecie zespół musi przygotować całkiem sporo oprogramowania pomocniczego i różnych manipulacji, aby pomóc walidatorom uruchomić stabilną sieć. O tym właśnie jest ten artykuł.

Uruchamianie sieci opartych na konsensusach typu „proof-of-stake”, gdzie walidatory wyznaczane są głosami posiadaczy tokenów systemowych, jest wydarzeniem dość specyficznym, gdyż nawet uruchomienie tradycyjnych, centralnie zarządzanych systemów z dziesiątkami i setkami serwerów nie jest sprawą łatwą zadaniem samym w sobie, a blockchain należy rozpocząć od lojalnych, ale niezależnych uczestników. A jeśli w korporacji po uruchomieniu administratorzy mają pełny dostęp do wszystkich maszyn, logów, ogólnego monitoringu, to walidatorzy nie pozwolą nikomu na dostęp do swoich serwerów i najprawdopodobniej będą woleli budować swoją infrastrukturę samodzielnie, bo to ona kontroluje dostęp do głównych atutów walidatora – stawek wyborców. To właśnie takie zachowanie umożliwia budowanie rozproszonych bezpiecznych sieci - niezależność wykorzystywanych dostawców chmury, serwery wirtualne i „baremetalowe”, różne systemy operacyjne, wszystko to pozwala sprawić, że ataki na taką sieć będą wyjątkowo nieskuteczne - zbyt różne używane jest oprogramowanie. Na przykład Ethereum wykorzystuje dwie główne implementacje węzłów, w Go i Rust, a atak skuteczny w jednej implementacji nie działa w drugiej.

Dlatego wszystkie procesy uruchamiania i obsługi blockchainów muszą być zorganizowane w taki sposób, aby każdy walidator, czy nawet niewielka grupa walidatorów, mogła w każdej chwili wyrzucić swój komputer przez okno i wyjść, a nic nie powinno się zepsuć, a pozostali walidatorzy powinni w dalszym ciągu skutecznie wspierać sieć operacyjną i podłączać nowe walidatory. Uruchamiając sieć, gdy jeden walidator znajduje się w Europie, drugi w Ameryce Południowej, a trzeci w Azji, dość trudno jest osiągnąć skoordynowaną pracę kilkudziesięciu niezależnych grup i w efekcie ich zainteresować.

Walidatory

Wyobraźmy sobie uruchomienie hipotetycznego nowoczesnego blockchainu (większość z tego, co opisano, nadaje się dla blockchainów opartych na dowolnej nowoczesnej rodzinie blockchainów: Ethereum, EOS, Polkadot, Cosmos i innych, które zapewniają konsensus „proof-of-stake”). Główni bohaterowie takie blockchainy to zespoły walidatorów, zajmujące się instalacją własnych niezależnych serwerów, które weryfikują i produkują nowe bloki oraz otrzymują nagrody zapewniane przez sieć dla tych, którzy uczestniczą w konsensusie. Do uruchomienia nowych sieci potrzeba kilkudziesięciu walidatorów (tyle może teraz mniej lub bardziej skutecznie osiągają konsensus w ciągu kilku sekund), dlatego projekt ogłasza rejestrację, w ramach której walidatorzy dzielą się z użytkownikami publicznymi informacjami o sobie, przekonując ich, że będą świadczyć wysokiej jakości usługi dla uruchomionej sieci.

Walidacja to biznes, który pozwala niezwykle dokładnie ocenić potencjalne dochody walidatora, szybko przenosić władzę pomiędzy projektami, a jeśli wybrana przez niego sieć odniesie sukces, walidator może, jako pełnoprawny uczestnik DAO i osoba odpowiedzialna, rozwijać projekt lub po prostu zapewnić doskonałą obsługę techniczną za całkowicie przejrzyste, uczciwie zarobione pieniądze. Przy obliczaniu nagrody dla walidatorów projekty starają się uwzględniać koszty walidatorów i tak ustalać wynagrodzenie za bloki, aby ten biznes był opłacalny, ale jednocześnie nie pozwala walidatorom na niszczenie gospodarki poprzez zalewanie ich pieniędzmi i pozbawiając go innych użytkowników sieci.

Działalność walidatorów wymaga zapewnienia wysokiej odporności usług na awarie, co oznacza wysoki poziom szkoleń dla devopsów i programistów oraz drogie zasoby obliczeniowe. Nawet bez konieczności wydobywania skrótów w sieciach typu proof-of-work, węzeł blockchain jest dużą usługą, która zajmuje dużo pamięci, zużywa dużo obliczeń, sprawdza poprawność, zapisuje na dysk i wysyła duże ilości danych do sieci . Do przechowywania dzienników transakcji i łańcuchów bloków dla łańcucha bloków zawierającego kilka tysięcy małych transakcji w bloku wymagana jest obecnie pamięć o pojemności 50 Gb lub więcej, a w przypadku bloków musi to być dysk SSD. Stanowa baza danych blockchainów ze wsparciem dla inteligentnych kontraktów może już przekraczać 64Gb RAM-u. Serwery o wymaganych cechach są dość drogie; węzeł Ethereum lub EOS może kosztować od 100 do 200 $ miesięcznie. Dodaj do tego zwiększone wynagrodzenia za całodobową pracę programistów i devopsów, którzy w okresie startowym rozwiązują problemy nawet w nocy, ponieważ niektóre walidatory można łatwo zlokalizować na innej półkuli. Jednak w odpowiednich momentach posiadanie węzła walidatora może przynieść poważne dochody (w przypadku EOS nawet do 10 000 dolarów dziennie).

Walidacja to tylko jedna z nowych potencjalnych ról IT dla przedsiębiorców i firm; w miarę jak programiści wymyślają coraz bardziej wyrafinowane algorytmy, które nagradzają uczciwość i karzą oszustwa i kradzież, pojawiają się usługi, które realizują funkcje publikowania ważnych danych (wyrocznie), pełnią nadzór (obcinanie depozytów i karanie oszustów poprzez publikowanie dowodów oszustwa), usługi rozstrzygania sporów, ubezpieczenia i opcje, a nawet wywóz śmieci to potencjalnie duży rynek w systemach inteligentnych kontraktów, gdzie trzeba płacić za przechowywanie danych.

Problemy z uruchomieniem blockchaina

Otwartość blockchainu, który umożliwił komputerom z dowolnego kraju swobodne uczestnictwo w sieci i łatwość podłączenia do sieci dowolnego skryptowego dzieciaka zgodnie z instrukcją na GitHubie, nie zawsze jest zaletą. Pogoń za nowym tokenem często zmusza walidatorów do „wydobycia na początek nowej monety” w nadziei, że kurs wzrośnie i szansa na szybkie zrzucenie zarobków. Oznacza to także, że Twoim walidatorem może być każdy, nawet osoba anonimowa, możesz na niego głosować w taki sam sposób jak na innych walidatorów (jednak anonimowej osobie będzie trudno zebrać dla siebie głosy interesariuszy, więc my' przerażające opowieści o anonimowych kryptowalutach pozostawię politykom). Niemniej jednak

Zespół projektowy ma za zadanie – jakoś dostać się do swojej sieci tych, którzy w przyszłości będą w stanie zapewnić stabilną pracę węzłów, zrozumieć bezpieczeństwo, umieć szybko rozwiązywać problemy, współpracować z innymi walidatorami i działać wspólnie – jakość tego od tych cech w pełni zależy token, w który uczestnicy sieci będą inwestować swój czas i zasoby. Odpowiedni założyciele, oceniając ryzyko, dobrze rozumieją, że uruchamiając oprogramowanie tej wielkości, na pewno będziesz musiał napotkać błędy w kodzie i konfiguracji węzłów oraz że stabilność sieci zależy od tego, jak dobrze programiści i walidatorzy wspólnie rozwiążą takie problemy.

Zespół jest gotowy do głosowania w sieci głównej na dowolne walidatory, aby dowiedzieć się, które z nich są dobre? Największy portfel? Prawie nikt go teraz nie ma. Na podstawie profili zespołu na Linkedin? Doświadczeni deweloperzy lub specjaliści ds. bezpieczeństwa nie udostępnią Ci żadnych profili na Linkedin. Według wypowiedzi na czacie, postach i pomaganiu innym w fazie przygotowawczej? Dobre, ale subiektywne i niedokładne.

W takich warunkach pozostaje jedno – coś, co dobrze rozwiąże problemy wszystkich – gra, w której będzie można wybrać najlepszych walidatorów, ale najważniejsze jest przetestowanie blockchainu pod kątem wytrzymałości i przeprowadzenie pełnowymiarowego testu bojowego blockchain w warunkach aktywnego użytkowania, zmiany konsensusu, wygląd i korekta błędów. Procedura ta została po raz pierwszy zaprezentowana jako gra przez chłopaków z projektu Cosmos i ten pomysł jest niewątpliwie doskonałym sposobem na przygotowanie sieci do uruchomienia niezawodnej i odpornej na awarie sieci głównej

Gra weryfikatorów

Grę z walidatorami opiszę tak, jak ją zaprojektowaliśmy dla blockchaina DAO.Casino (DAOBet) opartego na forku EOS, który nazywa się Haya i ma podobny mechanizm zarządzania - wybór walidatorów odbywa się poprzez głosowanie z dowolnego konta, w którym część saldo użyte do głosowania na walidatora jest zamrożone. Każde konto, na którym znajduje się główny token BET, może głosować na wybranego walidatora dowolną częścią jego salda. Głosy są sumowane i na podstawie wyników tworzone są najlepsze walidatory. W różnych blockchainach proces ten jest inaczej zorganizowany i zwykle to właśnie w tej części nowy blockchain różni się od macierzystego i muszę powiedzieć, że w naszym przypadku EOS w pełni uzasadnia „OS” w nazwie, tak naprawdę używamy EOS jako podstawowy system operacyjny do wdrożenia zmodyfikowanej wersji blockchainu dla zadań DAOBet.

Opiszę poszczególne problemy i sposób ich rozwiązania w ramach gry. Wyobraźmy sobie sieć, w której Twój serwer może zostać otwarcie zaatakowany, gdzie aby utrzymać pozycję walidatora, musisz stale współdziałać z siecią, promując swojego walidatora i upewniając się, że generuje on bloki i są one dostarczane do innych walidatorów na czas, w przeciwnym razie walidator zostanie wyrzucony z listy.

Jak wybrać najlepszych zwycięzców?

Głównym wymogiem technicznym gry jest możliwość publicznej weryfikacji jej wyników. Oznacza to, że wyniki gry: TOP zwycięzcy, muszą być tworzone wyłącznie na podstawie danych, które każdy uczestnik może zweryfikować. W scentralizowanym systemie moglibyśmy mierzyć „czas pracy” każdego walidatora i nagradzać tych, którzy byli najczęściej online lub przeszli przez maksymalny ruch w sieci. Możesz zbierać dane o obciążeniu procesora i pamięci oraz nagradzać tych, którzy dobrze sobie poradzili. Jednak każdy taki zbiór metryk oznacza istnienie centrum gromadzenia, a wszystkie węzły są niezależne i mogą zachowywać się, jak chcą, i wysyłać dowolne dane.

Dlatego naturalnym rozwiązaniem jest wybranie zwycięzców na podstawie danych z blockchaina, gdyż dzięki nim można zobaczyć, który walidator wyprodukował który blok i jakie transakcje się w nim zawierały. Nazwaliśmy tę liczbę Punktami Walidatora (VP), a zdobywanie ich jest głównym celem walidatorów w grze. W naszym przypadku najprostszym, łatwo weryfikowalnym publicznie i skutecznym miernikiem „przydatności” walidatora jest VP = liczba bloków wyprodukowanych przez walidator w danym okresie.

Ten prosty wybór wynika z faktu, że zarządzanie w EOS przewiduje już wiele pojawiających się problemów, gdyż EOS jest spadkobiercą trzech generacji faktycznie działających blockchainów z dużym doświadczeniem w złożonym zarządzaniu siecią i niemal wszystkimi problemami walidatora z siecią, procesorem, dysk prowadzi tylko do jednego problemu – podpisuje mniej bloków, otrzymuje mniejsze wynagrodzenie za pracę, co znowu prowadzi nas po prostu do liczby podpisanych bloków – dla EOS-a jest to doskonała i prosta opcja.

W przypadku innych blockchainów sposób naliczania Punktów Walidatora może się różnić, np. w przypadku konsensusów opartych na pBFT (Tendermint/Cosmos, Aura konsensus z Parity Substrate), gdzie każdy blok musi być podpisany przez wielu walidatorów, sensowne jest liczenie poszczególnych walidatorów podpisów zamiast bloków Sensowne może być uwzględnienie niekompletnych rund konsensusu, które marnują zasoby innych walidatorów, ogólnie rzecz biorąc, zależy to w dużym stopniu od rodzaju konsensusu.

Jak symulować rzeczywiste warunki pracy

Zadaniem założycieli jest testowanie walidatorów w warunkach zbliżonych do rzeczywistych, bez konieczności posiadania scentralizowanej kontroli. Problem ten można rozwiązać za pomocą umowy kranowej, która rozdziela równe ilości głównego tokena pomiędzy walidatorów i wszystkich pozostałych. Aby otrzymać tokeny na swoje saldo, musisz utworzyć transakcję i upewnić się, że sieć uwzględni ją w bloku. Zatem, aby wygrać, walidator musi stale uzupełniać saldo o nowe tokeny i głosować na siebie, awansując na sam szczyt. Czynność ta powoduje stałe obciążenie sieci, a parametry można tak dobrać, aby przepływ żądań był wystarczająco poważny, aby przeprowadzić pełny test sieci. Dlatego zaplanuj z wyprzedzeniem umowę na kran jako ważne narzędzie do uruchomienia sieci i z wyprzedzeniem zacznij dobierać jej parametry.

Żądanie tokenów z kranu i sprawdzanie głosów nadal nie emuluje w pełni działania głowicy bojowej, szczególnie w trybach skrajnie obciążonych. Dlatego zespół ds. blockchain nadal będzie musiał w taki czy inny sposób napisać dodatkowe testy porównawcze, aby załadować sieć. Szczególną rolę odgrywają w tym specjalnie tworzone inteligentne kontrakty, które umożliwiają testowanie osobnego podsystemu. Do testowania przechowywania kontrakt przechowuje losowe dane w blockchainie, a do testowania zasobów sieciowych kontrakt testowy wymaga dużej ilości danych wejściowych, zawyżając w ten sposób wolumen transakcji - uruchamiając przepływ takich transakcji w dowolnych momentach czasu, zespół jednocześnie testuje stabilność kodu i siłę walidatorów.

Osobną kwestią jest aktualizacja kodu węzłów i przeprowadzanie hard forków. Wymagane jest, aby w przypadku wystąpienia błędu, podatności lub zmowy złośliwych walidatorów, walidatorzy mieli plan działania, który został już opracowany w grze walidatorów. Tutaj możesz wymyślić schematy naliczania VP za szybkie zastosowanie hard forka, na przykład poprzez nałożenie kar finansowych na wszystkich walidatorów, którzy nie wprowadzili jeszcze nowej wersji kodu węzła, ale jest to trudne do wdrożenia i komplikuje obliczenia. Można symulować sytuację awaryjnego użycia hard forka poprzez sztuczne „łamanie” blockchainu na danym bloku. Produkcja bloków zostanie zatrzymana, a ostatecznie zwycięzcami zostaną ci, którzy pierwsi wskoczą do akcji i zaczną podpisywać bloki, więc VP oparte na liczbie podpisanych bloków jest tutaj dobrym rozwiązaniem.

Jak informować uczestników o stanie sieci i naprawiać błędy

Pomimo braku zaufania pomiędzy walidatorami, terminowe otrzymywanie aktualnych informacji o stanie sieci jest korzystne dla wszystkich w celu szybszego podejmowania decyzji, dlatego zespół projektowy powołuje usługę gromadzenia i wizualizacji wielu metryk z serwerów walidatorów, co pozwala zobaczyć sytuację jednocześnie dla całej sieci, co pozwala szybko określić, co się dzieje. Ponadto korzystne zarówno dla walidatorów, jak i projektu jest to, że zespół projektowy szybko koryguje wykryte błędy, dlatego oprócz zbierania metryk warto od razu rozpocząć zbieranie logów i danych o błędach z maszyn walidatorów na maszynie dostępnej dla blockchain deweloperzy. Tutaj nikomu nie jest korzystne zniekształcanie informacji, więc te usługi są opracowywane przez zespół projektowy i można im zaufać. Zbieranie metryk systemowych od walidatorów ma sens, a oczywiście najważniejszymi metrykami samego blockchainu – dla DAOBet – są czas finalizacji i opóźnienie ostatniego sfinalizowanego bloku. Dzięki temu zespół widzi wzrost zużycia pamięci na węzłach podczas uruchamiania benchmarku, problemy z poszczególnymi walidatorami

Ważne punkty dotyczące przeprowadzenia gry walidacyjnej

Jak się okazuje, jeśli chcesz oficjalnie pozwolić walidatorom na wzajemne atakowanie maszyn (nieoficjalnie i tak mogą to zrobić), musisz osobno sformułować to prawnie jako testowanie bezpieczeństwa, ponieważ zgodnie z prawem niektórych krajów ataki DDoS lub sieciowe mogą być ukarany. Kolejną ważną kwestią jest sposób nagradzania walidatorów. Naturalnymi nagrodami są tokeny projektu, które zostaną przeniesione do sieci głównej, ale masowa dystrybucja tokenów każdemu, kto był w stanie uruchomić węzeł, również nie jest najlepszą opcją. Najprawdopodobniej będziesz musiał balansować pomiędzy dwiema skrajnymi opcjami:

Rozdziel całą pulę nagród zgodnie ze zdobytymi punktami zwycięstwa
jest bardzo demokratyczna i pozwala zarobić pieniądze każdemu, kto zainwestował czas i zasoby w grę walidacyjną
ale przyciąga do gry przypadkowe osoby bez przygotowanej infrastruktury

Rozdaj pulę nagród z N najwyższej półki pomiędzy walidatorami na podstawie wyników gry
Zwycięzcami zostaną najprawdopodobniej walidatorzy, którzy najdłużej wytrwali w grze i są bardzo zdeterminowani, aby wygrać
część walidatorów nie będzie chciała brać udziału, nisko oceniając swoje szanse na wygraną, zwłaszcza jeśli wśród uczestników są szanowani walidatorzy

Którą opcję wybierzesz, zależy od Ciebie

Jest jeszcze jedna kwestia - wcale nie jest faktem, że na Twoje wezwanie do udziału w grze rzucą się dziesiątki walidatorów, a spośród tych, którzy zdecydują się spróbować, nie wszyscy z nich nawet zainstalują i uruchomią węzeł - zwykle, na tym etapie projekty mają dość skąpą dokumentację, zdarzają się błędy, a programiści pracujący pod presją czasu nie odpowiadają zbyt szybko na pytania. Dlatego też przed uruchomieniem gry należy przewidzieć działania także w przypadku nieosiągnięcia wymaganej liczby walidatorów. W takim przypadku na początku gry zespół projektowy uruchamia brakujące walidatory, uczestniczą w konsensusie, ale nie mogą być zwycięzcami.

wniosek

Podsumowując, starałem się zestawić z powyższego listę tego, co należy przemyśleć, wykonać i uruchomić, aby skutecznie przeprowadzić grę walidacyjną

Co musisz zrobić, aby uruchomić prawdziwą grę walidacyjną:
rozwijaj swój własny blockchain :)

  • utwórz i zbuduj interfejs sieciowy oraz udostępnij CLI do głosowania dla walidatorów
  • upewnij się, że metryki z działającego węzła walidatora mogą zostać przesłane do scentralizowanej usługi (na przykład Prometheus)
  • zbuduj serwer zbierający metryki (Prometheus + Grafana) dla gry walidacyjnej
  • dowiedz się, jak będą obliczane punkty walidatora (VP).
  • opracuj publiczny skrypt, który oblicza VP walidatora na podstawie danych z blockchainu
  • opracować interfejs sieciowy do wyświetlania najlepszych walidatorów i statusu gry walidatorów (ile czasu pozostało do końca, kto ma ile VP itp.)
  • opracować i zautomatyzować uruchamianie dowolnej liczby własnych węzłów, zaprojektować proces podłączania walidatorów do gry (kiedy i jak odłączać swoje węzły, przesyłać i usuwać na nie głosy)
  • oblicz, ile tokenów należy wydać i opracuj umowę na kran
  • utwórz skrypt porównawczy (transfery tokenów, ogromne wykorzystanie pamięci, ogromne wykorzystanie sieci)
  • zbierz wszystkich uczestników na jednym czacie w celu szybkiej komunikacji
  • uruchom blockchain nieco wcześniej niż początek gry
  • poczekaj na blok startowy, rozpocznij grę
  • przetestuj sieć z kilkoma rodzajami transakcji
  • wdrożyć hard fork
  • zmienić listę walidatorów
  • powtórz kroki 13,14,15, XNUMX, XNUMX w różnej kolejności, zachowując stabilność sieci
  • poczekaj na ostatni blok, zakończ grę, policz PZ

Trzeba powiedzieć, że gra w walidatory to nowa historia i została przeprowadzona zaledwie kilka razy, dlatego nie należy traktować tego tekstu jako gotowego poradnika. We współczesnym biznesie IT nie ma analogii – wyobraźmy sobie, że banki przed uruchomieniem systemu płatności konkurują ze sobą, kto najlepiej przeprowadzi transakcje z klientami. Tradycyjne podejście raczej nie pomoże w tworzeniu dużych zdecentralizowanych sieci, dlatego opanuj nowe modele biznesowe, uruchamiaj swoje gry, identyfikuj te, które są tego warte, nagradzaj ich i dbaj o szybkie i stabilne działanie rozproszonych systemów.

Źródło: www.habr.com

Dodaj komentarz