Authored by Ben Adar
A lot has been accomplished since we began this project nine months ago. The team is making great progress towards having a complete Filecoin node implementation written in Rust.
During the first six months, the majority of our effort went towards building the Virtual Machine and Syncing components. The Virtual Machine is not only the most complex part of the system, its execution must match the other implementations exactly for us to be interoperable with other clients. This required the team to be extremely detail-oriented. At the same time that we were working on Forest, changes were being made on the protocol level (see the spec-actors repo), which made for a challenging development experience. At this point in time, there has been a feature freeze on the VM, so we are working diligently to ensure that our implementation of the VM matches the reference implementation.
In addition to the VM & Syncing components, we also built the fundamental pieces for the Filecoin blockchain, such as blocks & tipsets, as well as for IPLD, such as the [HAMT](https://github.com/ipld/specs/blob/master/data-structures/hashmap.md) (Hash Array Mapped Trie) and the AMT (Array Mapped Trie). ChainSafe also integrated the proofs libraries that were developed by the Filecoin team.
Forest is close to being a fully functioning Filecoin node. We are almost done implementing most of the components in Rust, including all of the consensus critical ones. For the remaining components, we will be integrating the existing Go modules. These include the Storage Miner and the Markets modules. In order to do this, the team is implementing the necessary RPC interface for Forest to be able to effectively communicate with them.
With the Filecoin mainnet approaching, our first priority is to have a full node, contributing to the security of the network, as soon as possible. To do this, as mentioned above, we are using existing modules where possible and integrating them into Forest. Once we have a node up on mainnet, we will focus on improving our node by building the Storage Miner and Markets components natively in Rust.