Commit 69d7b58
authored
fix(sequencer): set own proposed checkpoint locally instead of via p2p loopback (#23659)
## Motivation
The proposer relied on looping its own checkpoint proposal back through
the p2p receive path to advance its local proposed-checkpoint tip before
propagating. Under `broadcastInvalidBlockProposal` the broadcast
checkpoint archive is deliberately corrupted, so the loopback handler's
archive-based block lookup (`getBlockData({ archive })`) found nothing
and retried until the next slot. By the time the proposer returned from
broadcast, propagation had slipped past the p2p validator's stale window
— producing intermittent failures (e.g. peers rejecting a late slot
proposal).
## Approach
The proposer's optimistic proposed-checkpoint tip is the proposer's own
local state, so it is now set directly in the sequencer's checkpoint
proposal job rather than via a p2p loopback. The job adds the proposed
checkpoint to the archiver from local checkpoint data (block numbers and
counts, never the possibly-corrupted broadcast archive) immediately
before gossiping, failing closed if the local insert fails. Because
every block is already added to the archiver's FIFO queue (and awaited)
during block building, the checkpoint insert needs no retry. The
`notifyOwnCheckpointProposal` loopback is removed entirely, so the path
is identical whether p2p is enabled or not.
## Changes
- **stdlib**: New `ProposedCheckpointSink` interface alongside
`L2BlockSink`.
- **sequencer-client**: `CheckpointProposalJob` now pushes the proposed
checkpoint to the archiver from local data before broadcast, gated on
proposer pipelining and skipped when block-push is disabled
(`skipPushProposedBlocksToArchiver`, fisherman mode); widened the
sequencer/client `l2BlockSource` types to `ProposedCheckpointSink`.
- **p2p**: Removed `notifyOwnCheckpointProposal` from the `P2PService`
interface, the libp2p and dummy services, and the
`P2PClient.broadcastCheckpointProposal` call site (own proposals are
still stored in the attestation pool before propagation).
- **validator-client**: The all-nodes own-proposal branch now skips
validation and returns; removed the now-dead
`setProposedCheckpointFromBlocks` and narrowed the archiver `Pick`.
- **tests**: Added job tests (push-from-local-data and
order-before-gossip, abort-on-push-failure,
no-push-when-pipelining-disabled, fisherman) and a proposal_handler
own-proposal test; removed the obsolete libp2p loopback test and the e2e
slash-test stub; widened affected mock types.1 parent 1aa8f10 commit 69d7b58
15 files changed
Lines changed: 165 additions & 101 deletions
File tree
- yarn-project
- end-to-end/src/e2e_p2p
- p2p/src
- client
- services
- libp2p
- sequencer-client/src
- client
- sequencer
- stdlib/src/block
- validator-client/src
Lines changed: 0 additions & 12 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
213 | 213 | | |
214 | 214 | | |
215 | 215 | | |
216 | | - | |
217 | | - | |
218 | | - | |
219 | | - | |
220 | | - | |
221 | | - | |
222 | | - | |
223 | | - | |
224 | | - | |
225 | | - | |
226 | | - | |
227 | | - | |
228 | 216 | | |
229 | 217 | | |
230 | 218 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
377 | 377 | | |
378 | 378 | | |
379 | 379 | | |
380 | | - | |
381 | | - | |
382 | 380 | | |
383 | 381 | | |
384 | 382 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1 | 1 | | |
2 | 2 | | |
3 | | - | |
| 3 | + | |
4 | 4 | | |
5 | 5 | | |
6 | 6 | | |
| |||
93 | 93 | | |
94 | 94 | | |
95 | 95 | | |
96 | | - | |
97 | | - | |
98 | | - | |
99 | | - | |
100 | | - | |
101 | | - | |
102 | 96 | | |
103 | 97 | | |
104 | 98 | | |
| |||
Lines changed: 0 additions & 10 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1071 | 1071 | | |
1072 | 1072 | | |
1073 | 1073 | | |
1074 | | - | |
1075 | | - | |
1076 | | - | |
1077 | | - | |
1078 | | - | |
1079 | | - | |
1080 | | - | |
1081 | | - | |
1082 | | - | |
1083 | | - | |
1084 | 1074 | | |
1085 | 1075 | | |
1086 | 1076 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
722 | 722 | | |
723 | 723 | | |
724 | 724 | | |
725 | | - | |
726 | | - | |
727 | | - | |
728 | | - | |
729 | 725 | | |
730 | 726 | | |
731 | 727 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
102 | 102 | | |
103 | 103 | | |
104 | 104 | | |
105 | | - | |
106 | | - | |
107 | | - | |
108 | 105 | | |
109 | 106 | | |
110 | 107 | | |
| |||
Lines changed: 2 additions & 2 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
12 | 12 | | |
13 | 13 | | |
14 | 14 | | |
15 | | - | |
| 15 | + | |
16 | 16 | | |
17 | 17 | | |
18 | 18 | | |
| |||
56 | 56 | | |
57 | 57 | | |
58 | 58 | | |
59 | | - | |
| 59 | + | |
60 | 60 | | |
61 | 61 | | |
62 | 62 | | |
| |||
Lines changed: 53 additions & 2 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
24 | 24 | | |
25 | 25 | | |
26 | 26 | | |
| 27 | + | |
27 | 28 | | |
28 | 29 | | |
29 | 30 | | |
| |||
87 | 88 | | |
88 | 89 | | |
89 | 90 | | |
90 | | - | |
| 91 | + | |
91 | 92 | | |
92 | 93 | | |
93 | 94 | | |
| |||
244 | 245 | | |
245 | 246 | | |
246 | 247 | | |
247 | | - | |
| 248 | + | |
248 | 249 | | |
| 250 | + | |
249 | 251 | | |
250 | 252 | | |
251 | 253 | | |
| |||
1134 | 1136 | | |
1135 | 1137 | | |
1136 | 1138 | | |
| 1139 | + | |
| 1140 | + | |
| 1141 | + | |
| 1142 | + | |
| 1143 | + | |
| 1144 | + | |
| 1145 | + | |
| 1146 | + | |
| 1147 | + | |
| 1148 | + | |
| 1149 | + | |
| 1150 | + | |
| 1151 | + | |
| 1152 | + | |
| 1153 | + | |
| 1154 | + | |
| 1155 | + | |
| 1156 | + | |
| 1157 | + | |
| 1158 | + | |
| 1159 | + | |
| 1160 | + | |
| 1161 | + | |
| 1162 | + | |
| 1163 | + | |
| 1164 | + | |
| 1165 | + | |
| 1166 | + | |
| 1167 | + | |
| 1168 | + | |
| 1169 | + | |
| 1170 | + | |
| 1171 | + | |
| 1172 | + | |
1137 | 1173 | | |
1138 | 1174 | | |
1139 | 1175 | | |
| |||
1705 | 1741 | | |
1706 | 1742 | | |
1707 | 1743 | | |
| 1744 | + | |
| 1745 | + | |
| 1746 | + | |
| 1747 | + | |
| 1748 | + | |
| 1749 | + | |
| 1750 | + | |
| 1751 | + | |
| 1752 | + | |
| 1753 | + | |
| 1754 | + | |
| 1755 | + | |
| 1756 | + | |
| 1757 | + | |
| 1758 | + | |
1708 | 1759 | | |
1709 | 1760 | | |
1710 | 1761 | | |
| |||
Lines changed: 3 additions & 3 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
10 | 10 | | |
11 | 11 | | |
12 | 12 | | |
13 | | - | |
| 13 | + | |
14 | 14 | | |
15 | 15 | | |
16 | 16 | | |
| |||
206 | 206 | | |
207 | 207 | | |
208 | 208 | | |
209 | | - | |
| 209 | + | |
210 | 210 | | |
211 | 211 | | |
212 | 212 | | |
| |||
438 | 438 | | |
439 | 439 | | |
440 | 440 | | |
441 | | - | |
| 441 | + | |
442 | 442 | | |
443 | 443 | | |
444 | 444 | | |
| |||
Lines changed: 48 additions & 1 deletion
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
31 | 31 | | |
32 | 32 | | |
33 | 33 | | |
| 34 | + | |
34 | 35 | | |
35 | 36 | | |
36 | 37 | | |
| |||
137 | 138 | | |
138 | 139 | | |
139 | 140 | | |
140 | | - | |
| 141 | + | |
141 | 142 | | |
142 | 143 | | |
143 | 144 | | |
| |||
774 | 775 | | |
775 | 776 | | |
776 | 777 | | |
| 778 | + | |
| 779 | + | |
| 780 | + | |
| 781 | + | |
| 782 | + | |
| 783 | + | |
| 784 | + | |
777 | 785 | | |
778 | 786 | | |
779 | 787 | | |
| |||
1489 | 1497 | | |
1490 | 1498 | | |
1491 | 1499 | | |
| 1500 | + | |
| 1501 | + | |
| 1502 | + | |
| 1503 | + | |
| 1504 | + | |
| 1505 | + | |
| 1506 | + | |
| 1507 | + | |
| 1508 | + | |
| 1509 | + | |
| 1510 | + | |
| 1511 | + | |
| 1512 | + | |
| 1513 | + | |
| 1514 | + | |
| 1515 | + | |
| 1516 | + | |
| 1517 | + | |
| 1518 | + | |
| 1519 | + | |
| 1520 | + | |
| 1521 | + | |
| 1522 | + | |
| 1523 | + | |
| 1524 | + | |
| 1525 | + | |
| 1526 | + | |
| 1527 | + | |
| 1528 | + | |
| 1529 | + | |
| 1530 | + | |
| 1531 | + | |
| 1532 | + | |
| 1533 | + | |
| 1534 | + | |
| 1535 | + | |
| 1536 | + | |
| 1537 | + | |
| 1538 | + | |
1492 | 1539 | | |
1493 | 1540 | | |
1494 | 1541 | | |
| |||
0 commit comments