Architecture
We operate as a based rollup on Celestia. The SNARKs are posted to one namespace, and the operations are posted to a secondary namespace, enabling full nodes. This architecture is designed to be trust-minimized and censorship-resistant.
The sequencer is a partially unprivileged sequencer: while anybody can post update operations to the base layer, account creations must be signed by the sequencer. This is a temporary measure discussed in adr-003 (Service Registration).
Light nodes verify the state by downloading and verifying the SNARKs posted to Celestia. There is currently no P2P overlay for the Prism network.
- An epoch is defined by the valid operations posted to the namespace in the previous Celestia block.
- Services can replicate the state by running a full node, to serve their own stack and not rely on the liveness of the sequencer.
- Enables future prover decentralization (perhaps with a prover marketplace).
- Censorship resistance (updates can be posted directly to the DA layer).
graph TD User[User] -->|interacts with| ChatApp[Chat Application] subgraph ChatApp[Chat Application] LuminaPrism[Lumina+Prism] end LuminaPrism -->|uses| ServiceAPI[Service API] LuminaPrism -->|downloads + verifies SNARK| Celestia subgraph ChatServiceInfra[Chat Service Infrastructure] ChatServer[Chat Service Server] PrismNode[Prism Full Node] end ServiceAPI -->|requests keys and merkle proofs| ChatServiceInfra ServiceAPI -->|verifies merkle proofs against commitment in SNARK| ChatServiceInfra ChatServer -->|uploads key updates| Celestia Celestia -->|gives key updates from last celestia block| Sequencer Sequencer[Sequencer/Prover] -->|posts snark to celestia| Celestia