Commit 0898f4a
committed
fix(fast-inbox): reconstruct each block's own L1-to-L2 message root from the blob (A-1384)
Post-flip the checkpoint blob carries a per-block L1-to-L2 message tree root, since any block within a
checkpoint can insert messages. The archiver reconstruction still read the root once from the checkpoint's
first block and applied it to every block, a stale pre-flip per-checkpoint assumption. Follower nodes
(prover / sync-only) that rebuild a non-first message-inserting block via retrievedToPublishedCheckpoint
therefore got the first block's root, so the world-state synchronizer inserted the correct message,
recomputed the real root, and mismatched the reconstructed header (block state does not match world state),
forking the node from the sequencer on the first message-consuming block. Reconstruct each block's tree
root from its own blob data instead.1 parent c32de25 commit 0898f4a
2 files changed
Lines changed: 26 additions & 7 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
79 | 79 | | |
80 | 80 | | |
81 | 81 | | |
| 82 | + | |
| 83 | + | |
| 84 | + | |
| 85 | + | |
| 86 | + | |
| 87 | + | |
| 88 | + | |
| 89 | + | |
| 90 | + | |
| 91 | + | |
| 92 | + | |
| 93 | + | |
| 94 | + | |
82 | 95 | | |
83 | 96 | | |
84 | 97 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
83 | 83 | | |
84 | 84 | | |
85 | 85 | | |
86 | | - | |
87 | | - | |
88 | | - | |
89 | | - | |
90 | 86 | | |
91 | 87 | | |
92 | 88 | | |
93 | 89 | | |
94 | | - | |
95 | | - | |
| 90 | + | |
| 91 | + | |
| 92 | + | |
| 93 | + | |
| 94 | + | |
| 95 | + | |
| 96 | + | |
| 97 | + | |
| 98 | + | |
| 99 | + | |
| 100 | + | |
| 101 | + | |
96 | 102 | | |
97 | 103 | | |
98 | 104 | | |
| |||
109 | 115 | | |
110 | 116 | | |
111 | 117 | | |
112 | | - | |
| 118 | + | |
113 | 119 | | |
114 | 120 | | |
115 | 121 | | |
| |||
0 commit comments