neithanmo / forest

🌲 Rust Filecoin Node Implementation

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

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

License:Apache License 2.0


Languages

Language:Rust 99.7%Language:Makefile 0.2%Language:Dockerfile 0.1%Language:Shell 0.0%