>_ DevTrendsit

Lingua

Home

Linguaggi

Sezioni

Frontend Backend Mobile DevOps AI / ML GameDev Blockchain Embedded Sicurezza
Go

Esecuzione di un Nodo Avalanche in Go e Comprensione dell'Architettura di Rete

Avalanche Logo

Configurare un nodo Ethereum o Bitcoin da zero non è un compito rapido. Devi scaricare centinaia di gigabyte di dati e aspettare settimane per la sincronizzazione. Gli sviluppatori di Avalanche adottano un approccio leggermente diverso, anche se non dovresti comunque aspettarti una passeggiata.

L'implementazione ufficiale del nodo di rete Avalanche in Go è disponibile nel repository avalanchego. Questo è il componente centrale dell'intera infrastruttura del progetto. Senza di esso, non sarai in grado di eseguire un validatore o distribuire una rete di test privata.

Cosa ti serve per iniziare

Gli sviluppatori definiscono i requisiti hardware modesti, ma i numeri nel README raccontano un'altra storia. Per operare sulla Mainnet, avrai bisogno di:

  • 8 vCPU
  • 16 GB di RAM
  • 1 TB di spazio su disco libero
  • Ubuntu (22.04/24.04) o macOS 12+

Il principale collo di bottiglia durante il primo avvio si verifica durante la fase di bootstrapping. Il nodo scarica la cronologia della rete e verifica lo stato. Questo processo richiede diversi giorni. Il vincolo principale è la velocità I/O del disco (IOPS). Se usi un HDD normale o un SSD lento, il processo si trascinerà per molto tempo, quindi un disco NVMe è praticamente obbligatorio qui.

Come compilare ed eseguire il client

Ci sono diverse opzioni di installazione. Per Ubuntu, è disponibile un repository APT ufficiale, quindi puoi installare l'utility tramite il gestore di pacchetti standard.

Se vuoi compilare il binario dal codice sorgente, avrai bisogno di Go versione 1.25.10 o successiva, oltre a gcc e g++. Il processo di compilazione richiede solo pochi passaggi:

git clone [email protected]:ava-labs/avalanchego.git
cd avalanchego
./scripts/run_task.sh build

Il binario compilato appare nella directory build. L'esecuzione senza parametri connette il nodo alla Mainnet:

./build/avalanchego

Per connetterti alla rete di test Fuji, aggiungi un flag:

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

Se non vuoi intasare il tuo sistema operativo con dipendenze, è più semplice compilare un'immagine Docker:

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

Le porte 9650 e 9651 gestiscono le connessioni HTTP API e P2P tra i nodi.

Supporto delle piattaforme e generazione del codice

L'approccio del team al supporto del sistema operativo è piuttosto rigoroso. Le piattaforme sono divise in tre livelli.

Il Livello 1 include i sistemi Linux a 64 bit sulle architetture amd64 e arm64. Per questi vengono eseguiti test e2e e stress completi.

Il Livello 2 include macOS sui chip Apple Silicon (arm64). Qui è garantito il superamento dei test dei moduli e di integrazione, ma i test e2e non sono dichiarati. macOS su processori Intel, così come Windows, non sono ufficialmente supportati.

Il progetto utilizza attivamente gRPC e Protobuf. Se prevedi di apportare modifiche al protocollo, dovrai installare buf, protoc-gen-go ed eseguire lo script di generazione interno:

scripts/run_task.sh generate-protobuf

Sviluppo in un ambiente locale

Eseguire terabyte di dati per lo sviluppo locale e il debug dei contratti intelligenti non ha senso. Per questi compiti, il team offre un'utility separata avalanche-cli. Avvia un ambiente locale letteralmente con due comandi:

avalanche network start
avalanche network status

Questo fa risparmiare ore di tempo dal momento che non devi aspettare la sincronizzazione iniziale con le reti pubbliche.

Conclusione

AvalancheGo è un codice sorgente solido per chiunque si immerga nell'infrastruttura Avalanche. Il codice è aperto sotto licenza BSD-3, e il repository è attivo con aggiornamenti regolari. Se stai costruendo servizi attorno a questa blockchain o prevedi di eseguire il tuo validatore, studiare questo repository vale sicuramente la pena.

Progetti correlati