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 中
每月 216 次下载
3MB
63K SLoC
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
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 命令。
Forest 快照链接
文档
贡献
- 查看我们的贡献指南:CONTRIBUTING.md
ChainSafe 安全策略
报告安全漏洞
我们认真对待所有安全问题,如果您相信您在 ChainSafe 项目中发现了安全漏洞,请立即通知我们。如果问题得到证实,我们将采取所有必要预防措施,确保及时发布声明和补丁发布。
请将漏洞描述和任何相关信息的电子邮件发送到 security at chainsafe dot io。
许可
Forest 采用双重许可方式,受 MIT + Apache 2.0 许可。
依赖项
~95–135MB
~2.5M SLoC