---
# System prepended metadata

title: Shared-Publisher Rollback Scenarios

---

# Shared-Publisher Rollback Scenarios 

## 🟥 Scenario 1: Invalid Block
**Description:**
A sequencer published a block that includes an xCall, but the block is invalid (state transition or false xCall inclusion). 
Detection happens async in 2 stages:
* SP doesn't include the block
* At some point a ZK invalidity proof is submitted 

**Why it’s invalid:**
Block invalidity can't be included in the superblock

**Outcome:**

* SP rejects the block
* Dependent blocks are rolled back in the next epoch
* The sequencer is slashed or penalized
* Faulty sequencer is maximally slashed

![invalid block.drawio](https://hackmd.io/_uploads/ryTScYjree.png)

## 🟨 Scenario 2: Missing xCall
**Description:**
A sequencer publishes a block, but omits an xCall that was previously committed during the 2PC pre-block phase.

**Why it’s invalid:**
The 2PC commit phase guarantees the xCall is expected and must be included. If it’s missing, this breaks synchronous composability and atomicity.

**Outcome:**

* SP rejects the block
* Dependent blocks are immediately (within the epoch) rolled back
* Rolled back blocks are re-produced for the same epoch
* Sequencer may be penalized for non-deterministic execution and/or penalized on the P2P layer (reduces ability for future xCalls)

![missing xCall.drawio](https://hackmd.io/_uploads/S1pDqKiBll.png)


## 🟧 Scenario 3: Missing Block
**Description:**
A rollup sequencer doesn’t publish a block at all, despite having pre-committed to an xCall as part of a multi-rollup execution.

**Why it’s invalid:**
Synchronous cross-rollup execution relies on timely block publication. Failure to produce the block breaks the atomicity of the transaction bundle.

**Outcome:**

* The SP can't include the block
* Dependent blocks roll back immediately (within the epoch)
* Rolled back blocks are re-produced for the same epoch

![missing block.drawio](https://hackmd.io/_uploads/SkTYqFoBxl.png)

## 🟦 Scenario 4: Missing ZK Proof
**Description:**
The sequencer publishes a block that includes xCalls, but fails to submit the zero-knowledge (ZK) proof for that block within the required time.

**Why it’s invalid:**
The SP needs the ZK proof to finalize the block and aggregate it into the superblock. Without the proof, the state transitions are unverified.

**Outcome:**

* SP excludes the block from the aggregated proof
* Dependent blocks roll back immediately (within the epoch)
* Rolled back blocks are re-produced the next epoch
* Faulty sequencer is penalized

![missing zk.drawio](https://hackmd.io/_uploads/Hk6sqFsrex.png)
