|0.1.1||Dec 6, 2020|
|0.1.0||Dec 3, 2020|
#848 in Magic Beans
36 downloads per month
Used in 3 crates
Forest is an implementation of Filecoin written in Rust. The implementation will take a modular approach to building a full Filecoin node in two parts — (i) building Filecoin’s security critical systems in Rust from the Filecoin Protocol Specification, specifically the virtual machine, blockchain, and node system, and (ii) integrating functional components for storage mining and storage & retrieval markets to compose a fully functional Filecoin node implementation.
❗Current development should be considered a work in progress.
||Chain structures and syncing functionality|
||Verification and signature definitions|
||Forest encoding and decoding|
||IPLD data model for content-addressable data|
||Networking synchronization and storage|
||State transition and actors, message and address definitions|
rustc >= 1.46.0
# Clone repository git clone --recursive https://github.com/chainsafe/forest cd forest # Install binary to $HOME/.cargo/bin and run node make install forest
hwlocand a compatible assembly linker (ex.
clang) are also required to build Filecoin proofs.
Run the node with custom config and bootnodes
forest --config /path/to/your_config.toml
Example of config options available:
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>"]
Example of a multiaddress:
The Forest logger uses Rust's log filtering options with the
RUST_LOG environment variable.
Will show all debug logs by default, but the
forest_libp2p::service logs will be limited to
# To run base tests cargo test # use `make test-release` for longer compilation but faster execution # To pull serialization vectors submodule and run serialization and conformance tests make test-vectors # To run all tests and all features enabled make test-all
Build with the
interopnet config with:
make interopnet # Run and import past the state migrations to latest network version ./target/release/forest --import-snapshot ./types/networks/src/interopnet/snapshot.car
Importing the snapshot only needs to happen during the first run. Following this, to restart the daemon run:
When the Forest daemon is started, an admin token will be displayed. You will need this for commands that require a higher level of authorization (like a password). Forest, as mentioned above, uses multiaddresses for networking. This is no different in the CLI. To set the host and the port to use, if not using the default port or using a remote host, set the
FULLNODE_API_INFO environment variable. This is also where you can set a token for authentication.
FULLNODE_API_INFO="<token goes here>:/ip4/<host>/tcp/<port>/http
Note that if a token is not present in the FULLNODE_API_INFO env variable, the colon is removed.
Forest developers will prepend this variable to CLI commands over using
export on Linux or its equivalant on Windows. This will look like the following:
FULLNODE_API_INFO="..." forest auth api-info -p admin
We take all security issues seriously, if you believe you have found a security issue within a ChainSafe project please notify us immediately. If an issue is confirmed, we will take all necessary precautions to ensure a statement and patch release is made in a timely manner.
Please email us a description of the flaw and any related information (e.g. reproduction steps, version) to security at chainsafe dot io.