consensus-shipyard / ipc

🌳 Spawn multi-level trees of customized, scalable, EVM-compatible networks with IPC. L2++ powered by FVM, Wasm, libp2p, IPFS/IPLD, and CometBFT.
https://ipc.space
Apache License 2.0
44 stars 39 forks source link

Modularizing the IPC framework #1010

Open raulk opened 5 months ago

raulk commented 5 months ago

Context

IPC is a framework to build customizable and scalable blockchains, deployed in the form of hierarchical subnets arranged in a multi-level tree that inherit security and services from their parent.

Currently, developers need to fork the IPC codebase to introduce their customizations, such as syscalls, actors, gas pricing, and more. Such forks are cumbersome to maintain. And adding insult to injury, we don't have designated extension points for one to add custom logic. So more often than not, forks end up taking a life of their own, making them even harder to maintain as time passes, customizations accumulate, and the upstream evolves.

Goal

Our goal is to modularize the IPC codebase, breaking it down into finer-grained, scoped crates where each exposes a clean, public, documented API. These module APIs compose around a standardised set of concepts and abstractions, snapping into place into an abstract skeleton that represents the blockchain node. We can draw conceptual inspiration from frameworks like go-libp2p, Spring Framework, and others.

Idea parking lot

This is draft breakdown of ideas and tasks: