18 个版本 (8 个破坏性更新)

0.19.1 2024 年 7 月 25 日
0.16.7 2024 年 2 月 27 日
0.16.4 2023 年 12 月 6 日
0.16.3 2023 年 11 月 28 日
0.11.1 2023 年 7 月 6 日

#12#forest

Download history 1/week @ 2024-06-26 156/week @ 2024-07-03 3/week @ 2024-07-10 3/week @ 2024-07-17 207/week @ 2024-07-24 6/week @ 2024-07-31

每月 216 次下载

MIT/Apache

3MB
63K SLoC

GitHub Workflow Status Latest release Docs Rust Docs

License Apache 2.0 License MIT Discord Twitter

Forest 是一个用 Filecoin 编写的节点,采用 Rust 语言。使用 Forest,您可以

  • 发送和接收 FIL(风险自担 - Forest 为实验性),
  • 验证 Filecoin 区块链,
  • 生成区块链快照。

虽然功能不如官方 Filecoin 节点 Lotus 完整,但 Forest 旨在成为更快、更易用的替代品。

问题

有问题吗?请随时在 Forest Q&A 中发布!

使用 Docker 运行

无需安装 Rust 工具链或其他依赖项,您只需 Docker - 支持Linux、macOS 和 Windows。

# daemon
❯ docker run --init -it --rm ghcr.io/chainsafe/forest:latest --help
# cli
❯ docker run --init -it --rm --entrypoint forest-cli ghcr.io/chainsafe/forest:latest --help

接下来,在 CLI 窗口中运行 Forest 节点。例如 运行校准网络

之后,在另一个终端中,您可以直接通过在 forest 容器中启动 bash 来使用 forest-cli 二进制文件。

docker exec -it forest /bin/bash

有关更深入的使用和示例用例,请参阅Forest Book中的Forest Docker文档。请注意,latest标签是最新稳定版本。如果您想使用当前的开发构建版本,请使用edge标签。

依赖项

  • Rust(工具链版本在rust-toolchain.toml中指定)

安装rustup

  • OS Base-Devel/Build-Essential
  • Clang编译器

Ubuntu (20.04)

sudo apt install build-essential clang

Archlinux

sudo pacman -S base-devel clang

Fedora (36)

sudo dnf install -y clang-devel

Alpine

apk add git curl make gcc clang clang-dev musl-dev

安装

# Clone repository
git clone --recursive https://github.com/chainsafe/forest
cd forest

# Install binary to $HOME/.cargo/bin
make install

# Run the node on mainnet
forest

要创建发布二进制文件,检出最新标签并使用发布功能进行编译。GitHub release (latest by date)

git checkout $TAG
make build # make debug build of forest daemon and cli
# or
make release # make release build of forest daemon and cli
# or
make install # install forest daemon and cli

配置

密钥库

在无头模式下加密密钥库时,设置FOREST_KEYSTORE_PHRASE环境变量。否则,使用--encrypt-keystore false跳过加密(在生产环境中不建议)。

网络

使用自定义配置和bootnodes运行节点

forest --config /path/to/your_config.toml

可用的配置选项示例

data_dir = "<directory for all chain and networking data>"
genesis_file = "<relative file path of genesis car file>"

[network]
listening_multiaddr = "<multiaddress>"
bootstrap_peers = ["<multiaddress>"]

一个multiaddress示例:"/ip4/54.186.82.90/tcp/1347/p2p/12D3K1oWKNF7vNFEhnvB45E9mw2B5z6t419W3ziZPLdUDVnLLKGs"

配置源

Forest将按以下顺序和优先级查找配置文件

  • 通过命令行标志--config传递给命令行的路径。
  • 如果未通过命令行参数传递任何配置,则使用环境变量FOREST_CONFIG_PATH
  • 如果在以上所有地方都没有找到,Forest将在系统默认配置目录中查找(Linux系统上的$XDG_CONFIG_HOME)。
  • 在所有位置都用尽且找不到配置文件后,假设使用默认配置。

