>_ DevTrendspl

Język

Strona główna

Języki

Sekcje

Frontend Backend Mobilne DevOps AI / ML GameDev Blockchain Systemy wbudowane Bezpieczeństwo
Go

Uruchamianie własnego węzła Avalanche w Go i zrozumienie architektury sieci

Avalanche Logo

Konfiguracja węzła Ethereum lub Bitcoin od podstaw to nie jest szybkie zadanie. Musisz pobrać setki gigabajtów danych i czekać tygodniami na synchronizację. Programiści Avalanche stosują nieco inne podejście, choć nadal nie powinieneś spodziewać się spaceru.

Oficjalna implementacja węzła sieci Avalanche w Go jest dostępna w repozytorium avalanchego. To podstawowy element całej infrastruktury projektu. Bez niego nie będziesz w stanie uruchomić walidatora ani wdrożyć prywatnej sieci testowej.

Co jest potrzebne do rozpoczęcia

Programiści nazywają wymagania sprzętowe skromnymi, ale liczby w README sugerują co innego. Do działania w Mainnet potrzebujesz:

  • 8 vCPU
  • 16 GB RAM
  • 1 TB wolnego miejsca na dysku
  • Ubuntu (22.04/24.04) lub macOS 12+

Głównym wąskim gardłem podczas pierwszego uruchomienia jest faza bootstrapowania. Węzeł pobiera historię sieci i weryfikuje stan. Ten proces trwa kilka dni. Głównym ograniczeniem jest szybkość dysku I/O (IOPS). Jeśli używasz zwykłego HDD lub wolnego SSD, proces będzie się dłużyć, więc dysk NVMe jest tutaj praktycznie obowiązkowy.

Jak zbudować i uruchomić klienta

Dostępnych jest kilka opcji instalacji. Dla Ubuntu dostępne jest oficjalne repozytorium APT, więc możesz zainstalować narzędzie za pomocą standardowego menedżera pakietów.

Jeśli chcesz zbudować plik binarny ze źródeł, potrzebujesz Go w wersji 1.25.10 lub nowszej, a także gcc i g++. Proces kompilacji zajmuje tylko kilka kroków:

git clone git@github.com:ava-labs/avalanchego.git
cd avalanchego
./scripts/run_task.sh build

Skompilowany plik binarny pojawia się w katalogu build. Uruchomienie bez parametrów łączy węzeł z Mainnet:

./build/avalanchego

Aby połączyć się z siecią testową Fuji, dodaj jeden parametr:

./build/avalanchego --network-id=fuji

Jeśli nie chcesz zaśmiecać systemu operacyjnego zależnościami, łatwiej jest zbudować obraz Docker:

./scripts/run-task.sh build-image
docker run -ti -p 9650:9650 -p 9651:9651 avaplatform/avalanchego:latest /avalanchego/build/avalanchego

Porty 9650 i 9651 obsługują połączenia HTTP API i P2P między węzłami.

Wsparcie platform i generowanie kodu

Zespół stosuje dość rygorystyczne podejście do wsparcia systemów operacyjnych. Platformy są podzielone na trzy poziomy.

Poziom 1 obejmuje 64-bitowe systemy Linux na architekturach amd64 i arm64. Dla nich uruchamiane są pełne testy e2e i testy obciążeniowe.

Poziom 2 obejmuje macOS na chipach Apple Silicon (arm64). Tutaj gwarantowane jest przejście testów modułów i integracyjnych, ale testy e2e nie są deklarowane. macOS na procesorach Intela, a także Windows, nie są oficjalnie wspierane.

Projekt aktywnie wykorzystuje gRPC i Protobuf. Jeśli planujesz wprowadzać zmiany w protokole, musisz zainstalować protobuf, protoc i uruchomić skrypt generacji kodu.

Projekt aktywnie wykorzystuje gRPC i Protobuf. Jeśli planujesz wprowadzać zmiany w protokole, będziesz musiał zainstalować buf, protoc-gen-go i uruchomić wewnętrzny skrypt generacji:

scripts/run_task.sh generate-protobuf

Programowanie w środowisku lokalnym

Uruchamianie terabajtów danych do lokalnego programowania i debugowania kontraktów inteligentnych nie ma sensu. Do takich zadań zespół oferuje osobne narzędzie avalanche-cli. Uruchamia środowisko lokalne dosłownie dwoma poleceniami:

avalanche network start
avalanche network status

To oszczędza godziny czasu, ponieważ nie musisz czekać na wstępną synchronizację z sieciami publicznymi.

Podsumowanie

AvalancheGo to solidne źródło kodu dla każdego, kto zgłębia infrastrukturę Avalanche. Kod jest otwarty na licencji BSD-3, a repozytorium jest aktywne z regularnymi aktualizacjami. Jeśli budujesz usługi wokół tego blockchainu lub planujesz uruchomić własny walidator, zdecydowanie warto poświęcić czas na naukę tego repozytorium.

Powiązane projekty