nimiq/core-rs-albatross

GitHub: nimiq/core-rs-albatross

Nimiq Albatross 权益证明区块链共识协议的 Rust 实现,为 Web 支付场景提供高性能节点客户端。

Stars: 172 | Forks: 72

Nimiq PoS Albatross Repository

[![构建状态](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/6424a379f9230915.svg)](https://github.com/nimiq/core-rs-albatross/actions/workflows/build+test.yml?query=branch%3Aalbatross) [![依赖状态](https://deps.rs/repo/github/nimiq/core-rs-albatross/status.svg)](https://deps.rs/repo/github/nimiq/core-rs-albatross) [Nimiq](https://nimiq.com/) 是一个为 Web 打造的无摩擦支付协议。 本代码库包含了基于 Albatross 共识算法的 Nimiq Proof-of-Stake 协议的 Rust 实现。它旨在在不牺牲安全性的前提下提供高性能。主网现已全面运行,准备好进行实时交易。它经过了严格的测试,可以随时用于生产环境。 有关测试网的使用以及如何连接和使用网络的更多详细信息,请参阅[Testnet](#testnet)章节。 ### 目录 - [参考](#reference) - [硬件要求](#hardware-requirements-per-node-type) - [安装](#installation) - [配置](#configuration) - [History 节点](#history-nodes) - [服务节点指南](#service-nodes-guides) - [Docker](#docker) - [Testnet](#testnet) - [软件完整性与真实性](#software-integrity-and-authenticity) - [贡献](#contributing) - [许可证](#license) ### 参考 - [Nimiq Proof-of-Stake 门户](https://www.nimiq.com/albatross/):Nimiq Proof-of-Stake 区块链的常规信息和顶层细节。 - [Nimiq Albatross 白皮书](https://arxiv.org/abs/1903.01589):描述 Nimiq Proof-of-Stake 中使用的共识算法的白皮书。 - [Nimiq 开发者中心](https://www.nimiq.com/developers/):包含所有开发者文档和协议设计实现的地方。 - [JSON-RPC 规范](https://www.nimiq.com/developers/build/set-up-your-own-node/rpc-docs/):使用 JSON-RPC 与网络进行交互的文档。 - [Nimiq Proof-of-Stake 迁移技术细节](https://www.nimiq.com/developers/migration/migration-technical-details):迁移到 Nimiq Proof-of-Stake 的过程。 - [面向集成商的迁移指南](https://www.nimiq.com/developers/migration/migration-integrators):为那些希望更深入地了解从 Proof-of-Work 过渡到 Proof-of-Stake 过程的人提供的指南。 - [区块链浏览器](https://nimiq.watch/):主网的区块浏览器。 ## 各节点类型的硬件要求 | PoS 节点类型 | 内存 | CPU | 存储 | 网络 | 同步时间 | | --- | --- | --- | --- | --- | --- | | **History** (查看附加[说明](#history-nodes)) | 最低 16GB RAM(建议更高) | 最低 4 vCPUs,推荐 8 vCPUs | 最低 1TB 存储(启用索引时为 2TB);存储使用量从几 GB 开始,并随着区块链大小的时间推移线性增长 | 高速、可靠的互联网连接;良好的 I/O 性能(必须使用 SSD) | 同步时间随着区块链生命周期的增加而增加 | | **Full** | 最低 16GB RAM | 推荐 4 vCPUs | 最低 60GB 存储 | 高速、可靠的互联网连接;良好的 I/O 性能(建议使用 SSD) | 同步时间呈线性但缓慢增长 | | **Light** | 最低 4GB RAM | 推荐 64 位 | 可在极少的存储下运行 | 中速互联网连接(1 Mbps 或更高) | 几秒钟内完成同步 | #### 附加建议: - 文件系统:确保支持稀疏文件。 - 时钟同步:使用如 NTP 这样的协议来准确接收区块,这对于验证者按时生产区块至关重要。 ### 服务节点附加要求 Nimiq 还有两种特定的节点类型,它们在维护网络安全和执行更高级任务方面具有专门的角色。 - **Validators**(用于区块生产): - **PoS 节点类型**:Full 或 History - **内存**:最低 16GB RAM - **CPU**:推荐 4 vCPUs ## 安装 1. 按照 [Rust 官网](https://www.rust-lang.org/learn/get-started#installing-rust)上的说明安装最新版本的 Rust,并安装以下软件包以便能够编译源代码: - `clang` - `cmake` - `libssl-dev` (在 Debian/Ubuntu 中) 或 `openssl-devel` (在 Fedora/Red Hat 中) - `pkg-config` 我们目前不对支持消费者的最低 Rust 版本做任何保证,但我们目前会测试比当前 Rust 稳定版旧两个的版本。 2. 克隆 core-rs 代码库并使用 `cargo` 编译项目: ``` git clone https://github.com/nimiq/core-rs-albatross cd core-rs-albatross cargo build --release ``` 3. 将客户端安装到您的系统中(位于 `$HOME/.cargo/bin`): ``` cargo install --path client/ ``` 或者,您可以直接从 Git 安装: ``` cargo install --git https://github.com/nimiq/core-rs-albatross.git ``` ### 配置 您需要一个配置文件来根据您的具体需求自定义节点。请按照以下方法之一创建并编辑您的配置文件。 **选项 A** 配置文件会自动生成在特定的位置。 1. 使用以下命令生成配置文件: ``` cargo run --release --bin nimiq-client ``` 这将生成一个示例文件并将其放在 `./nimiq` 文件夹中。 2. 将示例配置文件复制到同一目录下的新文件中,您将在其中根据需要进行编辑: ``` cp $HOME/.nimiq/client.example.toml $HOME/.nimiq/client.toml ``` 3. 按照文件内的说明编辑您的配置文件。请参阅[配置设置](https://github.com/nimiq/core-rs-albatross/blob/albatross/lib/src/config/config_file/client.example.toml)获取指导。 4. 运行客户端: ``` cargo run --release --bin nimiq-client ``` 默认情况下,客户端将在 `$HOME/.nimiq/client.toml` 中查找配置文件。 **选项 B** 下载示例文件并手动放置。 1. 将此[示例配置文件](https://github.com/nimiq/core-rs-albatross/blob/albatross/lib/src/config/config_file/client.example.toml)复制到您首选的位置。 2. 编辑配置文件并根据需要调整设置。请参阅**示例配置文件**获取指导。 3. 使用指定文件运行客户端: ``` cargo run --release --bin nimiq-client -- -c path/to/client.toml ``` 现在您的客户端已经启动并运行。 **端口配置** 假设您没有更改默认的监听端口,请确保您的系统允许通过 **8443/tcp** 端口的网络流量。在您的防火墙中打开此端口以允许节点连接到网络。 ### History 节点 对于首次启动您的 History 节点,您必须设置环境变量 `NIMIQ_OVERRIDE_MAINNET_CONFIG` 以指向一个配置文件。此文件可以从以下来源之一下载: - **Nimiq IPFS 网关链接**:https://ipfs.nimiq.io/ipfs/QmWcRRRw4FaKRrznMFt6KemAM35uo9QknMkDaeBzTod33R - **通过 torrent**: magnet:?xt=urn:btih:566cec0c350fca917cf5abb00c7dbe8c70884306&dn=nimiq-genesis-main-albatross.toml&tr=https%3A%2F%2Ftorrents.nimiq.io%2Fannounce 下载文件后,运行 `NIMIQ_OVERRIDE_MAINNET_CONFIG=/path/to/nimiq-genesis-main-albatross.toml cargo run --release --bin nimiq-client`,并使用该文件的实际路径。 此过程仅在 History 节点**首次启动**时需要。对于后续的重新启动,既不需要环境变量也不需要该文件。您甚至可以在初始设置完成后删除该文件。 ### 服务节点指南 您还可以选择运行验证者。请查看我们的完整分步说明指南: - [Validators](https://www.nimiq.com/developers/nodes/validators/becoming-a-validator#become-a-validator) ## Docker 1. 在主目录中使用 `mkdir ~/data` 创建一个 `data` 文件夹。 2. 从容器镜像仓库拉取最新镜像: `docker pull ghcr.io/nimiq/core-rs-albatross:latest`。 3. 使用 `cp ./lib/src/config/config_file/client.example.toml ~/data/client.toml` 在 `~/data` 中创建一个 `client.toml` 文件。 4. 自定义配置文件以满足您的要求。请参考[示例配置文件](https://github.com/nimiq/core-rs-albatross/blob/albatross/lib/src/config/config_file/client.example.toml)和[配置设置](#configuration)获取指导。 5. 通过 Docker 运行客户端。 - 如果您正在为 **mainnet** 运行 History 节点: 1. 确保已按照[本章节](#history-nodes)中的说明下载了完整的创世文件。 2. 将完整的创世文件复制到 `data` 文件夹中:`cp /path/to/nimiq-genesis-main-albatross.toml ~/data`。 3. 使用 `NIMIQ_OVERRIDE_MAINNET_CONFIG` 环境变量运行客户端: docker run -v $(pwd)/data:/home/nimiq/.nimiq -p 8443:8443 -p 8648:8648 -p 9100:9100 -e NIMIQ_OVERRIDE_MAINNET_CONFIG=/home/nimiq/.nimiq/nimiq-genesis-main-albatross.toml --name nimiq-rpc --rm ghcr.io/nimiq/core-rs-albatross:latest - 如果您没有运行 History 节点,或者不是为 **mainnet** 运行客户端: docker run -v $(pwd)/data:/home/nimiq/.nimiq -p 8443:8443 -p 8648:8648 -p 9100:9100 --name nimiq-rpc --rm ghcr.io/nimiq/core-rs-albatross:latest **暴露端口概览** | 端口 | 描述 | | --- | --- | | 8443 | 接收网络连接端口 | | 8648 | RPC 端口 | | 9100 | Metrics 端口 | ## Testnet Testnet 网络公开供测试和实验使用。它的主要目的是邀请所有人演练和测试 Nimiq Proof-of-Stake 功能,我们邀请人们通过我们的 GitHub 代码库提交和报告任何[问题](https://github.com/nimiq/core-rs-albatross/issues/new)。 您可以通过在配置文件中将 [consensus.network](https://github.com/nimiq/core-rs-albatross/blob/a61a230915726261874163e94fdf81ee9c253404/lib/src/config/config_file/client.example.toml#L121) 设置为 `test-albatross` 来使用 Testnet。此外,请取消注释 Testnet 的 [network.seed_nodes](https://github.com/nimiq/core-rs-albatross/blob/b8ed402c9096ffb54afea52347b91ab7831e75de/lib/src/config/config_file/client.example.toml#L29) 并注释掉 Mainnet 的部分。 #### 获取资金 有两种获取资金的方式: - 在 [Testnet Nimiq 钱包](https://wallet.pos.nimiq-testnet.com/)中使用账户并在钱包中请求资金。 - 直接使用 [Testnet 水龙头](https://faucet.pos.nimiq-testnet.com/): ``` curl -X POST -H "Content-Type: application/x-www-form-urlencoded" -d "address=NQXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX" https://faucet.pos.nimiq-testnet.com/tapit ``` ## 软件完整性与真实性 为了确保您运行的软件是真实的且未被篡改,请参阅[文档](https://github.com/nimiq/core-rs-albatross/blob/albatross/build/README.md)。它提供了有关重现 Nimiq 软件和验证软件签名的详细信息。 ## 贡献 如果您想为 Nimiq 的开发做出贡献,请遵循我们的[行为准则](/.github/CODE_OF_CONDUCT.md) 和[贡献指南](/.github/CONTRIBUTING.md)。 小提示:在编辑 README 时,请遵循 [standard-readme](https://github.com/RichardLitt/standard-readme) 规范。 ## 许可证 本项目基于 [Apache License 2.0](./LICENSE.md) 授权。
标签:Rust, Web3, 共识算法, 加密货币, 区块链, 可视化界面, 安全测试工具, 权益证明, 网络流量审计, 节点, 请求拦截, 通知系统