日志记录

Forest记录器使用Rust的日志过滤选项RUST_LOG环境变量。例如

RUST_LOG="debug,forest_libp2p::service=info" forest

默认情况下将显示所有调试日志,但forest_libp2p::service日志将限制为info

Forest还可以将遥测信息发送到Loki实例或Loki代理的端点(参见Grafana Cloud)。使用--loki启用它,并使用--loki-endpoint指定接口和端口。

测试

首先安装nextest测试运行器。

cargo install cargo-nextest --locked
# To run base tests
cargo nextest run # use `make test-release` for longer compilation but faster execution

# To run all tests and all features enabled
make test-all

链同步检查在每次合并到main后运行。此代码维护在单独的存储库中 - Forest IaC

代码检查器

该项目使用一系列代码检查器来以自动化的方式保持代码库干净和安全。虽然CI将安装它们,但如果您想在提交PR之前自行运行它们(建议),则应安装其中一些。

# You can install those linters also with other package managers or by manually grabbing the binaries from the projects' repositories.

# Rust code linter
rustup component add clippy

# Rust code formatter
rustup component add rustfmt

# TOML linter
cargo install taplo-cli --locked

# Scanning dependencies for security vulnerabilities
cargo install cargo-audit

# Spellcheck
cargo install cargo-spellcheck

安装完成后,您可以运行make lint-all

加入测试网

使用--chain选项选择内置的calibnet配置。使用--auto-download-snapshot将确保在需要时下载快照,而无需任何提示。

./target/release/forest --chain calibnet --auto-download-snapshot

通过CLI与Forest交互

当 Forest 守护程序启动时,将显示管理员令牌(或者,使用 --save-token <token> 标志将其保存在磁盘上)。您需要这个令牌来进行需要更高授权级别的命令(如密码)。如上所述,Forest 使用多地址进行网络连接。在 CLI 中也是一样。如果未使用默认端口或使用远程主机,请设置 FULLNODE_API_INFO 环境变量。这也是您设置用于身份验证令牌的地方。

FULLNODE_API_INFO="<token goes here>:/ip4/<host>/tcp/<port>/http

请注意,如果 FULLNODE_API_INFO 环境变量中没有令牌,则冒号将被删除。

Forest 开发者会在此变量前加上 CLI 命令,而不是在 Linux 上使用 export 或 Windows 上的等效命令。这看起来如下

FULLNODE_API_INFO="..." forest-cli auth api-info -p admin

管理员令牌也可以使用 --token 标志设置。

forest-cli --token <ADMIN_TOKEN>

Forest 可执行文件组织

Forest 仓库中的二进制文件组织如下

二进制文件 角色 命令示例
forest Forest 守护程序,用于连接到 Filecoin 网络 forest--chain calibnet--encrypt-keystorefalse
forest-cli 针对 Filecoin JSON-RPC API 的人性化包装 forest-cli info show
forest-tool 处理不涉及 Forest 守护程序的作业 forest-tool snapshot fetch

分离 Forest 进程

您可以通过使用 --detach 标志来分离 Forest 进程,使其在后台运行

./target/release/forest --detach

该命令将阻塞,直到分离的 Forest 进程启动其 RPC 服务器,允许您立即连续一些 RPC 命令。

文档

贡献

ChainSafe 安全策略

报告安全漏洞

我们认真对待所有安全问题,如果您相信您在 ChainSafe 项目中发现了安全漏洞,请立即通知我们。如果问题得到证实,我们将采取所有必要预防措施,确保及时发布声明和补丁发布。

请将漏洞描述和任何相关信息的电子邮件发送到 security at chainsafe dot io

许可

Forest 采用双重许可方式,受 MIT + Apache 2.0 许可。

依赖项

~95–135MB
~2.5M SLoC