Uruchom Węzeł na Moonbeam

Chris | Vegas Life
8 min readJun 1, 2021

Wprowadzenie

Wraz z wydaniem Moonbase Alpha v6 możesz uruchomić węzeł, który łączy się z Moonbase Alpha TestNet , synchronizuje się z bootnodem , zapewnia lokalny dostęp do punktów końcowych RPC, a nawet tworzy bloki w parachain.

W naszym TestNet łańcuch przekaźników jest hostowany i uruchamiany przez PureStake . Ale wraz z postępem prac rozwojowych będą też wdrożenia w Kusamie, a potem w Polkadocie. Oto jak zostaną nazwane te nadchodzące środowiska i odpowiadające im nazwy plików specyfikacji łańcucha :

Podręcznik ten jest przeznaczony dla osób z doświadczeniem z systemem Substrate łańcuchy oparte. Uruchamianie parachain jest podobne do uruchamiania węzła Substrate z kilkoma różnicami. Węzeł Substrate parachain uruchomi dwa procesy: jeden do synchronizacji łańcucha przekaźników i drugi do synchronizacji parachain. W związku z tym wiele rzeczy jest podwojonych, na przykład katalog bazy danych, używane porty, wiersze dziennika i inne.

Uwaga

Baza Moonbase Alpha jest nadal uważana za Alphanet i jako taka nie będzie mieć 100% czasu sprawności. Parachain będzie od czasu do czasu czyszczony. Podczas tworzenia aplikacji upewnij się, że zaimplementowałeś metodę szybkiego ponownego wdrażania kontraktów i kont do nowego parachain. Czystki łańcuchowe zostaną ogłoszone na naszym kanale Discord z co najmniej 24-godzinnym wyprzedzeniem.

Wymagania

W poniższej tabeli przedstawiono minimalne specyfikacje zalecane do uruchomienia węzła. W przypadku naszych wdrożeń Kusama i Polkadot MainNet wymagania dyskowe będą wzrastać wraz z rozwojem sieci.

Uwaga

Jeśli nie widzisz komunikatu Imported (bez tagu [ Relaychain ] ) podczas uruchamiania węzła, może być konieczne ponowne sprawdzenie konfiguracji portu.

Uruchomione porty

Jak wspomniano wcześniej, węzły przekaźnikowe/parałańcuchowe będą nasłuchiwać na wielu portach. W parachain używane są domyślne porty Substrate, podczas gdy łańcuch przekaźników będzie nasłuchiwał na następnym wyższym porcie.

Jedyne porty, które muszą być otwarte dla ruchu przychodzącego, to te przeznaczone dla P2P.

Domyślne porty dla pełnego węzła Parachain

Domyślne porty wbudowanego łańcucha przekaźników

Instrukcja instalacji — Docker

Moonbase węzeł Alpha można obrócił się szybko za pomocą Döcker. Aby uzyskać więcej informacji na temat instalacji Dockera, odwiedź tę stronę . W momencie pisania tego tekstu używana wersja Dockera to 19.03.6.

Najpierw utwórz katalog lokalny do przechowywania danych łańcucha:

mkdir /var/lib/alphanet-data

Następnie ustaw uprawnienia albo na szczególny lub bieżącego użytkownika (zastąpić DOCKER_USER dla rzeczywistego użytkownika, który będzie uruchomić Döcker polecenia):

# chown to a specific user

chown DOCKER_USER /var/lib/alphanet-data

# chown to current user

sudo chown -R $(id -u):$(id -g) /var/lib/alphanet-data

Uwaga

Upewnij się, że odpowiednio ustawiłeś własność i uprawnienia dla katalogu lokalnego, w którym przechowywane są dane łańcucha.

Teraz wykonaj polecenie docker run. Pamiętaj, że musisz:

· Zastąp nazwę TWÓJ-WĘZŁA w dwóch różnych miejscach.

Uwaga

