Skip to content
forked from ChainSafe/forest

🌲 Rust Filecoin Node Implementation

License

Apache-2.0, MIT licenses found

Licenses found

Apache-2.0
LICENSE-APACHE
MIT
LICENSE-MIT
Notifications You must be signed in to change notification settings

neithanmo/forest

 
 

Repository files navigation

License License: MIT Discord

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 and OpenCL 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

License

Forest is dual licensed under MIT + Apache 2.0.

About

🌲 Rust Filecoin Node Implementation

Resources

License

Apache-2.0, MIT licenses found

Licenses found

Apache-2.0
LICENSE-APACHE
MIT
LICENSE-MIT

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Rust 99.7%
  • Other 0.3%