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 |
Dependencies
rustc >= 1.40.0
Usage
# 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.
Config
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"
Logging
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
Testing
# 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
Documentation
https://chainsafe.github.io/forest/
Contributing
- Check out our contribution guidelines: CONTRIBUTING.md
- Have questions? Say hi on Discord!
License
Forest is dual licensed under MIT + Apache 2.0.