Jeśli konfigurujesz węzeł sortowania, pamiętaj, aby postępować zgodnie z fragmentami kodu „Collator”.

Pełny węzeł

Ubuntu

Mac Operacyjny System

Kolektor

Ubuntu

Mac Operacyjny System

Gdy Docker pobierze niezbędne obrazy, uruchomi się pełny węzeł Bazy Moonbase Alpha, wyświetlając wiele informacji, takich jak specyfikacja łańcucha, nazwa węzła, rola, stan genezy i inne:

Uwaga

Jeśli chcesz uruchomić punkt końcowy RPC, aby połączyć polkadot.js.org lub uruchomić własną aplikację, należy użyć flagi — unsafe-rpc-externali / lub — unsafe-ws-external uruchomić pełny węzeł z zewnętrzny dostęp do portów RPC. Więcej szczegółów można uzyskać uruchamiając moonbeam — help .

Uwaga

Jeśli masz problemy z domyślną telemetrią, możesz dodać flagę — no-telemetry, aby uruchomić pełny węzeł bez aktywowanej telemetrii.

Uwaga

Możesz określić niestandardowy port Prometheus za pomocą flagi — prometheus -port XXXX (zastępując XXXX rzeczywistym numerem portu). Jest to możliwe zarówno w przypadku łańcucha parachain, jak i wbudowanego łańcucha przekaźników.

Powyższe polecenie włączy wszystkie ujawnione porty wymagane do podstawowej operacji, w tym porty P2P i Prometheus (telemetria). To polecenie jest zgodne z telemetrią Gantree Node Watchdog. Jeśli chcesz ujawnić określone porty, włącz je w wierszu polecenia Docker run, jak pokazano poniżej. Jednak zrobienie tego zablokuje kontenerowi Gantree Node Watchdog (telemetria) dostęp do kontenera moonbeam, więc nie rób tego podczas uruchamiania sortowania, chyba że rozumiesz docker networking .

docker run -p 30334:30334 -p 30333:30333 -p 9933:9933 -p 9944:9944 #reszta kodu idzie tutaj

Podczas procesu synchronizacji zobaczysz wiadomości zarówno z osadzonego łańcucha przekaźników, jak i parachain (bez tagu). Te komunikaty wyświetlają blok docelowy ( TestNet ) i najlepszy blok (stan synchronizacji węzła lokalnego).

Po zsynchronizowaniu masz lokalnie działający węzeł Moonbase Alpha TestNet !

Instrukcja instalacji — binarna

Ta sekcja opisuje proces kompilowania pliku binarnego i uruchamiania pełnego węzła Moonbeam jako usługi systemd . Poniższe kroki zostały przetestowane na instalacji Ubuntu 18.04. Moonbase Alpha może współpracować z innymi wersjami Linuksa, ale Ubuntu jest obecnie jedyną testowaną wersją.

Kompilacja pliku binarnego

Poniższe polecenia zbudują najnowszą wersję parachainu Moonbeam.

Najpierw zacznijmy od sklonowania repozytorium moonbeam.

git clone https://github.com/PureStake/moonbeam

cd moonbeam

Sprawdźmy najnowszą wersję:

git checkout tags/$(git tag | tail -1)

Następnie zainstaluj Substrate i wszystkie jego wymagania wstępne, w tym Rust, wykonując:

curl https://getsubstrate.io -sSf | bash -s — — fast

Na koniec zbuduj binarny parachain:

cargo build — release

Jeśli w terminalu pojawi się błąd „nie znaleziono ładunku” , ręcznie dodaj Rusta do ścieżki systemowej lub uruchom ponownie system:

source $HOME/.cargo/env

Uruchamianie usługi Systemd

Poniższe polecenia skonfigurują wszystko dotyczące uruchamiania usługi.

Najpierw utwórzmy konto usługi, aby uruchomić usługę:

adduser moonbase_service — system — no-create-home

Następnie utwórz katalog do przechowywania plików binarnych i danych oraz ustaw niezbędne uprawnienia:

mkdir /var/lib/alphanet-data

chown moonbase_service /var/lib/alphanet-data

Uwaga

Upewnij się, że odpowiednio ustawiłeś własność i uprawnienia dla katalogu lokalnego, w którym przechowywane są dane łańcucha.

Teraz skopiuj plik binarny zbudowany w ostatniej sekcji do utworzonego folderu:

cp ./target/release/moonbeam /var/lib/alphanet-data

Następnym krokiem jest utworzenie pliku konfiguracyjnego systemd . Pamiętaj, że musisz:

· Zastąp nazwę TWÓJ-WĘZŁA w dwóch różnych miejscach

· Sprawdź dokładnie, czy plik binarny znajduje się we właściwej ścieżce, jak opisano poniżej ( ExecStart )

· Sprawdź dwukrotnie ścieżkę podstawową, jeśli używasz innego katalogu

· Nazwij plik / etc / systemd / system/ moonbeam.service

Uwaga

Jeśli konfigurujesz węzeł sortowania, pamiętaj, aby postępować zgodnie z fragmentami kodu „Collator”.

Pełny węzeł

Kolektor

Uwaga

Jeśli masz problemy z domyślną telemetrią, możesz dodać flagę — no-telemetry, aby uruchomić pełny węzeł bez aktywowanej telemetrii.

Uwaga

Możesz określić niestandardowy port Prometheus za pomocą flagi — promethues -port XXXX (zastępując XXXX rzeczywistym numerem portu). Jest to możliwe zarówno w przypadku łańcucha parachain, jak i wbudowanego łańcucha przekaźników.

Prawie na miejscu! Zarejestruj się i uruchom usługę uruchamiając:

systemctl enable moonbeam.service

systemctl start moonbeam.service

I na koniec sprawdź, czy usługa działa:

systemctl status moonbeam.service

Możesz również sprawdzić logi, wykonując:

journalctl -f -u moonbeam.service

Zaawansowane flagi i opcje

Wraz z wydaniem Moonbase Alpha v7 węzły zapewniają również dostęp do niektórych niestandardowych metod RPC, które umożliwiają programistom sprawdzanie i debugowanie transakcji w czasie wykonywania. Obecnie dostępne są dwie funkcje:

· Geth debug API: a dokładniej metoda debug_traceTransaction . Spowoduje to próbę uruchomienia transakcji w taki sam sposób, w jaki została wykonana. Możesz przeczytać więcej o tej metodzie RPC w tym linku

· Moduł śledzenia OpenEthereum : dokładniej, metoda trace_filter . Zwraca to ślad pasujący do określonego filtra dostarczonego jako dane wejściowe do wywołania RPC. Możesz przeczytać więcej o tej metodzie RPC w tym linku

Wyżej wymienione funkcje można aktywować za pomocą następujących flag:

— ethapi =debug : włącza interfejs API debugowania Geth dla wywołania RPC debug_traceTransaction

·— ethapi =trace : włącza moduł śledzenia OpenEthereum dla wywołania RPC trace_filter

Uwaga

Funkcje debugowania/śledzenia są nadal aktywnie rozwijane. Ponieważ żądania te bardzo obciążają procesor, zaleca się uruchomienie węzła z flagą — execution=Native . Spowoduje to użycie natywnego środowiska uruchomieniowego zawartego jako część pliku wykonywalnego węzła zamiast pliku binarnego Wasm przechowywanego w łańcuchu.

Możesz połączyć obie flagi podczas uruchamiania węzła.

Domyślnie maksymalna liczba wpisów śledzenia, które może zwrócić pojedyncze żądanie funkcji trace_filter, wynosi 500 . Żądanie przekraczające ten limit zwróci błąd. Możesz ustawić inny maksymalny limit za pomocą następującej flagi:

— ethapi -trace-max-count < uint > : ustawia maksymalną liczbę wpisów śledzenia zwracanych przez węzeł

