Surge Architecture Overview
How the off-chain and on-chain entities interact to deliver real-time proving and synchronous composability.
Table of Contents
- Entities
- Off-Chain Pipeline
- On-Chain Contracts
- Block Lifecycle
- Signal Relay Mechanism
- Reorgs and Recovery
Entities
Off-Chain
| Entity | Role |
|---|---|
| User | Signs UserOps (intent bundles) and sends them to the builder. Never submits L1 transactions directly. |
| Catalyst (Builder) | Receives UserOps, simulates L2 execution, requests proofs, and submits the final multicall to L1. The central orchestrator. |
| Raiko (Prover) | Receives block proving requests from Catalyst. Delegates proof generation to the zkVM and returns validity proofs. |
| Zisk (zkVM) | The zero-knowledge virtual machine that Raiko uses under the hood to generate ZK validity proofs for L2 blocks. |
| Driver (L2 Node) | The L2 consensus/sync layer (taiko-client). Receives preconfirmed blocks from Catalyst, forwards them to the execution client (NMC or Alethia-Reth) via the Engine API, and resyncs its canonical chain when proposals are submitted to L1. Reorgs out blocks that cannot be proven or have stale anchors. |
On-Chain (L1)
| Contract | Role |
|---|---|
| RealTimeInbox | The L1 entry point for proposals. Accepts propose(data, checkpoint, proof) calls that atomically submit an L2 block, verify its proof, and finalize state. |
| SurgeVerifier | Routes proof verification to the correct internal verifier (Zisk, SP1, RISC0). Supports multi-proof thresholds. |
| SignalService (L1) | Stores cross-chain signals as deterministic storage slots. Manages checkpoints. The authorized syncer is the RealTimeInbox. |
| Bridge (L1) | Sends and processes cross-chain messages. Sends messages by writing signal slots; processes messages by verifying signal receipt. |
On-Chain (L2)
| Contract | Role |
|---|---|
| Anchor | The L2 system contract executed as the first transaction in every block. Syncs L1 checkpoints and injects fast signal slots. The authorized syncer for L2 SignalService. |
| SignalService (L2) | Stores L2 signals and receives fast signals from the Anchor. Enables proof-free verification for builder-injected signals. |
| Bridge (L2) | Processes inbound L1 messages (proof-free via fast signals injected by Anchor) and sends outbound L2 messages that become L1 Calls (proven via merkle proofs on L1). |
System Overview
Before diving into the pipeline details, here's how the layers connect:
┌─────────────────── L1 (Ethereum / Gnosis) ──────────────────┐
│ │
│ Multicall tx (atomic): │
│ Call 1: UserOpsSubmitter.executeBatch() │
│ Call 2: RealTimeInbox.propose(data, checkpoint, proof) │
│ Call 3: Bridge.processMessage() (L1 Calls) │
│ │
│ Contracts: RealTimeInbox, SurgeVerifier, SignalService, │
│ Bridge, UserOpsSubmitter │
│ Repo: surge-taiko-mono/packages/protocol/ │
└───────────────────────────┬───────────────────────────────────┘
│ ProposedAndProved event
▼
┌─────────────────── L2 (Surge) ──────────────────────────────┐