Important
This repo has been archived and its code merged into https://github.com/consensus-shipyard/ipc
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.
Please have a look in the docs to see an overview of the project, how to run the components, and previous demos.
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.
Linux. Install the following pre-requisites (instructions for Ubuntu):
- Install system packages:
sudo apt install build-essential clang cmake pkg-config libssl-dev protobuf-compiler
. - Install Rust. See instructions.
- Install cargo-make:
cargo install --force cargo-make
. - Install Foundry. See instructions.
- Install Docker (if you intend to build Docker images). See instructions.
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
We generate Rust bindings for the Solidity actors we need to invoke from the ipc-solidity-actors library, some of which are deployed during the genesis process. The bindings live in ipc_actors, and are generated automatically during the build, or with the following command:
make ipc-actors-abi
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
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