ava-labs/avalanchego
GitHub: ava-labs/avalanchego
Avalanche 区块链网络的官方 Go 语言节点实现,提供高吞吐量共识参与和网络同步能力。
Stars: 2354 | Forks: 860
[Avalanche](https://avax.network) 网络的节点实现 -
一个具备高吞吐量和极快交易速度的区块链平台。
## 安装
Avalanche 是一个极其轻量级的协议,因此对计算机的最低要求非常低。
请注意,随着网络使用量的增加,硬件要求可能会发生变化。
连接到主网的节点,其最低推荐硬件规格为:
- CPU:相当于 8 个 AWS vCPU
- RAM:16 GiB
- 存储:1 TiB
- 运行时间非常长或具有自定义配置的节点可能需要更高的存储要求。
- OS:Ubuntu 22.04/24.04 或 macOS >= 12
- 网络:可靠的 IPv4 或 IPv6 网络连接,并带有开放的公共端口。
如果您计划从源码构建 AvalancheGo,还需要以下软件:
- [Go](https://golang.org/doc/install) 版本 >= 1.25.10
- [gcc](https://gcc.gnu.org/)
- g++
### 从源码构建
#### 克隆仓库
克隆 AvalancheGo 仓库:
```
git clone git@github.com:ava-labs/avalanchego.git
cd avalanchego
```
这将会克隆并检出 `master` 分支。
#### 构建 AvalancheGo
运行构建任务来构建 AvalancheGo:
```
./scripts/run_task.sh build
```
`avalanchego` 二进制文件现在位于 `build` 目录中。运行方式如下:
```
./build/avalanchego
```
### 二进制仓库
使用 `apt` 仓库安装 AvalancheGo。
#### 添加 APT 仓库
如果您已经添加了 APT 仓库,则无需再次添加。
要在 Ubuntu 上添加仓库,请运行:
```
sudo su -
wget -qO - https://downloads.avax.network/avalanchego.gpg.key | tee /etc/apt/trusted.gpg.d/avalanchego.asc
source /etc/os-release && echo "deb https://downloads.avax.network/apt $UBUNTU_CODENAME main" > /etc/apt/sources.list.d/avalanche.list
exit
```
#### 安装最新版本
添加 APT 仓库后,通过运行以下命令安装 `avalanchego`:
```
sudo apt update
sudo apt install avalanchego
```
### 二进制安装
下载适合您的操作系统和架构的[最新构建版本](https://github.com/ava-labs/avalanchego/releases/latest)。
将要执行的 Avalanche 二进制文件名为 `avalanchego`。
### Docker 安装
确保机器上已安装 Docker —— 以便可以使用 `docker run` 等命令。
可以通过运行以下命令来构建最新 `avalanchego` 分支的 Docker 镜像:
```
./scripts/run-task.sh build-image
```
要检查已构建的镜像,请运行:
```
docker image ls
```
该镜像应被标记为 `avaplatform/avalanchego:xxxxxxxx`,其中 `xxxxxxxx` 是构建时所用的 Avalanche 源码的简短 commit 哈希。要运行 Avalanche 节点,请运行:
```
docker run -ti -p 9650:9650 -p 9651:9651 avaplatform/avalanchego:xxxxxxxx /avalanchego/build/avalanchego
```
## 运行 Avalanche
### 连接到主网
要连接到 Avalanche 主网,请运行:
```
./build/avalanchego
```
您应该会看到一些漂亮的 ASCII 艺术图案和日志消息。
您可以使用 `Ctrl+C` 来终止节点。
### 连接到 Fuji
要连接到 Fuji 测试网,请运行:
```
./build/avalanchego --network-id=fuji
```
### 创建本地测试网
[avalanche-cli](https://github.com/ava-labs/avalanche-cli) 是启动本地网络最简单的方法。
```
avalanche network start
avalanche network status
```
## 引导同步
节点必须先同步到最新的网络状态,然后才能参与共识并提供 API 调用。对于连接到主网的新节点,此过程(称为引导同步)目前需要数天时间。
在完成引导同步之前,节点不会[报告健康状态](https://build.avax.network/docs/api-reference/health-api)。
缩短引导同步所需时间的改进正在开发中。
引导同步期间的瓶颈通常是数据库 IO。在运行节点的计算机上使用更强大的 CPU 或提高数据库 IOPS 将减少引导同步所需的时间。
## 生成代码
AvalancheGo 使用多种工具来生成高效的样板代码。
### 运行 protobuf 代码生成
要重新生成 protobuf Go 代码,请从仓库的根目录运行 `scripts/run-task.sh generate-protobuf`。
这通常只有在升级 protobuf 版本或修改 .proto 定义文件时才需要。
要使用此脚本,您必须安装 [buf](https://docs.buf.build/installation) (v1.31.0)、protoc-gen-go (v1.33.0) 和 protoc-gen-go-grpc (v1.3.0)。
要安装 buf 依赖项:
```
go install google.golang.org/protobuf/cmd/protoc-gen-go@v1.33.0
go install google.golang.org/grpc/cmd/protoc-gen-go-grpc@v1.3.0
```
如果您还没有这样做,可能需要将 `$GOPATH/bin` 添加到您的 `$PATH` 中:
```
export PATH="$PATH:$(go env GOPATH)/bin"
```
如果您将 buf 解压到 ~/software/buf/bin,以下操作应该有效:
```
export PATH=$PATH:~/software/buf/bin/:~/go/bin
go get google.golang.org/protobuf/cmd/protoc-gen-go
go get google.golang.org/protobuf/cmd/protoc-gen-go-grpc
scripts/run_task.sh generate-protobuf
```
有关更多信息,请参阅 [GRPC Golang 快速入门指南](https://grpc.io/docs/languages/go/quickstart/)。
### 运行 mock 代码生成
请参阅 [贡献文档中的自动生成 mock 章节](CONTRIBUTING.md####Autogenerated-mocks)。
## 文档
仓库内的文档规范在
[`docs/documentation-guidelines.md`](docs/documentation-guidelines.md) 中进行了描述。新
功能文档、包级别文档以及面向维护者的上下文
应遵循该指南。
## 版本控制
### 版本语义
AvalancheGo 首先是 Avalanche 网络的客户端。AvalancheGo 的版本控制遵循 Avalanche 网络的版本控制。
- `v0.x.x` 表示开发网络版本。
- `v1.x.x` 表示生产网络版本。
- `vx.[Upgrade].x` 表示已发生的网络升级次数。
- `vx.x.[Patch]` 表示自上次网络升级以来已发生的客户端升级次数。
### 库兼容性保证
由于 AvalancheGo 的版本代表网络版本,因此 AvalancheGo 的包导出的接口可能会在 `Patch` 版本更新中发生变化。
AvalancheGo 被组织为多个 Go 模块,这些模块必须以匹配的版本一起使用。有关在您的 Go 项目中依赖这些模块的指南,请参阅[依赖 AvalancheGo 模块](docs/external_consumption.md)。
### API 兼容性保证
运行 AvalancheGo 时暴露的 API 将保持向后兼容性,除非该功能已被明确弃用并在移除时发布公告。
## 支持的平台
AvalancheGo 可以在不同的平台上运行,并具有不同的支持等级:
- **等级 1**:由维护者全面支持,保证通过包括 e2e 和压力测试在内的所有测试。
- **等级 2**:通过所有单元测试和集成测试,但不一定通过 e2e 测试。
- **等级 3**:可以构建但经过的测试较少(或未测试),被视为_实验性_。
- **不支持**:可能无法构建且未经过测试,被视为_不安全_。未来将提供支持。
下表列出了当前支持的平台及其对应的
AvalancheGo 支持等级:
| 架构 | 操作系统 | 支持等级 |
| :----------: | :--------------: | :-----------: |
| amd64 | Linux | 1 |
| arm64 | Linux | 1 |
| arm64 | Darwin | 2 |
| amd64 | Darwin | 不支持 |
| amd64 | Windows | 不支持 |
| arm | Linux | 不支持 |
| i386 | Linux | 不支持 |
要正式支持一个新平台,必须满足以下要求:
| AvalancheGo 持续集成 | 等级 1 | 等级 2 | 等级 3 |
| ---------------------------------- | :-----: | :-----: | :-----: |
| 构建通过 | ✓ | ✓ | ✓ |
| 单元和集成测试通过 | ✓ | ✓ | |
| 端到端和压力测试通过 | ✓ | | |
## 安全漏洞
**我们和我们的社区欢迎负责任的披露。**
请参阅我们的[安全策略](SECURITY.md)和[安全公告](https://github.com/ava-labs/avalanchego/security/advisories)。
## 许可证
除非另有说明,本仓库中的所有代码均使用 BSD-3 授权。请参阅我们的[许可](LICENSE)了解更多详情。具体而言,[移植的仓库](graft/)可能使用
不同的许可证,您必须参阅该项目的 README 和 LICENSE 了解更多详情
标签:Avalanche, EVTX分析, Go, Python工具, Ruby工具, 加密货币, 区块链, 区块链平台, 安全监控, 日志审计, 节点, 请求拦截