IPC subnets are organized as a tree and periodically checkpoint their state onto their parent to leverage its security.
In IPC, subnets are organized in a hierarchy, with each subnet having its consensus instance, cryptoeconomic rules, and agreement algorithm. This design increases the network’s capacity and accommodates new applications with varying consensus requirements.
Subnets periodically save their state by checkpointing it with their parent network. They are also able to interact with other subnets via cross-net transactions. IPC subnets can resemble other L2 platforms, such as optimistic rollups, ZK rollups, or a sidechain with a native communication bridge.
A complete overview of the architecture can be found in the IPC Design Reference.
The IPC Agent is the entry point to interacting with IPC. It is a client application that provides a simple and easy-to-use interface to interact with IPC as a user and run all the processes required to operate a subnet. The agent acts as an orchestrator, connecting to one blockchain node in each relevant subnet. It also handles the entire IPC workflow, including subnet creation, cross-net message passing, and checkpointing.
More information on the IPC Agent, as well as comprehensive documentation, can be found on GitHub.
IPC relies on two actors, the IPC Subnet Actor (ISA) and the IPC Gateway Actor (IGA), which are instantiated in each subnet and provide convenience and governance functions.
The IGA is an actor that contains all IPC-related information and logic associated with a subnet that needs to be replicated within the subnet. The ISA is the IGA’s parent-side counterpart; that is, it is deployed to a subnet’s parent and contains all data and logic associated with the particular child subnet.
The actors are currently implemented in Rust and provided as built-in WASM actors in Spacenet. We are currently working on a Solidity implementation.
Eudico is a modularized implementation of Lotus, itself an implementation of the Filecoin Distributed Storage Network. It is designed with the flexibility to support different use cases and, particularly relevant to IPC, the ability to load different consensus protocols.
In our architecture, Eudico is used as the blockchain node. A separate instance of Eudico is run for each subnet in which a given node participates.
The Eudico node is available on GitHub.