>_ DevTrendsnl

Taal

Home

Talen

Secties

Frontend Backend Mobiel DevOps AI / ML GameDev Blockchain Embedded Beveiliging
Go

Je eigen Avalanche-node uitvoeren in Go en de netwerkarchitectuur begrijpen

Avalanche Logo

Een Ethereum- of Bitcoin-node helemaal opnieuw opzetten is geen snelle klus. Je moet honderden gigabytes aan gegevens downloaden en weken wachten op synchronisatie. De Avalanche-ontwikkelaars hanteren een iets andere aanpak, hoewel je nog steeds geen wandeling in het park moet verwachten.

De officiële Avalanche-netwerk node-implementatie in Go is beschikbaar in de avalanchego repository. Dit is het kerncomponent van de gehele projectinfrastructuur. Zonder dit kun je geen validator uitvoeren of een privé testnetwerk deployen.

Wat je nodig hebt om te beginnen

Ontwikkelaars noemen de hardwarevereisten bescheiden, maar de cijfers in de README spreken dat tegen. Voor Mainnet-operatie heb je nodig:

  • 8 vCPU
  • 16 GB RAM
  • 1 TB vrije schijfruimte
  • Ubuntu (22.04/24.04) of macOS 12+

De belangrijkste bottleneck tijdens de eerste opstart vindt plaats tijdens de bootstrapping-fase. De node downloadt de netwerkgeschiedenis en verifieert de staat. Dit proces duurt enkele dagen. De belangrijkste beperking is de schijf-I/O-snelheid (IOPS). Als je een gewone HDD of een trage SSD gebruikt, sleept het proces zich voort, dus een NVMe-schijf is hier praktisch verplicht.

Hoe de client bouwen en uitvoeren

Er zijn verschillende installatieopties. Voor Ubuntu is er een officiële APT-repository beschikbaar, dus je kunt de utility installeren via de standaard package manager.

Als je de binary uit de broncode wilt bouwen, heb je Go versie 1.25.10 of nieuwer nodig, evenals gcc en g++. Het build-proces kost slechts een paar stappen:

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

De gecompileerde binary verschijnt in de build directory. Uitvoeren zonder parameters verbindt de node met het Mainnet:

./build/avalanchego

Om verbinding te maken met het Fuji testnetwerk, voeg je één vlag toe:

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

Als je je besturingssysteem niet wilt volladen met afhankelijkheden, is het eenvoudiger om een Docker-image te bouwen:

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

Poorten 9650 en 9651 verwerken HTTP API- en P2P-verbindingen tussen nodes.

Platformondersteuning en codegeneratie

De aanpak van het team voor besturingssysteemondersteuning is vrij strikt. Platforms worden verdeeld in drie niveaus.

Niveau 1 omvat 64-bit Linux-systemen op amd64- en arm64-architecturen. Volledige e2e- en stresstests worden hiervoor uitgevoerd.

Niveau 2 omvat macOS op Apple Silicon-chips (arm64). Hier wordt gegarandeerd dat module- en integratietests slagen, maar e2e-tests worden niet geclaimd. macOS op Intel-processors, evenals Windows, worden niet officieel ondersteund.

Het project maakt actief gebruik van gRPC en Protobuf. Als je wijzigingen in het protocol wilt maken, moet je buf, protoc-gen-go installeren en het interne generatiescript uitvoeren:

scripts/run_task.sh generate-protobuf

Ontwikkeling in een lokale omgeving

Het uitvoeren van terabytes aan gegevens voor lokale ontwikkeling en smart contract debugging heeft geen zin. Voor dergelijke taken biedt het team een aparte utility avalanche-cli. Het start letterlijk in twee commando's een lokale omgeving op:

avalanche network start
avalanche network status

Dit bespaart uren tijd omdat je niet hoeft te wachten op initiële synchronisatie met openbare netwerken.

Conclusie

AvalancheGo is solide broncode voor iedereen die zich verdiept in Avalanche-infrastructuur. De code is open onder de BSD-3-licentie en de repository is actief met regelmatige updates. Als je services rond deze blockchain bouwt of van plan bent om je eigen validator uit te voeren, is het bestuderen van deze repository zeker de moeite waard.

Gerelateerde projecten