| 
1 | 1 | ---  | 
2 | 2 | title: Interop reorg awareness  | 
3 | 3 | lang: en-US  | 
4 |  | -description: How the OP Stack enables low-latency interop and avoids the double-spend problem.  | 
 | 4 | +description: How Superchain interop enables low-latency interop and avoids the double-spend problem.  | 
5 | 5 | ---  | 
6 | 6 | 
 
  | 
7 | 7 | import { Callout } from 'nextra/components'  | 
@@ -54,54 +54,13 @@ When that happens, the tokens are still on the source chain, but they also on th  | 
54 | 54 | 
 
  | 
55 | 55 | </details>  | 
56 | 56 | 
 
  | 
57 |  | -In Ethereum, incorrect state is usually a transient phenomenon.  | 
58 |  | -On L2, a sequencer can share one block through gossip and then post a different block to L1 (equivocation).  | 
59 |  | -If a sequencer equivocates, the dependent cross chain messages are reorged out once the block is posted by the sequencer to L1.  | 
60 |  | -On L1, new block can be replaced through a reorg, but after sufficient time has passed the block is finalized, and is nearly impossible to remove from the blockchain.  | 
 | 57 | +Most solutions to mitigate the double-spend problem rely on [L1 finality](https://ethereum.org/en/developers/docs/consensus-mechanisms/pos/#finality). However, that solution results in high latency and poor user experience.  | 
61 | 58 | 
 
  | 
62 |  | -The most frequent solution to mitigate the double-spend problem is to wait for L1 finality; however, that solution results in high latency and poor user experience.  | 
63 |  | - | 
64 |  | -## Block safety levels  | 
65 |  | - | 
66 |  | -To mitigate the double-spend problem while delivering a low-latency cross-chain experience, OP Stack interop uses [block safety levels](./explainer#block-safety-levels).  | 
 | 59 | +To mitigate the double-spend problem while delivering a low-latency cross-chain experience, Superchain interop uses [block safety levels](./explainer#block-safety-levels).  | 
67 | 60 | This means users can transfer assets across chains in the Superchain with 1-block latency, and should a reorg happen, either both the source and destination transactions would remain, or both of them would revert.  | 
68 | 61 | In every case, there is no window of opportunity to double spend.  | 
69 | 62 | 
 
  | 
70 |  | -{/*   | 
71 |  | -```mermaid  | 
72 |  | -
  | 
73 |  | -graph LR  | 
74 |  | -    classDef finalized fill:#CCC  | 
75 |  | -    classDef safe fill:#8F8  | 
76 |  | -    classDef unsafe fill:#F89  | 
77 |  | -
  | 
78 |  | -    subgraph A ["Chain A"]  | 
79 |  | -      A100["A<sub>100</sub>"]-->A101["A<sub>101</sub>"]-->A102["A<sub>102</sub>"]-->A103["A<sub>103</sub>"]  | 
80 |  | -    end  | 
81 |  | -    subgraph B ["Chain B"]  | 
82 |  | -      B300["B<sub>300</sub>"]-->B301["B<sub>301</sub>"]-->B302["B<sub>302</sub>"]-->B303["B<sub>303</sub>"]  | 
83 |  | -    end  | 
84 |  | -    subgraph C ["Chain C"]  | 
85 |  | -      C200["C<sub>200</sub>"]-->C201["C<sub>201</sub>"]-->C202["C<sub>202</sub>"]-->C203["C<sub>203</sub>"]  | 
86 |  | -    end  | 
87 |  | -    A101-.->B302  | 
88 |  | -    A101-.->B301  | 
89 |  | -    B300-.->A100  | 
90 |  | -    B302-.->C203  | 
91 |  | -    C200-.->B301  | 
92 |  | -    class C200 finalized  | 
93 |  | -    class A100,B300,C201,C202 safe  | 
94 |  | -    class A101,A102,A103,B301,B302,B303,C203 unsafe  | 
95 |  | -```  | 
96 |  | -
  | 
97 |  | -In the diagram above, solid arrows are the derivation of a block from the previous block in the chain.   | 
98 |  | -Dotted arrows go from the block with the initiating message (the source) to the block with the executing message (the destination).  | 
99 |  | -Blocks can either be finalized (grey), cross-safe (green), or unsafe (red).  | 
100 |  | -Blockchains B and C are high traffic, so they write their blocks to L1 quickly, and they are all *local-safe* (written to L1).  | 
101 |  | -However, blockchain A has only written block A<sub>100</sub> to the blockchain.   | 
102 |  | -As a result, block A<sub>101</sub> is unsafe, and so are all the blocks that depend on it, directly (A<sub>102</sub>, B<sub>301</sub>, and B<sub>302</sub>) or indirectly (A<sub>103</sub>, B<sub>303</sub>, and C<sub>203</sub>).  | 
103 |  | -Some of these blocks may be *local-safe* because they are written to L1, but none of them are *cross-safe* because they depend on a block that isn't.  | 
104 |  | -*/}  | 
 | 63 | +## Block safety levels  | 
105 | 64 | 
 
  | 
106 | 65 | ```mermaid  | 
107 | 66 | 
  | 
@@ -215,3 +174,9 @@ An L2 reorg could happen after the sequencer is decentralized.  | 
215 | 174 | In that case, there is a deterministic FCU (fork choice update), just as there is on L1.  | 
216 | 175 | At worst, some unsafe blocks need to be recalculated (if one fork is chosen over another).  | 
217 | 176 | */}  | 
 | 177 | + | 
 | 178 | +## Next steps  | 
 | 179 | + | 
 | 180 | +- Build a [revolutionary app](/app-developers/get-started) that uses multiple blockchains within the Superchain.  | 
 | 181 | +- Deploy a [SuperchainERC20](./tutorials/deploy-superchain-erc20) to the Superchain.  | 
 | 182 | +- View more [interop tutorials](./tutorials).  | 
0 commit comments