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.
Our crates:
crate | description |
---|---|
blockchain |
Chain structures and syncing functionality |
crypto |
Verification and signature definitions |
encoding |
Forest encoding and decoding |
ipld |
IPLD data model for content-addressable data |
node |
Networking synchronization and storage |
vm |
State transition and actor, message and address definitions |
rustc >= 1.40.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
protoc
andOpenCL
are also required to build. Installation for protoc can be found here.
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: "/ip4/54.186.82.90/tcp/1347/p2p/12D3K1oWKNF7vNFEhnvB45E9mw2B5z6t419W3ziZPLdUDVnLLKGs"
The Forest logger uses Rust's log filtering options with the RUST_LOG
environment variable.
For example:
RUST_LOG="debug,forest_libp2p::service=info" forest
Will show all debug logs by default, but the forest_libp2p::service
logs will be limited to info
# To run base tests
cargo test # add --release flag for longer compilation but faster execution
# To pull serialization vectors submodule and run serialization tests
make test-vectors
# To run all tests and all features enabled
make test-all
https://chainsafe.github.io/forest/
- Check out our contribution guidelines: CONTRIBUTING.md
- Have questions? Say hi on Discord!
Forest is dual licensed under MIT + Apache 2.0.