Skip to content
This repository has been archived by the owner on Jan 11, 2024. It is now read-only.

IPC implementation atop CometBFT

License

Unknown, MIT licenses found

Licenses found

Unknown
LICENSE-APACHE
MIT
LICENSE-MIT
Notifications You must be signed in to change notification settings

consensus-shipyard/fendermint

Repository files navigation

Important

This repo has been archived and its code merged into https://github.com/consensus-shipyard/ipc

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.

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.

Building from source

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.

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 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

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

About

IPC implementation atop CometBFT

Resources

License

Unknown, MIT licenses found

Licenses found

Unknown
LICENSE-APACHE
MIT
LICENSE-MIT

Stars

Watchers

Forks

Packages

No packages published

Languages