ChainSafe launches Forest, the Rust Filecoin Client

ChainSafe launches Forest, the Rust Filecoin Client

Authored by Timothy Hao Chi Ho

Announcing the alpha release of the Filecoin Rust node implementation

Forest is ChainSafe's Rust implementation of the Filecoin protocol, an open-source blockchain-based decentralized storage network. Rust provides a foundation for building blockchains with memory safety and performance as a priority. As such, a Rust client for Filecoin will bring diversity and resilience to a network largely run on Lotus - Filecoin's reference implementation in Go. Check out this primer to learn more about Forest. Also, be sure to check out Amer Ameen's high-level overview of Forest at one of Filecoin's previous Virtual Community Meetups! Finally, dig into the code here and jump into our Discord to get in touch.

Congratulations to Filecoin for their 1-year anniversary since mainnet 🎊

A year ago on Oct 15th, the Filecoin mainnet was officially launched. Since then, the ecosystem has exploded with innovative products intersecting everything from decentralized storage (like ChainSafe's very own Files) to NFT's to decentralized social media.

Meanwhile in the engine room, the Forest team has been feverishly delivering code to coincide Filecoin's anniversary with Forest's official Initial Launch event 🚀

What is the Forest Initial Launch?

Forest is launching as an alpha version release on the Filecoin mainnet!

The Forest Rust client is currently able to synchronize and verify the Filecoin network. It can also query the latest state, making it viable for an alpha launch as an alternative client on the Filecoin network. Although Forest is still not fully production-ready, the development team feels comfortable at this point with releasing the software to the public in an official capacity so that developers can begin installing, testing, and running our client.

Whereas before, the focus had solely been on VM correctness, consensus, and a stable-enough build out-of-the-box for Forest, we now move into the battle testing stage. The goal is to iterate on Forest and take feedback from the developer and mining community for stable releases in the future.

The alpha launch milestone also serves as a jump-off point for the team to consider broader strategic questions:

  1. How does Forest differentiate from the reference implementation Lotus? How does it differentiate it from alternative clients like venus and fuhon?

  2. What is the value-proposition of Forest?

  3. How do we build adoption and evangelize a developer community around Forest?

Answering these salient questions will help carve out a vision for Forest as a client. Helping Forest find its footing and place as an important component of the Filecoin ecosystem will ensure that it lives on as a client for many generations to come.

This is incredibly exciting!

Beneath the Forest 🌿

Underneath the hood, there have been lots of promising updates from the Forest dev team with regards to both the technical implementation as well as our development processes.

As part of the Initial Launch phase, we have now remediated all the outstanding actionable bugs - 16 in total - from the Sigma Prime audit. We're still waiting on the final audit report, but once it is available, we will publish it publicly. As mentioned previously in an older blog, most of the audit issues were tagged under "FOR" to denote Sigma Prime-related items. As you may notice, there are still some open issues under FOR 07, 12, and 13, but these are items that require collaboration among the different Actors implementations to address.

Since our first project update for Forest, the client has been syncing to the latest version of the Filecoin mainnet. Whereas previously, the Forest team had to consistently play catch-up with the fast and furious Filecoin Improvement Proposals (FIPs), the dev team is now ahead of the game and keeping the codebase and the client sync'd.

This is in part thanks to an expanding dev team (Eric, Jorge, Connor, Afri) and the implementation of new "continuous integration and continuous delivery" (CI/CD) release processes. CI/CD is modern and agile, where CI is "a development practice that requires developers to integrate code into a shared repository several times a day. Each check-in is then verified by an automated build, allowing teams to detect problems early." CD on the other hand can be simply summed up as "the practice of releasing every good build to users". This practice is tremendously important for fast iteration in the open-source paradigm. It highlights our team's emphasis on delivering fast and accurate code.

Finally, as part of the Initial Launch of Forest, several MVP features were completed:

  • Message pool

  • State manager

  • Chain

  • Wallet CLI functionality

  • Prometheus metrics

  • JSON-RPC server

You can read through this document to learn more.

Get Involved 💪

If you are a developer and you are interested in contributing to Forest, by far the most important thing you can do to participate is by running and testing our software. To that end, we have created this documentation site to help you. Install it, run it, test it, break it. Your feedback is valuable.

We will also shortly be producing a product survey for Forest - this will be a chance for you to actively participate and shape the future of Forest as a client and product. By participating, a random winner will be chosen and selected to win a prize! Stay tuned for more details here.

Finally, if you are familiar with Rust and want to join the dopest team on Planet Filecoin, you'll be happy to know we are hiring for a Protocol Engineer (Rust) on the Forest team! Check out our open positions here and get in touch with us at careers@chainsafe.io if you are interested. Blockchain experience need not apply! We are looking for curious, open-minded, and friendly, individuals to join our team ❤

The Forest-general channel on our Discord is a great place to strike up a convo with our devs. Join us!

Learn more about ChainSafe by visiting our website, through Medium, via Twitter, or by visiting the ChainSafe GitHub. We also have a YouTube channel with great content!