Goで独自のAvalancheノードを実行し、ネットワークアーキテクチャを理解する

EthereumやBitcoinのノードをゼロから構築するのは簡単な作業ではありません。何百ギガバイトものデータをダウンロードし、同期に数週間待たなければならないのが普通です。Avalancheの開発者は少し異なるアプローチを取っていますが、それでも楽な作業ではないことは覚悟しておきましょう。
Goで実装された公式のAvalancheネットワークノードは、avalanchegoリポジトリで公開されています。これはプロジェクト全体のインフラストラクチャの中核をなすコンポーネントです。これなしでは、バリデーターの実行やプライベートテストネットワークのデプロイはできません。
始める前に必要なもの
開発者たちはハードウェア要件は控えめだと言っていますが、READMEに記載されている数字はそれとは裏腹です。Mainnetで運用するには、以下が必要です:
- 8 vCPU
- 16 GB RAM
- 1 TBの空きディスク容量
- Ubuntu(22.04/24.04)またはmacOS 12以降
最初の起動時の主なボトルネックは、ブートストラッピングフェーズで発生します。ノードはネットワーク履歴をダウンロードし、状態を検証します。このプロセスには数日かかります。主な制約はディスクI/O速度(IOPS)です。通常のHDDや遅いSSDを使用すると、プロセスは長引きます。そのため、NVMeドライブはほぼ必須と言えます。
クライアントのビルドと実行方法
インストールオプションは複数あります。Ubuntuの場合、公式APTリポジトリが利用可能なため、标准のパッケージマネージャーでインストールできます。
ソースコードからバイナリをビルドする場合は、Go 1.25.10以降とgcc、g++が必要です。ビルドプロセスはほんの数ステップです:
git clone [email protected]:ava-labs/avalanchego.git
cd avalanchego
./scripts/run_task.sh build
コンパイルされたバイナリはbuildディレクトリに出力されます。パラメータなしで実行すると、Mainnetにノードが接続されます:
./build/avalanchego
Fujiテストネットワークに接続するには、フラグを1つ追加します:
./build/avalanchego --network-id=fuji
オペレーティングシステムに依存関係をインストールしたくない場合は、Dockerイメージをビルドする方が簡単です:
./scripts/run-task.sh build-image
docker run -ti -p 9650:9650 -p 9651:9651 avaplatform/avalanchego:latest /avalanchego/build/avalanchego
ポート9650と9651は、HTTP APIとノード間のP2P接続を処理します。
プラットフォームサポートとコード生成
チームオペレーティングシステムのサポートへのアプローチは非常に厳格です。プラットフォームは3つのティアに分けられています。
ティア1には、amd64およびarm64アーキテクチャ上の64ビットLinuxシステムが含まれます。完全なe2eテストとストレステストが実施されています。
ティア2には、Apple Siliconチップ(arm64)上のmacOSが含まれます。ここではモジュールテストと統合テストの合格が保証されていますが、e2eテストは保証されません。Intelプロセッサ上のmacOS、およびWindowsは正式にはサポートされていません。
このプロジェクトではgRPCとProtobuf активно使用しています。プロトコルに変更を加える予定がある場合は、buf、protoc-gen-goをインストールし、内部生成スクリプトを実行する必要があります:
scripts/run_task.sh generate-protobuf
ローカル環境での開発
ローカル開発やスマートコントラクトのデバッグのためにテラバイト規模のデータを実行するのは意味がありません。こんなタスクのために、チームは別のユーティリティavalanche-cliを用意しています。実質的に2つのコマンドでローカル環境を起動できます:
avalanche network start
avalanche network status
パブリックネットワークとの初期同期を待つ必要がないため、時間を大幅に節約できます。
まとめ
AvalancheGoは、Avalancheインフラストラクチャに足を踏み入れる任何人にとって堅実なソースコードです。コードはBSD-3ライセンスの下でオープンソースであり、リポジトリは定期的な更新でアクティブです。このブロックチェーンに関連するサービスを構築したり、独自のバリデーターを実行する予定がある場合は、このリポジトリの研究は確かに価値があります。
関連プロジェクト