使用 Go 运行自己的 Avalanche 节点并理解网络架构

从零开始搭建以太坊或比特币节点可不是什么快速任务。你需要下载数百 GB 的数据,并等待数周才能完成同步。虽然 Avalanche 开发者的做法略有不同,但你也别指望这会是一件轻松的事。
官方 Avalanche 网络的 Go 语言节点实现位于 avalanchego 代码库中。这是整个项目基础设施的核心组件。没有它,你就无法运行验证者或部署私有测试网络。
开始前的准备工作
开发者们称硬件要求不高,但 README 中的数字却表明并非如此。对于 Mainnet 运行,你需要:
- 8 个 vCPU
- 16 GB 内存
- 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 测试网络,添加一个参数即可:
./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 连接。
平台支持与代码生成
团队对操作系统的支持方式相当严格。平台被分为三个层级。
第一层级包括 amd64 和 arm64 架构的 64 位 Linux 系统。会为其运行完整的 e2e 和压力测试。
第二层级包括 Apple Silicon 芯片(arm64)上的 macOS。这里保证通过模块和集成测试,但不承诺 e2e 测试。Intel 处理器上的 macOS 以及 Windows 尚未得到官方支持。
该项目大量使用 gRPC 和 Protobuf。如果你计划修改协议,则需要安装 buf、protoc-gen-go 并运行内部生成脚本:
scripts/run_task.sh generate-protobuf
本地环境中的开发
为了本地开发和智能合约调试而运行 TB 级别的数据毫无意义。对于这类任务,团队提供了一个独立的工具 avalanche-cli。它只需两条命令就能启动本地环境:
avalanche network start
avalanche network status
这能节省大量时间,因为你无需等待与公共网络的初始同步。
总结
AvalancheGo 对于任何深入研究 Avalanche 基础设施的人来说都是扎实的源代码。该代码以 BSD-3 许可证开源,代码库活跃且定期更新。如果你正在围绕这个区块链构建服务或计划运行自己的验证者,研究这个代码库绝对值得。
相关项目