>_ DevTrendszh

语言

首页

语言

板块

前端 后端 移动端 DevOps AI / ML 游戏开发 区块链 嵌入式 安全
Go

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

Avalanche Logo

从零开始搭建以太坊或比特币节点可不是什么快速任务。你需要下载数百 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。如果你计划修改协议,则需要安装 bufprotoc-gen-go 并运行内部生成脚本:

scripts/run_task.sh generate-protobuf

本地环境中的开发

为了本地开发和智能合约调试而运行 TB 级别的数据毫无意义。对于这类任务,团队提供了一个独立的工具 avalanche-cli。它只需两条命令就能启动本地环境:

avalanche network start
avalanche network status

这能节省大量时间,因为你无需等待与公共网络的初始同步。

总结

AvalancheGo 对于任何深入研究 Avalanche 基础设施的人来说都是扎实的源代码。该代码以 BSD-3 许可证开源,代码库活跃且定期更新。如果你正在围绕这个区块链构建服务或计划运行自己的验证者,研究这个代码库绝对值得。

相关项目