Bloki przetwarzane przez żądania są tymczasowo przechowywane w pamięci podręcznej przez określony czas (domyślnie 300 sekund), po czym są usuwane. Możesz ustawić inny czas usunięcia za pomocą następującej flagi:

— ethapi -trace-pamięci podręcznej trwania < uint > : czas (w sekundach), po których bufor trace_filter , dla danego bloku odrzucono

Aktualizacja klienta

Ponieważ rozwój Moonbeam trwa, czasami konieczne będzie uaktualnienie oprogramowania węzła. Operatorzy węzłów zostaną powiadomieni na naszym kanale Discord, kiedy aktualizacje są dostępne i czy są one konieczne (niektóre aktualizacje klienta są opcjonalne). Proces uaktualniania jest prosty i taki sam dla pełnego węzła lub sortownika.

Najpierw zatrzymaj kontener docker lub usługę systemd :

sudo docker stop `CONTAINER_ID`

# or

sudo systemctl stop moonbeam

Następnie zainstaluj nową wersję, powtarzając kroki opisane wcześniej, upewniając się, że używasz najnowszego dostępnego tagu. Po aktualizacji możesz ponownie uruchomić usługę.

Oczyszczanie łańcucha

Od czasu do czasu Baza Moonbase Alpha może zostać oczyszczona i zresetowana po dużych ulepszeniach. Jak zawsze, operatorzy węzłów zostaną powiadomieni z wyprzedzeniem (za pośrednictwem naszego kanału Discord ), jeśli aktualizacji towarzyszyć będzie czystka. Możesz również wyczyścić swój węzeł, jeśli Twój indywidualny katalog danych ulegnie uszkodzeniu.

Aby to zrobić, najpierw zatrzymaj kontener docker lub usługę systemd :

sudo docker stop `CONTAINER_ID`

# or

sudo systemctl stop moonbeam

Następnie usuń zawartość folderu, w którym przechowywane są dane łańcucha (zarówno dla łańcucha parachain, jak i relay):

sudo rm -rf /var/lib/alphanet-data/*

Na koniec zainstaluj najnowszą wersję, powtarzając kroki opisane wcześniej, upewniając się, że używasz najnowszego dostępnego tagu. Jeśli tak, możesz uruchomić nowy węzeł ze świeżym katalogiem danych.

Telemetria

Aby włączyć serwer telemetryczny węzła Moonbase Alpha, możesz skorzystać z tego samouczka .

Uruchamianie telemetrii na pełnym węźle nie jest konieczne. Jest to jednak wymagane w przypadku kolatorów.

Możesz również zobaczyć aktualne informacje telemetryczne Moonbase Alpha, odwiedzając ten link .

Dzienniki i rozwiązywanie problemów

Zobaczysz logi zarówno z łańcucha przekaźników, jak i parachain. Łańcuch przekaźników będzie poprzedzony przedrostkiem [ Relaychain ] , podczas gdy parachain nie ma prefiksu.

Porty P2P nie są otwarte

Jeśli nie widzisz wiadomości Imported (bez tagu [ Relaychain ] ), musisz sprawdzić konfigurację portu P2P. Port P2P musi być otwarty na ruch przychodzący.

Zsynchronizowany

Oba łańcuchy muszą być zsynchronizowane przez cały czas i powinny być widoczne komunikaty zaimportowane lub bezczynne oraz połączone równorzędne elementy.

Niedopasowanie Genesis

Sieć Moonbase Alpha TestNet jest często aktualizowana. W związku z tym możesz zobaczyć następujący komunikat:

Zazwyczaj oznacza to, że korzystasz ze starszej wersji i będziesz musiał dokonać aktualizacji.

Ogłaszamy aktualizacje (i odpowiadające im czystki łańcuchowe) za pośrednictwem naszego kanału Discord z co najmniej 24-godzinnym wyprzedzeniem.

--

--

Chris | Vegas Life

Decentralize the internet by running Validators Nodes on Polkadot and Kusama.