Skip to content

Commit b9d94cd

Browse files
committed
feat: sequencer-trusting Following Mode
1 parent d80a556 commit b9d94cd

File tree

1 file changed

+94
-0
lines changed

1 file changed

+94
-0
lines changed

protocol/cross-safe-gossip.md

Lines changed: 94 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,94 @@
1+
# [interop]: Following Mode
2+
3+
| | |
4+
| ------------------ | -------------------------------------------------- |
5+
| Author | _@clabby_ |
6+
| Created at | _2025-06-24_ |
7+
| Initial Reviewers | _Protolambda, Adrian Sutton_ |
8+
| Need Approval From | _Mark Tyneway_ |
9+
| Status | _Draft / In Review / Implementing Actions / Final_ |
10+
11+
## Purpose
12+
13+
The purpose of this design doc is to specify a potential new "mode" for the [rollup node][rollup-node] to operate in a
14+
post-interop world, that alleviates the need to reach out to an `op-supervisor` to determine [cross-safety][cross-safe].
15+
16+
## Summary
17+
18+
This design doc introduces an alternative design for "following mode," where a [rollup node][rollup-node] operator
19+
trusts a sequencer's determination of
20+
[message validity](https://specs.optimism.io/interop/messaging.html#invalid-messages) in order to advance its
21+
[`cross-safe`][cross-safe] chain.
22+
23+
## Problem Statement + Context
24+
25+
For the vast majority of [Rollup Node][rollup-node] operators, operating a [supervisor][supervisor] is costly and
26+
undesirable. The benefit of operating one's own [supervisor][supervisor] is primarily to _ensure_ that the messages
27+
included in blocks by the sequencer are indeed valid. While this is a necessary step to _ensure_ an L2 chain's integrity
28+
post-interop, there are valid user stories that don't involve the costly validation of message validity, beyond trusting
29+
an _attestation_ from the sequencer that it has already been done.
30+
31+
For operators that are willing to trust the sequencer's attestations, an alternative mode can be introduced which
32+
bypasses the need for a [rollup node][rollup-node] to directly consult a [supervisor][supervisor] when determining
33+
[cross-safety][cross-safe].
34+
35+
## Proposed Solution
36+
37+
"Following Mode," at a high level, consists of [rollup nodes][rollup-node] subscribing to a new gossip topic that
38+
receives _signed [`cross-safe`][cross-safe] blocks_.
39+
40+
1. When the sequencing node consults with its own [supervisor][supervisor] and determines that a block can be promoted
41+
to [`cross-safe`][cross-safe], it will sign the payload hash of the new [cross-safe][cross-safe] block as specified in
42+
["Rollup Node P2P"](https://specs.optimism.io/protocol/rollup-node-p2p.html#block-signatures) and gossip the
43+
[signed payload envelope](https://specs.optimism.io/protocol/rollup-node-p2p.html#block-encoding) to peers.
44+
over the [`cross-safe-blocksv1` topic](#new-gossip-topic).
45+
1. Peers observing the topic that are operating in "Following Mode" will then validate the block as specified in
46+
["Rollup Node P2P"](https://specs.optimism.io/protocol/rollup-node-p2p.html#block-validation), and if validation succeeds:
47+
1. Check that the block has been derived as `local-safe`. If not, ignore the block.
48+
1. Perform [L1 consolidation](https://specs.optimism.io/protocol/derivation.html#l1-consolidation-payload-attributes-matching)
49+
on the derived attributes, relative to the received block.
50+
1. If L1 consolidation fails, reduce the `transactions` array in the derived attributes to only deposits
51+
following the [interop block replacement rules](https://specs.optimism.io/interop/derivation.html#replacing-invalid-blocks)
52+
, and try again.
53+
1. If finally, L1 consolidation fails after reducing the attributes to deposits-only, discard the block.
54+
55+
### New Gossip Topic
56+
57+
The new gossip topic that is introduced is `cross-safe-blocksv1`, broadcasted on
58+
`/optimism/<chainId>/0/cross-safe-blocks`. Block encoding for the `cross-safe-blocksv1` topic is as specified within
59+
["Rollup Node P2P - blocksv4"](https://specs.optimism.io/protocol/rollup-node-p2p.html#block-encoding).
60+
61+
Peers that broadcast invalid blocks on this topic, per the block validity rules mentioned above, should be downscored
62+
to mitigate possible DoS.
63+
64+
### Resource Usage
65+
66+
Resource utilization for this new mode should be minimal. A new gossip topic will need to be subscribed to among
67+
rollup node participants operating as a sequencer or in "Following Mode," and the sequencer will need to both sign
68+
and broadcast blocks as it promotes them to [`cross-safe`][cross-safe].
69+
70+
### Single Point of Failure and Multi Client Considerations
71+
72+
This change affects only the [rollup node][rollup-node], and will need to be implemented in both
73+
[`op-node`](https://github.com/ethereum-optimism/optimism/tree/develop/op-node) and
74+
[`kona-node`](https://github.com/op-rs/kona). It is invisible to the execution layer.
75+
76+
## Failure Mode Analysis
77+
78+
_TODO_
79+
80+
## Impact on Developer Experience
81+
82+
n/a - change affects node operators.
83+
84+
## Alternatives Considered
85+
86+
_TODO_
87+
88+
## Risks & Uncertainties
89+
90+
_TODO_
91+
92+
[cross-safe]: https://specs.optimism.io/interop/verifier.html#safe-inputs
93+
[supervisor]: https://specs.optimism.io/interop/supervisor.html#supervisor
94+
[rollup-node]: https://specs.optimism.io/protocol/rollup-node.html

0 commit comments

Comments
 (0)