# forest
**Repository Path**: ocean-proj/forest
## Basic Information
- **Project Name**: forest
- **Description**: https://github.com/ChainSafe/forest
- **Primary Language**: Unknown
- **License**: Apache-2.0
- **Default Branch**: austin/actup/account
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2020-07-30
- **Last Updated**: 2024-05-29
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README

[](https://opensource.org/licenses/Apache-2.0)
[](https://opensource.org/licenses/MIT)
[](https://discord.gg/Q6A3YA2)
[](https://twitter.com/chainsafeth)
Forest is an implementation of [Filecoin](https://filecoin.io/) 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](https://filecoin-project.github.io/specs/), 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
```bash
# 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](http://google.github.io/proto-lens/installing-protoc.html).
### Config
Run the node with custom config and bootnodes
```bash
forest --config /path/to/your_config.toml
```
Example of config options available:
```toml
data_dir = ""
genesis_file = ""
[network]
listening_multiaddr = ""
bootstrap_peers = [""]
```
Example of a [multiaddress](https://github.com/multiformats/multiaddr): `"/ip4/54.186.82.90/tcp/1347/p2p/12D3K1oWKNF7vNFEhnvB45E9mw2B5z6t419W3ziZPLdUDVnLLKGs"`
### Logging
The Forest logger uses [Rust's log filtering options](https://doc.rust-lang.org/1.1.0/log/index.html#filtering-results) with the `RUST_LOG` environment variable.
For example:
```bash
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
```bash
# 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](CONTRIBUTING.md)
- Have questions? Say hi on [Discord](https://discord.gg/Q6A3YA2)!
## License
Forest is dual licensed under [MIT](https://github.com/ChainSafe/forest/blob/main/LICENSE-MIT) + [Apache 2.0](https://github.com/ChainSafe/forest/blob/main/LICENSE-APACHE).