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工具, 加密货币, 区块链, 区块链平台, 安全监控, 日志审计, 节点, 请求拦截