Skip to content

Latest commit

 

History

History
 
 

fendermint

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Fendermint

Fendermint is an effort to implement IPC with Tendermint Core. There is a preliminary roadmap that lays out the tasks towards implementing subnets that run IPLD and FVM under the Filecoin rootnet, sharing components with the Lotus/Eudico based implementation.

Prerequisites

  • Install the basic requirements for IPC (see README)

Quick Start

Docs

Please have a look in the docs to see an overview of the project, how to run the components, and previous demos.

IPC

Fendermint is built with support for IPC by design. If you are looking to deploy the infrastructure Fendermint-based IPC subnet, refer to the IPC main repo, or have a look at the IPC infrastructure docs.

Testing

The following command runs unit and integration tests:

make test

while the next command builds docker images and runs an end-to-end test using the SimpleCoin and the ethers examples:

make e2e

IPC Solidity Actors

We generate Rust bindings for the Solidity actors we need to invoke from the contracts folder, some of which are deployed during the genesis process. The bindings live in contracts/binding/, and are generated automatically during the build, or with the following command:

make gen

To run it, you will have to install forge.

The list of contracts for which we generate Rust bindings are in build.rs and needs to be maintained by hand, for example if a new "diamond facet" is added to a contract, it has to be added here. Diamond facets also have to be added manually in ipc.rs where the contracts which need to be deployed during genesis are described. These facets cannot be divined from the ABI description, so they have to be maintained explicitly.

To test whether the genesis process works, we can run the following unit test:

cargo test --release -p fendermint_vm_interpreter load_genesis

Docker Build

The tests above build the images as a dependency, but you can build them any time with the following command:

make docker-build

See the docker docs for more details about the build.

Pre-built Docker Image

The CI build publishes a Docker image to Github Container Registry upon a successful build on the main branch. This is the same image as the one used in the End-to-End tests; it contains the built-in actor bundle and IPC Solidity actors, ready to be deployed during genesis.

The image can be pulled with the following command:

docker pull ghcr.io/consensus-shipyard/fendermint:latest