@lodestar/beacon-node 1.43.0-dev.3d6ae250a4 → 1.43.0-dev.3fe3b04cbd

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (265) hide show
  1. package/lib/api/impl/beacon/blocks/index.d.ts.map +1 -1
  2. package/lib/api/impl/beacon/blocks/index.js +16 -5
  3. package/lib/api/impl/beacon/blocks/index.js.map +1 -1
  4. package/lib/api/impl/beacon/pool/index.d.ts.map +1 -1
  5. package/lib/api/impl/beacon/pool/index.js +45 -2
  6. package/lib/api/impl/beacon/pool/index.js.map +1 -1
  7. package/lib/api/impl/debug/index.d.ts.map +1 -1
  8. package/lib/api/impl/debug/index.js +0 -1
  9. package/lib/api/impl/debug/index.js.map +1 -1
  10. package/lib/api/impl/lodestar/index.js +1 -1
  11. package/lib/api/impl/lodestar/index.js.map +1 -1
  12. package/lib/api/impl/validator/index.d.ts.map +1 -1
  13. package/lib/api/impl/validator/index.js +68 -2
  14. package/lib/api/impl/validator/index.js.map +1 -1
  15. package/lib/chain/blocks/blockInput/blockInput.d.ts +3 -0
  16. package/lib/chain/blocks/blockInput/blockInput.d.ts.map +1 -1
  17. package/lib/chain/blocks/blockInput/blockInput.js +4 -1
  18. package/lib/chain/blocks/blockInput/blockInput.js.map +1 -1
  19. package/lib/chain/blocks/importBlock.d.ts.map +1 -1
  20. package/lib/chain/blocks/importBlock.js +16 -28
  21. package/lib/chain/blocks/importBlock.js.map +1 -1
  22. package/lib/chain/blocks/importExecutionPayload.d.ts +19 -6
  23. package/lib/chain/blocks/importExecutionPayload.d.ts.map +1 -1
  24. package/lib/chain/blocks/importExecutionPayload.js +45 -23
  25. package/lib/chain/blocks/importExecutionPayload.js.map +1 -1
  26. package/lib/chain/blocks/index.d.ts +5 -3
  27. package/lib/chain/blocks/index.d.ts.map +1 -1
  28. package/lib/chain/blocks/index.js +59 -25
  29. package/lib/chain/blocks/index.js.map +1 -1
  30. package/lib/chain/blocks/payloadEnvelopeInput/payloadEnvelopeInput.d.ts +4 -0
  31. package/lib/chain/blocks/payloadEnvelopeInput/payloadEnvelopeInput.d.ts.map +1 -1
  32. package/lib/chain/blocks/payloadEnvelopeInput/payloadEnvelopeInput.js +9 -2
  33. package/lib/chain/blocks/payloadEnvelopeInput/payloadEnvelopeInput.js.map +1 -1
  34. package/lib/chain/blocks/payloadEnvelopeInput/types.d.ts +1 -0
  35. package/lib/chain/blocks/payloadEnvelopeInput/types.d.ts.map +1 -1
  36. package/lib/chain/blocks/payloadEnvelopeProcessor.js +2 -2
  37. package/lib/chain/blocks/payloadEnvelopeProcessor.js.map +1 -1
  38. package/lib/chain/blocks/types.d.ts +4 -3
  39. package/lib/chain/blocks/types.d.ts.map +1 -1
  40. package/lib/chain/blocks/utils/chainSegment.d.ts +23 -2
  41. package/lib/chain/blocks/utils/chainSegment.d.ts.map +1 -1
  42. package/lib/chain/blocks/utils/chainSegment.js +89 -12
  43. package/lib/chain/blocks/utils/chainSegment.js.map +1 -1
  44. package/lib/chain/blocks/verifyBlock.d.ts +5 -3
  45. package/lib/chain/blocks/verifyBlock.d.ts.map +1 -1
  46. package/lib/chain/blocks/verifyBlock.js +50 -7
  47. package/lib/chain/blocks/verifyBlock.js.map +1 -1
  48. package/lib/chain/blocks/verifyBlocksExecutionPayloads.d.ts +0 -4
  49. package/lib/chain/blocks/verifyBlocksExecutionPayloads.d.ts.map +1 -1
  50. package/lib/chain/blocks/verifyBlocksExecutionPayloads.js +5 -2
  51. package/lib/chain/blocks/verifyBlocksExecutionPayloads.js.map +1 -1
  52. package/lib/chain/blocks/verifyBlocksSanityChecks.d.ts +2 -1
  53. package/lib/chain/blocks/verifyBlocksSanityChecks.d.ts.map +1 -1
  54. package/lib/chain/blocks/verifyBlocksSanityChecks.js +25 -5
  55. package/lib/chain/blocks/verifyBlocksSanityChecks.js.map +1 -1
  56. package/lib/chain/blocks/verifyExecutionPayloadEnvelope.d.ts +2 -2
  57. package/lib/chain/blocks/verifyExecutionPayloadEnvelope.d.ts.map +1 -1
  58. package/lib/chain/blocks/verifyExecutionPayloadEnvelope.js +7 -4
  59. package/lib/chain/blocks/verifyExecutionPayloadEnvelope.js.map +1 -1
  60. package/lib/chain/blocks/verifyPayloadsDataAvailability.d.ts.map +1 -1
  61. package/lib/chain/blocks/verifyPayloadsDataAvailability.js +8 -3
  62. package/lib/chain/blocks/verifyPayloadsDataAvailability.js.map +1 -1
  63. package/lib/chain/chain.d.ts +3 -2
  64. package/lib/chain/chain.d.ts.map +1 -1
  65. package/lib/chain/chain.js +20 -11
  66. package/lib/chain/chain.js.map +1 -1
  67. package/lib/chain/emitter.d.ts +0 -11
  68. package/lib/chain/emitter.d.ts.map +1 -1
  69. package/lib/chain/emitter.js +0 -4
  70. package/lib/chain/emitter.js.map +1 -1
  71. package/lib/chain/errors/blockError.d.ts +8 -1
  72. package/lib/chain/errors/blockError.d.ts.map +1 -1
  73. package/lib/chain/errors/blockError.js +2 -0
  74. package/lib/chain/errors/blockError.js.map +1 -1
  75. package/lib/chain/errors/index.d.ts +1 -0
  76. package/lib/chain/errors/index.d.ts.map +1 -1
  77. package/lib/chain/errors/index.js +1 -0
  78. package/lib/chain/errors/index.js.map +1 -1
  79. package/lib/chain/errors/proposerPreferences.d.ts +40 -0
  80. package/lib/chain/errors/proposerPreferences.d.ts.map +1 -0
  81. package/lib/chain/errors/proposerPreferences.js +14 -0
  82. package/lib/chain/errors/proposerPreferences.js.map +1 -0
  83. package/lib/chain/interface.d.ts +3 -2
  84. package/lib/chain/interface.d.ts.map +1 -1
  85. package/lib/chain/interface.js.map +1 -1
  86. package/lib/chain/opPools/payloadAttestationPool.d.ts +3 -2
  87. package/lib/chain/opPools/payloadAttestationPool.d.ts.map +1 -1
  88. package/lib/chain/opPools/payloadAttestationPool.js +26 -4
  89. package/lib/chain/opPools/payloadAttestationPool.js.map +1 -1
  90. package/lib/chain/prepareNextSlot.d.ts.map +1 -1
  91. package/lib/chain/prepareNextSlot.js +16 -18
  92. package/lib/chain/prepareNextSlot.js.map +1 -1
  93. package/lib/chain/produceBlock/produceBlockBody.d.ts +12 -3
  94. package/lib/chain/produceBlock/produceBlockBody.d.ts.map +1 -1
  95. package/lib/chain/produceBlock/produceBlockBody.js +35 -17
  96. package/lib/chain/produceBlock/produceBlockBody.js.map +1 -1
  97. package/lib/chain/regen/interface.d.ts +1 -0
  98. package/lib/chain/regen/interface.d.ts.map +1 -1
  99. package/lib/chain/regen/interface.js +1 -0
  100. package/lib/chain/regen/interface.js.map +1 -1
  101. package/lib/chain/regen/queued.d.ts.map +1 -1
  102. package/lib/chain/regen/queued.js +1 -4
  103. package/lib/chain/regen/queued.js.map +1 -1
  104. package/lib/chain/regen/regen.d.ts.map +1 -1
  105. package/lib/chain/regen/regen.js +1 -4
  106. package/lib/chain/regen/regen.js.map +1 -1
  107. package/lib/chain/seenCache/index.d.ts +1 -0
  108. package/lib/chain/seenCache/index.d.ts.map +1 -1
  109. package/lib/chain/seenCache/index.js +1 -0
  110. package/lib/chain/seenCache/index.js.map +1 -1
  111. package/lib/chain/seenCache/seenPayloadEnvelopeInput.d.ts +14 -5
  112. package/lib/chain/seenCache/seenPayloadEnvelopeInput.d.ts.map +1 -1
  113. package/lib/chain/seenCache/seenPayloadEnvelopeInput.js +49 -15
  114. package/lib/chain/seenCache/seenPayloadEnvelopeInput.js.map +1 -1
  115. package/lib/chain/seenCache/seenProposerPreferences.d.ts +16 -0
  116. package/lib/chain/seenCache/seenProposerPreferences.d.ts.map +1 -0
  117. package/lib/chain/seenCache/seenProposerPreferences.js +26 -0
  118. package/lib/chain/seenCache/seenProposerPreferences.js.map +1 -0
  119. package/lib/chain/validation/block.d.ts.map +1 -1
  120. package/lib/chain/validation/block.js +1 -0
  121. package/lib/chain/validation/block.js.map +1 -1
  122. package/lib/chain/validation/executionPayloadBid.js +11 -8
  123. package/lib/chain/validation/executionPayloadBid.js.map +1 -1
  124. package/lib/chain/validation/proposerPreferences.d.ts +8 -0
  125. package/lib/chain/validation/proposerPreferences.d.ts.map +1 -0
  126. package/lib/chain/validation/proposerPreferences.js +91 -0
  127. package/lib/chain/validation/proposerPreferences.js.map +1 -0
  128. package/lib/metrics/metrics/lodestar.d.ts +1 -0
  129. package/lib/metrics/metrics/lodestar.d.ts.map +1 -1
  130. package/lib/metrics/metrics/lodestar.js +4 -0
  131. package/lib/metrics/metrics/lodestar.js.map +1 -1
  132. package/lib/network/gossip/interface.d.ts +7 -1
  133. package/lib/network/gossip/interface.d.ts.map +1 -1
  134. package/lib/network/gossip/interface.js +1 -0
  135. package/lib/network/gossip/interface.js.map +1 -1
  136. package/lib/network/gossip/scoringParameters.d.ts.map +1 -1
  137. package/lib/network/gossip/scoringParameters.js +12 -1
  138. package/lib/network/gossip/scoringParameters.js.map +1 -1
  139. package/lib/network/gossip/topic.d.ts +29 -766
  140. package/lib/network/gossip/topic.d.ts.map +1 -1
  141. package/lib/network/gossip/topic.js +6 -0
  142. package/lib/network/gossip/topic.js.map +1 -1
  143. package/lib/network/interface.d.ts +1 -0
  144. package/lib/network/interface.d.ts.map +1 -1
  145. package/lib/network/network.d.ts +1 -0
  146. package/lib/network/network.d.ts.map +1 -1
  147. package/lib/network/network.js +5 -0
  148. package/lib/network/network.js.map +1 -1
  149. package/lib/network/processor/gossipHandlers.d.ts.map +1 -1
  150. package/lib/network/processor/gossipHandlers.js +38 -16
  151. package/lib/network/processor/gossipHandlers.js.map +1 -1
  152. package/lib/network/processor/gossipQueues/index.d.ts.map +1 -1
  153. package/lib/network/processor/gossipQueues/index.js +5 -0
  154. package/lib/network/processor/gossipQueues/index.js.map +1 -1
  155. package/lib/network/processor/index.d.ts.map +1 -1
  156. package/lib/network/processor/index.js +6 -5
  157. package/lib/network/processor/index.js.map +1 -1
  158. package/lib/network/reqresp/handlers/beaconBlocksByRange.d.ts.map +1 -1
  159. package/lib/network/reqresp/handlers/beaconBlocksByRange.js +14 -6
  160. package/lib/network/reqresp/handlers/beaconBlocksByRange.js.map +1 -1
  161. package/lib/network/reqresp/handlers/blobSidecarsByRange.d.ts.map +1 -1
  162. package/lib/network/reqresp/handlers/blobSidecarsByRange.js +11 -5
  163. package/lib/network/reqresp/handlers/blobSidecarsByRange.js.map +1 -1
  164. package/lib/network/reqresp/handlers/dataColumnSidecarsByRange.d.ts.map +1 -1
  165. package/lib/network/reqresp/handlers/dataColumnSidecarsByRange.js +17 -5
  166. package/lib/network/reqresp/handlers/dataColumnSidecarsByRange.js.map +1 -1
  167. package/lib/network/reqresp/handlers/executionPayloadEnvelopesByRange.d.ts.map +1 -1
  168. package/lib/network/reqresp/handlers/executionPayloadEnvelopesByRange.js +7 -4
  169. package/lib/network/reqresp/handlers/executionPayloadEnvelopesByRange.js.map +1 -1
  170. package/lib/node/nodejs.js +2 -2
  171. package/lib/node/nodejs.js.map +1 -1
  172. package/lib/sync/range/batch.d.ts +23 -2
  173. package/lib/sync/range/batch.d.ts.map +1 -1
  174. package/lib/sync/range/batch.js +132 -44
  175. package/lib/sync/range/batch.js.map +1 -1
  176. package/lib/sync/range/chain.d.ts +6 -2
  177. package/lib/sync/range/chain.d.ts.map +1 -1
  178. package/lib/sync/range/chain.js +26 -7
  179. package/lib/sync/range/chain.js.map +1 -1
  180. package/lib/sync/range/range.d.ts.map +1 -1
  181. package/lib/sync/range/range.js +17 -6
  182. package/lib/sync/range/range.js.map +1 -1
  183. package/lib/sync/types.d.ts +34 -0
  184. package/lib/sync/types.d.ts.map +1 -1
  185. package/lib/sync/types.js +34 -0
  186. package/lib/sync/types.js.map +1 -1
  187. package/lib/sync/unknownBlock.d.ts +22 -1
  188. package/lib/sync/unknownBlock.d.ts.map +1 -1
  189. package/lib/sync/unknownBlock.js +602 -53
  190. package/lib/sync/unknownBlock.js.map +1 -1
  191. package/lib/sync/utils/downloadByRange.d.ts +46 -10
  192. package/lib/sync/utils/downloadByRange.d.ts.map +1 -1
  193. package/lib/sync/utils/downloadByRange.js +162 -24
  194. package/lib/sync/utils/downloadByRange.js.map +1 -1
  195. package/lib/sync/utils/downloadByRoot.d.ts.map +1 -1
  196. package/lib/sync/utils/downloadByRoot.js +16 -2
  197. package/lib/sync/utils/downloadByRoot.js.map +1 -1
  198. package/lib/sync/utils/pendingBlocksTree.d.ts +0 -1
  199. package/lib/sync/utils/pendingBlocksTree.d.ts.map +1 -1
  200. package/lib/sync/utils/pendingBlocksTree.js +0 -9
  201. package/lib/sync/utils/pendingBlocksTree.js.map +1 -1
  202. package/lib/util/sszBytes.d.ts.map +1 -1
  203. package/lib/util/sszBytes.js +8 -6
  204. package/lib/util/sszBytes.js.map +1 -1
  205. package/package.json +15 -15
  206. package/src/api/impl/beacon/blocks/index.ts +21 -5
  207. package/src/api/impl/beacon/pool/index.ts +83 -1
  208. package/src/api/impl/debug/index.ts +0 -1
  209. package/src/api/impl/lodestar/index.ts +1 -1
  210. package/src/api/impl/validator/index.ts +82 -1
  211. package/src/chain/blocks/blockInput/blockInput.ts +4 -1
  212. package/src/chain/blocks/importBlock.ts +16 -48
  213. package/src/chain/blocks/importExecutionPayload.ts +59 -25
  214. package/src/chain/blocks/index.ts +73 -22
  215. package/src/chain/blocks/payloadEnvelopeInput/payloadEnvelopeInput.ts +10 -2
  216. package/src/chain/blocks/payloadEnvelopeInput/types.ts +1 -0
  217. package/src/chain/blocks/payloadEnvelopeProcessor.ts +2 -2
  218. package/src/chain/blocks/types.ts +4 -3
  219. package/src/chain/blocks/utils/chainSegment.ts +114 -17
  220. package/src/chain/blocks/verifyBlock.ts +70 -9
  221. package/src/chain/blocks/verifyBlocksExecutionPayloads.ts +6 -4
  222. package/src/chain/blocks/verifyBlocksSanityChecks.ts +26 -7
  223. package/src/chain/blocks/verifyExecutionPayloadEnvelope.ts +9 -4
  224. package/src/chain/blocks/verifyPayloadsDataAvailability.ts +7 -4
  225. package/src/chain/chain.ts +26 -10
  226. package/src/chain/emitter.ts +0 -11
  227. package/src/chain/errors/blockError.ts +4 -1
  228. package/src/chain/errors/index.ts +1 -0
  229. package/src/chain/errors/proposerPreferences.ts +47 -0
  230. package/src/chain/interface.ts +7 -1
  231. package/src/chain/opPools/payloadAttestationPool.ts +29 -8
  232. package/src/chain/prepareNextSlot.ts +21 -29
  233. package/src/chain/produceBlock/produceBlockBody.ts +46 -22
  234. package/src/chain/regen/interface.ts +1 -0
  235. package/src/chain/regen/queued.ts +2 -7
  236. package/src/chain/regen/regen.ts +2 -7
  237. package/src/chain/seenCache/index.ts +1 -0
  238. package/src/chain/seenCache/seenPayloadEnvelopeInput.ts +67 -18
  239. package/src/chain/seenCache/seenProposerPreferences.ts +32 -0
  240. package/src/chain/validation/block.ts +1 -0
  241. package/src/chain/validation/executionPayloadBid.ts +11 -8
  242. package/src/chain/validation/proposerPreferences.ts +110 -0
  243. package/src/metrics/metrics/lodestar.ts +4 -0
  244. package/src/network/gossip/interface.ts +6 -0
  245. package/src/network/gossip/scoringParameters.ts +14 -1
  246. package/src/network/gossip/topic.ts +6 -0
  247. package/src/network/interface.ts +1 -0
  248. package/src/network/network.ts +11 -0
  249. package/src/network/processor/gossipHandlers.ts +53 -17
  250. package/src/network/processor/gossipQueues/index.ts +5 -0
  251. package/src/network/processor/index.ts +6 -5
  252. package/src/network/reqresp/handlers/beaconBlocksByRange.ts +14 -6
  253. package/src/network/reqresp/handlers/blobSidecarsByRange.ts +11 -5
  254. package/src/network/reqresp/handlers/dataColumnSidecarsByRange.ts +17 -5
  255. package/src/network/reqresp/handlers/executionPayloadEnvelopesByRange.ts +7 -4
  256. package/src/node/nodejs.ts +2 -2
  257. package/src/sync/range/batch.ts +188 -49
  258. package/src/sync/range/chain.ts +37 -9
  259. package/src/sync/range/range.ts +18 -6
  260. package/src/sync/types.ts +72 -0
  261. package/src/sync/unknownBlock.ts +760 -57
  262. package/src/sync/utils/downloadByRange.ts +272 -39
  263. package/src/sync/utils/downloadByRoot.ts +24 -2
  264. package/src/sync/utils/pendingBlocksTree.ts +0 -15
  265. package/src/util/sszBytes.ts +8 -6
@@ -1,7 +1,28 @@
1
1
  import { ChainForkConfig } from "@lodestar/config";
2
+ import { ProtoBlock } from "@lodestar/fork-choice";
3
+ import { Slot } from "@lodestar/types";
2
4
  import { IBlockInput } from "../blockInput/types.js";
5
+ import { PayloadEnvelopeInput } from "../payloadEnvelopeInput/payloadEnvelopeInput.js";
6
+ export type OrphanedPayloadEnvelope = {
7
+ slot: Slot;
8
+ payloadEnvelopeInput: PayloadEnvelopeInput;
9
+ };
10
+ export type ChainSegmentResult = {
11
+ warnings: OrphanedPayloadEnvelope[] | null;
12
+ };
3
13
  /**
4
- * Assert this chain segment of blocks is linear with slot numbers and hashes
14
+ * Assert this chain segment of blocks is linear with slot numbers and hashes,
15
+ * and that the provided envelopes are consistent with their respective blocks.
16
+ *
17
+ * Must be called after verifyBlocksSanityChecks so that parentBlock (from forkchoice)
18
+ * is available to seed the execution hash chain.
19
+ *
20
+ * For each block:
21
+ * - Verifies parent root + slot linearity
22
+ * - For gloas: verifies bid.parentBlockHash matches the tracked execution hash; if not, the
23
+ * previous FULL envelope is treated as orphaned (segment continues as if previous slot was EMPTY)
24
+ * - If an envelope exists for this slot: verifies it references this block's root
25
+ * - Advances the tracked execution hash (FULL if envelope present, EMPTY if not)
5
26
  */
6
- export declare function assertLinearChainSegment(config: ChainForkConfig, blocks: IBlockInput[]): void;
27
+ export declare function assertLinearChainSegment(config: ChainForkConfig, blocks: IBlockInput[], payloadEnvelopes: Map<Slot, PayloadEnvelopeInput> | null, parentBlock: ProtoBlock): ChainSegmentResult;
7
28
  //# sourceMappingURL=chainSegment.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"chainSegment.d.ts","sourceRoot":"","sources":["../../../../src/chain/blocks/utils/chainSegment.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,eAAe,EAAC,MAAM,kBAAkB,CAAC;AAGjD,OAAO,EAAC,WAAW,EAAC,MAAM,wBAAwB,CAAC;AAEnD;;GAEG;AAEH,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,eAAe,EAAE,MAAM,EAAE,WAAW,EAAE,GAAG,IAAI,CAmB7F"}
1
+ {"version":3,"file":"chainSegment.d.ts","sourceRoot":"","sources":["../../../../src/chain/blocks/utils/chainSegment.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,eAAe,EAAC,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAC,UAAU,EAAC,MAAM,uBAAuB,CAAC;AACjD,OAAO,EAAC,IAAI,EAA0B,MAAM,iBAAiB,CAAC;AAG9D,OAAO,EAAC,WAAW,EAAC,MAAM,wBAAwB,CAAC;AACnD,OAAO,EAAC,oBAAoB,EAAC,MAAM,iDAAiD,CAAC;AAErF,MAAM,MAAM,uBAAuB,GAAG;IACpC,IAAI,EAAE,IAAI,CAAC;IACX,oBAAoB,EAAE,oBAAoB,CAAC;CAC5C,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG;IAAC,QAAQ,EAAE,uBAAuB,EAAE,GAAG,IAAI,CAAA;CAAC,CAAC;AAE9E;;;;;;;;;;;;;GAaG;AACH,wBAAgB,wBAAwB,CACtC,MAAM,EAAE,eAAe,EACvB,MAAM,EAAE,WAAW,EAAE,EACrB,gBAAgB,EAAE,GAAG,CAAC,IAAI,EAAE,oBAAoB,CAAC,GAAG,IAAI,EACxD,WAAW,EAAE,UAAU,GACtB,kBAAkB,CA2FpB"}
@@ -1,21 +1,98 @@
1
- import { ssz } from "@lodestar/types";
1
+ import { isGloasBeaconBlock, ssz } from "@lodestar/types";
2
+ import { toRootHex } from "@lodestar/utils";
2
3
  import { BlockError, BlockErrorCode } from "../../errors/index.js";
3
4
  /**
4
- * Assert this chain segment of blocks is linear with slot numbers and hashes
5
+ * Assert this chain segment of blocks is linear with slot numbers and hashes,
6
+ * and that the provided envelopes are consistent with their respective blocks.
7
+ *
8
+ * Must be called after verifyBlocksSanityChecks so that parentBlock (from forkchoice)
9
+ * is available to seed the execution hash chain.
10
+ *
11
+ * For each block:
12
+ * - Verifies parent root + slot linearity
13
+ * - For gloas: verifies bid.parentBlockHash matches the tracked execution hash; if not, the
14
+ * previous FULL envelope is treated as orphaned (segment continues as if previous slot was EMPTY)
15
+ * - If an envelope exists for this slot: verifies it references this block's root
16
+ * - Advances the tracked execution hash (FULL if envelope present, EMPTY if not)
5
17
  */
6
- export function assertLinearChainSegment(config, blocks) {
7
- for (let i = 0; i < blocks.length - 1; i++) {
18
+ export function assertLinearChainSegment(config, blocks, payloadEnvelopes, parentBlock) {
19
+ const warnings = [];
20
+ // Track the expected execution payload block hash through the segment.
21
+ // Starts from the known forkchoice parent's execution hash.
22
+ // - FULL variant (envelope present for slot): advances to envelope.payload.blockHash
23
+ // - EMPTY variant (no envelope for slot): execution hash is unchanged
24
+ // null only for pre-merge parents, which cannot precede gloas blocks.
25
+ let currentExecHash = parentBlock.executionPayloadBlockHash;
26
+ // Checkpoint sync first batch: parent is the anchor PENDING whose executionPayloadBlockHash
27
+ // is the inherited parentBlockHash semantic (= grandparent's payload), not its own payload.
28
+ // If parent's own payload envelope arrives in this batch, advance currentExecHash to that
29
+ // payload's blockHash so the segment validation sees the true EL chain head.
30
+ const parentPayloadInput = payloadEnvelopes?.get(parentBlock.slot);
31
+ if (parentPayloadInput?.hasPayloadEnvelope()) {
32
+ currentExecHash = parentPayloadInput.getBlockHashHex();
33
+ }
34
+ // Track the execution hash before the last FULL advancement so we can recover
35
+ // if the next block reveals that envelope was orphaned.
36
+ let prevExecHash = currentExecHash;
37
+ // The slot whose envelope last advanced currentExecHash (for warning context).
38
+ let lastFullSlot = null;
39
+ for (let i = 0; i < blocks.length; i++) {
8
40
  const block = blocks[i].getBlock();
9
- const child = blocks[i + 1].getBlock();
10
- // If this block has a child in this chain segment, ensure that its parent root matches
11
- // the root of this block.
12
- if (!ssz.Root.equals(config.getForkTypes(block.message.slot).BeaconBlock.hashTreeRoot(block.message), child.message.parentRoot)) {
13
- throw new BlockError(block, { code: BlockErrorCode.NON_LINEAR_PARENT_ROOTS });
41
+ const slot = block.message.slot;
42
+ if (i > 0) {
43
+ const prevBlock = blocks[i - 1].getBlock();
44
+ // Ensure parent root matches the previous block's root
45
+ if (!ssz.Root.equals(config.getForkTypes(prevBlock.message.slot).BeaconBlock.hashTreeRoot(prevBlock.message), block.message.parentRoot)) {
46
+ throw new BlockError(block, { code: BlockErrorCode.NON_LINEAR_PARENT_ROOTS });
47
+ }
48
+ // Ensure slots are strictly increasing
49
+ if (slot <= prevBlock.message.slot) {
50
+ throw new BlockError(block, { code: BlockErrorCode.NON_LINEAR_SLOTS });
51
+ }
14
52
  }
15
- // Ensure that the slots are strictly increasing throughout the chain segment.
16
- if (child.message.slot <= block.message.slot) {
17
- throw new BlockError(block, { code: BlockErrorCode.NON_LINEAR_SLOTS });
53
+ if (isGloasBeaconBlock(block.message) && currentExecHash !== null) {
54
+ // Verify the bid's parentBlockHash matches the tracked execution hash.
55
+ // This ensures the block was built on the correct FULL or EMPTY variant of its parent.
56
+ const bidParentHash = toRootHex(block.message.body.signedExecutionPayloadBid.message.parentBlockHash);
57
+ if (bidParentHash !== currentExecHash) {
58
+ // Maybe the previous slot's FULL envelope was orphaned — try falling back.
59
+ // If even prevExecHash doesn't match, the segment is non-linear.
60
+ if (bidParentHash !== prevExecHash) {
61
+ throw new BlockError(block, {
62
+ code: BlockErrorCode.PARENT_PAYLOAD_UNKNOWN,
63
+ parentRoot: toRootHex(block.message.parentRoot),
64
+ parentBlockHash: bidParentHash,
65
+ });
66
+ }
67
+ if (lastFullSlot !== null && payloadEnvelopes !== null) {
68
+ const orphanedInput = payloadEnvelopes.get(lastFullSlot);
69
+ if (orphanedInput != null) {
70
+ warnings.push({ slot: lastFullSlot, payloadEnvelopeInput: orphanedInput });
71
+ }
72
+ }
73
+ currentExecHash = prevExecHash;
74
+ }
75
+ const payloadInput = payloadEnvelopes?.get(slot) ?? null;
76
+ const payloadEnvelope = payloadInput?.hasPayloadEnvelope() ? payloadInput.getPayloadEnvelope() : null;
77
+ if (payloadEnvelope !== null) {
78
+ // Verify the envelope references this block's root
79
+ const blockRoot = toRootHex(config.getForkTypes(slot).BeaconBlock.hashTreeRoot(block.message));
80
+ const envelopeBlockRoot = toRootHex(payloadEnvelope.message.beaconBlockRoot);
81
+ if (blockRoot !== envelopeBlockRoot) {
82
+ throw new BlockError(block, {
83
+ code: BlockErrorCode.ENVELOPE_BLOCK_ROOT_MISMATCH,
84
+ envelopeBlockRoot,
85
+ blockRoot,
86
+ });
87
+ }
88
+ // FULL variant: save state before advancing, then advance
89
+ prevExecHash = currentExecHash;
90
+ lastFullSlot = slot;
91
+ currentExecHash = toRootHex(payloadEnvelope.message.payload.blockHash);
92
+ }
93
+ // EMPTY variant: currentExecHash unchanged
18
94
  }
19
95
  }
96
+ return { warnings: warnings.length > 0 ? warnings : null };
20
97
  }
21
98
  //# sourceMappingURL=chainSegment.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"chainSegment.js","sourceRoot":"","sources":["../../../../src/chain/blocks/utils/chainSegment.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,GAAG,EAAC,MAAM,iBAAiB,CAAC;AACpC,OAAO,EAAC,UAAU,EAAE,cAAc,EAAC,MAAM,uBAAuB,CAAC;AAGjE;;GAEG;AAEH,MAAM,UAAU,wBAAwB,CAAC,MAAuB,EAAE,MAAqB,EAAQ;IAC7F,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QAC3C,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;QACnC,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;QACvC,uFAAuF;QACvF,0BAA0B;QAC1B,IACE,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CACd,MAAM,CAAC,YAAY,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,WAAW,CAAC,YAAY,CAAC,KAAK,CAAC,OAAO,CAAC,EAC/E,KAAK,CAAC,OAAO,CAAC,UAAU,CACzB,EACD,CAAC;YACD,MAAM,IAAI,UAAU,CAAC,KAAK,EAAE,EAAC,IAAI,EAAE,cAAc,CAAC,uBAAuB,EAAC,CAAC,CAAC;QAC9E,CAAC;QACD,8EAA8E;QAC9E,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;YAC7C,MAAM,IAAI,UAAU,CAAC,KAAK,EAAE,EAAC,IAAI,EAAE,cAAc,CAAC,gBAAgB,EAAC,CAAC,CAAC;QACvE,CAAC;IACH,CAAC;AAAA,CACF"}
1
+ {"version":3,"file":"chainSegment.js","sourceRoot":"","sources":["../../../../src/chain/blocks/utils/chainSegment.ts"],"names":[],"mappings":"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"}
@@ -1,9 +1,10 @@
1
1
  import { ProtoBlock } from "@lodestar/fork-choice";
2
2
  import { DataAvailabilityStatus, IBeaconStateView } from "@lodestar/state-transition";
3
- import { IndexedAttestation } from "@lodestar/types";
3
+ import { IndexedAttestation, Slot } from "@lodestar/types";
4
4
  import type { BeaconChain } from "../chain.js";
5
5
  import { BlockProcessOpts } from "../options.js";
6
6
  import { IBlockInput } from "./blockInput/index.js";
7
+ import { PayloadEnvelopeInput } from "./payloadEnvelopeInput/payloadEnvelopeInput.js";
7
8
  import { ImportBlockOpts } from "./types.js";
8
9
  import { SegmentExecStatus } from "./verifyBlocksExecutionPayloads.js";
9
10
  /**
@@ -17,11 +18,12 @@ import { SegmentExecStatus } from "./verifyBlocksExecutionPayloads.js";
17
18
  *
18
19
  * If there's an error during one of the steps, the rest are aborted with an AbortController.
19
20
  */
20
- export declare function verifyBlocksInEpoch(this: BeaconChain, parentBlock: ProtoBlock, blockInputs: IBlockInput[], opts: BlockProcessOpts & ImportBlockOpts): Promise<{
21
+ export declare function verifyBlocksInEpoch(this: BeaconChain, parentBlock: ProtoBlock, blockInputs: IBlockInput[], payloadEnvelopes: Map<Slot, PayloadEnvelopeInput> | null, opts: BlockProcessOpts & ImportBlockOpts): Promise<{
21
22
  postStates: IBeaconStateView[];
22
23
  proposerBalanceDeltas: number[];
23
24
  segmentExecStatus: SegmentExecStatus;
24
- dataAvailabilityStatuses: DataAvailabilityStatus[];
25
+ blockDAStatuses: DataAvailabilityStatus[];
26
+ payloadDAStatuses: Map<Slot, DataAvailabilityStatus>;
25
27
  indexedAttestationsByBlock: IndexedAttestation[][];
26
28
  }>;
27
29
  //# sourceMappingURL=verifyBlock.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"verifyBlock.d.ts","sourceRoot":"","sources":["../../../src/chain/blocks/verifyBlock.ts"],"names":[],"mappings":"AAAA,OAAO,EAAkB,UAAU,EAAC,MAAM,uBAAuB,CAAC;AAElE,OAAO,EAAC,sBAAsB,EAAE,gBAAgB,EAAqB,MAAM,4BAA4B,CAAC;AACxG,OAAO,EAAC,kBAAkB,EAAQ,MAAM,iBAAiB,CAAC;AAC1D,OAAO,KAAK,EAAC,WAAW,EAAC,MAAM,aAAa,CAAC;AAE7C,OAAO,EAAC,gBAAgB,EAAC,MAAM,eAAe,CAAC;AAE/C,OAAO,EAAS,WAAW,EAAC,MAAM,uBAAuB,CAAC;AAC1D,OAAO,EAAC,eAAe,EAAC,MAAM,YAAY,CAAC;AAM3C,OAAO,EAAC,iBAAiB,EAA+B,MAAM,oCAAoC,CAAC;AAInG;;;;;;;;;;GAUG;AACH,wBAAsB,mBAAmB,CACvC,IAAI,EAAE,WAAW,EACjB,WAAW,EAAE,UAAU,EACvB,WAAW,EAAE,WAAW,EAAE,EAC1B,IAAI,EAAE,gBAAgB,GAAG,eAAe,GACvC,OAAO,CAAC;IACT,UAAU,EAAE,gBAAgB,EAAE,CAAC;IAC/B,qBAAqB,EAAE,MAAM,EAAE,CAAC;IAChC,iBAAiB,EAAE,iBAAiB,CAAC;IACrC,wBAAwB,EAAE,sBAAsB,EAAE,CAAC;IACnD,0BAA0B,EAAE,kBAAkB,EAAE,EAAE,CAAC;CACpD,CAAC,CAkMD"}
1
+ {"version":3,"file":"verifyBlock.d.ts","sourceRoot":"","sources":["../../../src/chain/blocks/verifyBlock.ts"],"names":[],"mappings":"AAAA,OAAO,EAAkB,UAAU,EAAC,MAAM,uBAAuB,CAAC;AAElE,OAAO,EAAC,sBAAsB,EAAE,gBAAgB,EAAqB,MAAM,4BAA4B,CAAC;AACxG,OAAO,EAAC,kBAAkB,EAAE,IAAI,EAAQ,MAAM,iBAAiB,CAAC;AAEhE,OAAO,KAAK,EAAC,WAAW,EAAC,MAAM,aAAa,CAAC;AAE7C,OAAO,EAAC,gBAAgB,EAAC,MAAM,eAAe,CAAC;AAE/C,OAAO,EAAS,WAAW,EAAC,MAAM,uBAAuB,CAAC;AAC1D,OAAO,EAAC,oBAAoB,EAAC,MAAM,gDAAgD,CAAC;AACpF,OAAO,EAAC,eAAe,EAAC,MAAM,YAAY,CAAC;AAM3C,OAAO,EAAC,iBAAiB,EAA+B,MAAM,oCAAoC,CAAC;AAKnG;;;;;;;;;;GAUG;AACH,wBAAsB,mBAAmB,CACvC,IAAI,EAAE,WAAW,EACjB,WAAW,EAAE,UAAU,EACvB,WAAW,EAAE,WAAW,EAAE,EAC1B,gBAAgB,EAAE,GAAG,CAAC,IAAI,EAAE,oBAAoB,CAAC,GAAG,IAAI,EACxD,IAAI,EAAE,gBAAgB,GAAG,eAAe,GACvC,OAAO,CAAC;IACT,UAAU,EAAE,gBAAgB,EAAE,CAAC;IAC/B,qBAAqB,EAAE,MAAM,EAAE,CAAC;IAChC,iBAAiB,EAAE,iBAAiB,CAAC;IACrC,eAAe,EAAE,sBAAsB,EAAE,CAAC;IAC1C,iBAAiB,EAAE,GAAG,CAAC,IAAI,EAAE,sBAAsB,CAAC,CAAC;IACrD,0BAA0B,EAAE,kBAAkB,EAAE,EAAE,CAAC;CACpD,CAAC,CA0PD"}
@@ -1,6 +1,7 @@
1
1
  import { ExecutionStatus } from "@lodestar/fork-choice";
2
- import { ForkName, isForkPostFulu } from "@lodestar/params";
2
+ import { ForkName, ForkSeq, isForkPostFulu } from "@lodestar/params";
3
3
  import { DataAvailabilityStatus, computeEpochAtSlot } from "@lodestar/state-transition";
4
+ import { getBlobKzgCommitments } from "../../util/dataColumns.js";
4
5
  import { BlockError, BlockErrorCode } from "../errors/index.js";
5
6
  import { RegenCaller } from "../regen/index.js";
6
7
  import { DAType } from "./blockInput/index.js";
@@ -12,6 +13,7 @@ import { verifyBlocksDataAvailability } from "./verifyBlocksDataAvailability.js"
12
13
  import { verifyBlocksExecutionPayload } from "./verifyBlocksExecutionPayloads.js";
13
14
  import { verifyBlocksSignatures } from "./verifyBlocksSignatures.js";
14
15
  import { verifyBlocksStateTransitionOnly } from "./verifyBlocksStateTransitionOnly.js";
16
+ import { verifyPayloadsDataAvailability } from "./verifyPayloadsDataAvailability.js";
15
17
  /**
16
18
  * Verifies 1 or more blocks are fully valid; from a linear sequence of blocks.
17
19
  *
@@ -23,7 +25,7 @@ import { verifyBlocksStateTransitionOnly } from "./verifyBlocksStateTransitionOn
23
25
  *
24
26
  * If there's an error during one of the steps, the rest are aborted with an AbortController.
25
27
  */
26
- export async function verifyBlocksInEpoch(parentBlock, blockInputs, opts) {
28
+ export async function verifyBlocksInEpoch(parentBlock, blockInputs, payloadEnvelopes, opts) {
27
29
  const blocks = blockInputs.map((blockInput) => blockInput.getBlock());
28
30
  const lastBlock = blocks.at(-1);
29
31
  if (!lastBlock) {
@@ -82,11 +84,41 @@ export async function verifyBlocksInEpoch(parentBlock, blockInputs, opts) {
82
84
  return this.shufflingCache.getIndexedAttestation(attEpoch, decisionRoot, fork, attestation);
83
85
  });
84
86
  }
87
+ // Pick the data-availability source by fork:
88
+ // - Pre-Gloas: blob/Fulu-column data lives in IBlockInput → verifyBlocksDataAvailability.
89
+ // - Post-Gloas: verifyPayloadsDataAvailability (payload-level DA, keyed by slot).
90
+ const daAvailabilityPromise = fork >= ForkSeq.gloas
91
+ ? (async () => {
92
+ // Validate DA for ALL payloads in the Map, not just those paired with blockInputs.
93
+ // A checkpoint-sync batch may include a payload for a slot whose block was filtered
94
+ // out of relevantBlocks (e.g., the anchor at the finalized slot); that payload still
95
+ // needs DA validation so it can be imported in processBlocks.
96
+ const payloadInputsForDa = payloadEnvelopes !== null ? Array.from(payloadEnvelopes.values()) : [];
97
+ const { dataAvailabilityStatuses, availableTime } = await verifyPayloadsDataAvailability(payloadInputsForDa, abortController.signal);
98
+ const payloadDAStatuses = new Map();
99
+ for (let i = 0; i < payloadInputsForDa.length; i++) {
100
+ payloadDAStatuses.set(payloadInputsForDa[i].slot, dataAvailabilityStatuses[i]);
101
+ }
102
+ return {
103
+ // post-gloas, DataAvailabilityStatus is NotRequired for forkChoice.onBlock() ProtoBlock
104
+ blockDAStatuses: blockInputs.map(() => DataAvailabilityStatus.NotRequired),
105
+ payloadDAStatuses,
106
+ availableTime,
107
+ };
108
+ })()
109
+ : (async () => {
110
+ const { dataAvailabilityStatuses, availableTime } = await verifyBlocksDataAvailability(blockInputs, abortController.signal);
111
+ return {
112
+ blockDAStatuses: dataAvailabilityStatuses,
113
+ payloadDAStatuses: new Map(),
114
+ availableTime,
115
+ };
116
+ })();
85
117
  // batch all I/O operations to reduce overhead
86
- const [segmentExecStatus, { dataAvailabilityStatuses, availableTime }, { postStates, proposerBalanceDeltas, verifyStateTime }, { verifySignaturesTime },] = await Promise.all([
118
+ const [segmentExecStatus, { blockDAStatuses, payloadDAStatuses, availableTime }, { postStates, proposerBalanceDeltas, verifyStateTime }, { verifySignaturesTime },] = await Promise.all([
87
119
  verifyExecutionPayloadsPromise,
88
- // data availability for the blobs
89
- verifyBlocksDataAvailability(blockInputs, abortController.signal),
120
+ // data availability (fork-specific; see daAvailabilityPromise above)
121
+ daAvailabilityPromise,
90
122
  // Run state transition only
91
123
  // TODO: Ensure it yields to allow flushing to workers and engine API
92
124
  verifyBlocksStateTransitionOnly(preState0, blockInputs,
@@ -96,6 +128,8 @@ export async function verifyBlocksInEpoch(parentBlock, blockInputs, opts) {
96
128
  opts.skipVerifyBlockSignatures !== true
97
129
  ? verifyBlocksSignatures(this.config, this.bls, this.logger, this.metrics, preState0, blocks, indexedAttestationsByBlock, opts)
98
130
  : Promise.resolve({ verifySignaturesTime: Date.now() }),
131
+ // TODO GLOAS: can verify payload signatures in batch too
132
+ // maybe chain with the above verifyBlocksSignatures()
99
133
  ]);
100
134
  if (opts.verifyOnly !== true) {
101
135
  const fromForkBoundary = this.config.getForkBoundaryAtEpoch(computeEpochAtSlot(parentBlock.slot));
@@ -136,7 +170,9 @@ export async function verifyBlocksInEpoch(parentBlock, blockInputs, opts) {
136
170
  if (blockInputs.length === 1 &&
137
171
  // gossip blocks have seenTimestampSec
138
172
  opts.seenTimestampSec !== undefined &&
173
+ // PreData (pre-deneb) and NoData (gloas) carry no blob data on the block — skip metric
139
174
  blockInputs[0].type !== DAType.PreData &&
175
+ blockInputs[0].type !== DAType.NoData &&
140
176
  executionStatuses[0] === ExecutionStatus.Valid) {
141
177
  // Find the max time when the block was actually verified
142
178
  const fullyVerifiedTime = Math.max(executionTime, verifyStateTime, verifySignaturesTime);
@@ -144,7 +180,7 @@ export async function verifyBlocksInEpoch(parentBlock, blockInputs, opts) {
144
180
  this.metrics?.gossipBlock.receivedToFullyVerifiedTime.observe(recvTofullyVerifedTime);
145
181
  const verifiedToBlobsAvailabiltyTime = Math.max(availableTime - fullyVerifiedTime, 0) / 1000;
146
182
  const block = blockInputs[0].getBlock();
147
- const numBlobs = block.message.body.blobKzgCommitments.length;
183
+ const numBlobs = getBlobKzgCommitments(blockInputs[0].forkName, block).length;
148
184
  this.metrics?.gossipBlock.verifiedToBlobsAvailabiltyTime.observe({ numBlobs }, verifiedToBlobsAvailabiltyTime);
149
185
  this.logger.verbose("Verified blockInput fully with blobs availability", {
150
186
  slot: block.message.slot,
@@ -158,7 +194,14 @@ export async function verifyBlocksInEpoch(parentBlock, blockInputs, opts) {
158
194
  else {
159
195
  this.logger.verbose("Block verification aborted due to execution payload", {}, segmentExecStatus.execAborted.execError);
160
196
  }
161
- return { postStates, dataAvailabilityStatuses, proposerBalanceDeltas, segmentExecStatus, indexedAttestationsByBlock };
197
+ return {
198
+ postStates,
199
+ blockDAStatuses,
200
+ payloadDAStatuses,
201
+ proposerBalanceDeltas,
202
+ segmentExecStatus,
203
+ indexedAttestationsByBlock,
204
+ };
162
205
  }
163
206
  finally {
164
207
  abortController.abort();
@@ -1 +1 @@
1
- {"version":3,"file":"verifyBlock.js","sourceRoot":"","sources":["../../../src/chain/blocks/verifyBlock.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"verifyBlock.js","sourceRoot":"","sources":["../../../src/chain/blocks/verifyBlock.ts"],"names":[],"mappings":"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"}
@@ -50,10 +50,6 @@ type VerifyBlockExecutionResponse = VerifyExecutionErrorResponse | {
50
50
  executionStatus: ExecutionStatus.PreMerge;
51
51
  lvhResponse: undefined;
52
52
  execError: null;
53
- } | {
54
- executionStatus: ExecutionStatus.PayloadSeparated;
55
- lvhResponse: undefined;
56
- execError: null;
57
53
  };
58
54
  /**
59
55
  * Verifies 1 or more execution payloads from a linear sequence of blocks.
@@ -1 +1 @@
1
- {"version":3,"file":"verifyBlocksExecutionPayloads.d.ts","sourceRoot":"","sources":["../../../src/chain/blocks/verifyBlocksExecutionPayloads.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,eAAe,EAAC,MAAM,kBAAkB,CAAC;AACjD,OAAO,EACL,oBAAoB,EACpB,eAAe,EACf,WAAW,EACX,kBAAkB,EAClB,gBAAgB,EAChB,UAAU,EACX,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EAAC,gBAAgB,EAAiD,MAAM,4BAA4B,CAAC;AAE5G,OAAO,EAAe,MAAM,EAAY,MAAM,iBAAiB,CAAC;AAChE,OAAO,EAAyB,gBAAgB,EAAC,MAAM,qCAAqC,CAAC;AAC7F,OAAO,EAAC,OAAO,EAAC,MAAM,0BAA0B,CAAC;AACjD,OAAO,EAAC,MAAM,EAAC,MAAM,qBAAqB,CAAC;AAC3C,OAAO,EAAC,UAAU,EAAiB,MAAM,oBAAoB,CAAC;AAC9D,OAAO,EAAC,gBAAgB,EAAC,MAAM,eAAe,CAAC;AAE/C,OAAO,EAAC,WAAW,EAAC,MAAM,uBAAuB,CAAC;AAClD,OAAO,EAAC,eAAe,EAAC,MAAM,YAAY,CAAC;AAE3C,MAAM,MAAM,kCAAkC,GAAG;IAC/C,eAAe,EAAE,gBAAgB,CAAC;IAClC,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,OAAO,GAAG,IAAI,CAAC;IACxB,UAAU,EAAE,WAAW,CAAC;IACxB,MAAM,EAAE,eAAe,CAAC;CACzB,CAAC;AAEF,KAAK,aAAa,GAAG;IAAC,UAAU,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,UAAU,CAAA;CAAC,CAAC;AACjE,MAAM,MAAM,iBAAiB,GACzB;IACE,WAAW,EAAE,IAAI,CAAC;IAClB,iBAAiB,EAAE,oBAAoB,EAAE,CAAC;IAC1C,aAAa,EAAE,MAAM,CAAC;CACvB,GACD;IAAC,WAAW,EAAE,aAAa,CAAC;IAAC,iBAAiB,CAAC,EAAE,kBAAkB,CAAA;CAAC,CAAC;AAEzE,KAAK,4BAA4B,GAC7B;IAAC,eAAe,EAAE,eAAe,CAAC,OAAO,CAAC;IAAC,WAAW,EAAE,kBAAkB,CAAC;IAAC,SAAS,EAAE,UAAU,CAAA;CAAC,GAClG;IAAC,eAAe,EAAE,IAAI,CAAC;IAAC,WAAW,EAAE,SAAS,CAAC;IAAC,SAAS,EAAE,UAAU,CAAA;CAAC,CAAC;AAE3E,KAAK,4BAA4B,GAC7B,4BAA4B,GAC5B;IAAC,eAAe,EAAE,eAAe,CAAC,KAAK,CAAC;IAAC,WAAW,EAAE,gBAAgB,CAAC;IAAC,SAAS,EAAE,IAAI,CAAA;CAAC,GACxF;IAAC,eAAe,EAAE,eAAe,CAAC,OAAO,CAAC;IAAC,WAAW,CAAC,EAAE,gBAAgB,CAAC;IAAC,SAAS,EAAE,IAAI,CAAA;CAAC,GAC3F;IAAC,eAAe,EAAE,eAAe,CAAC,QAAQ,CAAC;IAAC,WAAW,EAAE,SAAS,CAAC;IAAC,SAAS,EAAE,IAAI,CAAA;CAAC,GACpF;IAAC,eAAe,EAAE,eAAe,CAAC,gBAAgB,CAAC;IAAC,WAAW,EAAE,SAAS,CAAC;IAAC,SAAS,EAAE,IAAI,CAAA;CAAC,CAAC;AAEjG;;;;GAIG;AACH,wBAAsB,4BAA4B,CAChD,KAAK,EAAE,kCAAkC,EACzC,WAAW,EAAE,UAAU,EACvB,WAAW,EAAE,WAAW,EAAE,EAC1B,SAAS,EAAE,gBAAgB,EAC3B,MAAM,EAAE,WAAW,EACnB,IAAI,EAAE,gBAAgB,GAAG,eAAe,GACvC,OAAO,CAAC,iBAAiB,CAAC,CAwE5B;AAED;;GAEG;AACH,wBAAsB,2BAA2B,CAC/C,KAAK,EAAE,kCAAkC,EACzC,UAAU,EAAE,WAAW,EACvB,SAAS,EAAE,gBAAgB,GAC1B,OAAO,CAAC,4BAA4B,CAAC,CAmGvC"}
1
+ {"version":3,"file":"verifyBlocksExecutionPayloads.d.ts","sourceRoot":"","sources":["../../../src/chain/blocks/verifyBlocksExecutionPayloads.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,eAAe,EAAC,MAAM,kBAAkB,CAAC;AACjD,OAAO,EACL,oBAAoB,EACpB,eAAe,EACf,WAAW,EACX,kBAAkB,EAClB,gBAAgB,EAChB,UAAU,EACX,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EAAC,gBAAgB,EAAiD,MAAM,4BAA4B,CAAC;AAE5G,OAAO,EAAe,MAAM,EAAY,MAAM,iBAAiB,CAAC;AAChE,OAAO,EAAyB,gBAAgB,EAAC,MAAM,qCAAqC,CAAC;AAC7F,OAAO,EAAC,OAAO,EAAC,MAAM,0BAA0B,CAAC;AACjD,OAAO,EAAC,MAAM,EAAC,MAAM,qBAAqB,CAAC;AAC3C,OAAO,EAAC,UAAU,EAAiB,MAAM,oBAAoB,CAAC;AAC9D,OAAO,EAAC,gBAAgB,EAAC,MAAM,eAAe,CAAC;AAE/C,OAAO,EAAC,WAAW,EAAC,MAAM,uBAAuB,CAAC;AAClD,OAAO,EAAC,eAAe,EAAC,MAAM,YAAY,CAAC;AAE3C,MAAM,MAAM,kCAAkC,GAAG;IAC/C,eAAe,EAAE,gBAAgB,CAAC;IAClC,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,OAAO,GAAG,IAAI,CAAC;IACxB,UAAU,EAAE,WAAW,CAAC;IACxB,MAAM,EAAE,eAAe,CAAC;CACzB,CAAC;AAEF,KAAK,aAAa,GAAG;IAAC,UAAU,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,UAAU,CAAA;CAAC,CAAC;AACjE,MAAM,MAAM,iBAAiB,GACzB;IACE,WAAW,EAAE,IAAI,CAAC;IAClB,iBAAiB,EAAE,oBAAoB,EAAE,CAAC;IAC1C,aAAa,EAAE,MAAM,CAAC;CACvB,GACD;IAAC,WAAW,EAAE,aAAa,CAAC;IAAC,iBAAiB,CAAC,EAAE,kBAAkB,CAAA;CAAC,CAAC;AAEzE,KAAK,4BAA4B,GAC7B;IAAC,eAAe,EAAE,eAAe,CAAC,OAAO,CAAC;IAAC,WAAW,EAAE,kBAAkB,CAAC;IAAC,SAAS,EAAE,UAAU,CAAA;CAAC,GAClG;IAAC,eAAe,EAAE,IAAI,CAAC;IAAC,WAAW,EAAE,SAAS,CAAC;IAAC,SAAS,EAAE,UAAU,CAAA;CAAC,CAAC;AAE3E,KAAK,4BAA4B,GAC7B,4BAA4B,GAC5B;IAAC,eAAe,EAAE,eAAe,CAAC,KAAK,CAAC;IAAC,WAAW,EAAE,gBAAgB,CAAC;IAAC,SAAS,EAAE,IAAI,CAAA;CAAC,GACxF;IAAC,eAAe,EAAE,eAAe,CAAC,OAAO,CAAC;IAAC,WAAW,CAAC,EAAE,gBAAgB,CAAC;IAAC,SAAS,EAAE,IAAI,CAAA;CAAC,GAC3F;IAAC,eAAe,EAAE,eAAe,CAAC,QAAQ,CAAC;IAAC,WAAW,EAAE,SAAS,CAAC;IAAC,SAAS,EAAE,IAAI,CAAA;CAAC,CAAC;AAEzF;;;;GAIG;AACH,wBAAsB,4BAA4B,CAChD,KAAK,EAAE,kCAAkC,EACzC,WAAW,EAAE,UAAU,EACvB,WAAW,EAAE,WAAW,EAAE,EAC1B,SAAS,EAAE,gBAAgB,EAC3B,MAAM,EAAE,WAAW,EACnB,IAAI,EAAE,gBAAgB,GAAG,eAAe,GACvC,OAAO,CAAC,iBAAiB,CAAC,CAwE5B;AAED;;GAEG;AACH,wBAAsB,2BAA2B,CAC/C,KAAK,EAAE,kCAAkC,EACzC,UAAU,EAAE,WAAW,EACvB,SAAS,EAAE,gBAAgB,GAC1B,OAAO,CAAC,4BAA4B,CAAC,CAqGvC"}
@@ -78,9 +78,10 @@ export async function verifyBlocksExecutionPayload(chain, parentBlock, blockInpu
78
78
  */
79
79
  export async function verifyBlockExecutionPayload(chain, blockInput, preState0) {
80
80
  const block = blockInput.getBlock();
81
- // Gloas block doesn't have execution payload. Return right away
81
+ // Gloas block doesn't have execution payload. Return Syncing as a placeholder; the actual
82
+ // status for gloas PENDING/EMPTY is derived from parent's chain in importBlock.
82
83
  if (isBlockInputNoData(blockInput)) {
83
- return { executionStatus: ExecutionStatus.PayloadSeparated, lvhResponse: undefined, execError: null };
84
+ return { executionStatus: ExecutionStatus.Syncing, lvhResponse: undefined, execError: null };
84
85
  }
85
86
  /** Not null if execution is enabled */
86
87
  const executionPayloadEnabled = isStatePostBellatrix(preState0) &&
@@ -115,6 +116,7 @@ export async function verifyBlockExecutionPayload(chain, blockInput, preState0)
115
116
  executionStatus,
116
117
  latestValidExecHash: execResult.latestValidHash,
117
118
  invalidateFromParentBlockRoot: blockInput.parentRootHex,
119
+ invalidateFromParentBlockHash: toRootHex(executionPayloadEnabled.parentHash),
118
120
  };
119
121
  const execError = new BlockError(block, {
120
122
  code: BlockErrorCode.EXECUTION_ENGINE_ERROR,
@@ -182,6 +184,7 @@ function getSegmentErrorResponse({ verifyResponse, blockIndex }, parentBlock, bl
182
184
  executionStatus: ExecutionStatus.Invalid,
183
185
  latestValidExecHash: lvhResponse.latestValidExecHash,
184
186
  invalidateFromParentBlockRoot: parentBlock.blockRoot,
187
+ invalidateFromParentBlockHash: parentBlock.executionPayloadBlockHash,
185
188
  };
186
189
  }
187
190
  }
@@ -1 +1 @@
1
- {"version":3,"file":"verifyBlocksExecutionPayloads.js","sourceRoot":"","sources":["../../../src/chain/blocks/verifyBlocksExecutionPayloads.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"verifyBlocksExecutionPayloads.js","sourceRoot":"","sources":["../../../src/chain/blocks/verifyBlocksExecutionPayloads.ts"],"names":[],"mappings":"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"}
@@ -4,6 +4,7 @@ import { RootHex, Slot } from "@lodestar/types";
4
4
  import { IClock } from "../../util/clock.js";
5
5
  import { IChainOptions } from "../options.js";
6
6
  import { IBlockInput } from "./blockInput/types.js";
7
+ import { PayloadEnvelopeInput } from "./payloadEnvelopeInput/payloadEnvelopeInput.js";
7
8
  import { ImportBlockOpts } from "./types.js";
8
9
  /**
9
10
  * Verifies some early cheap sanity checks on the block before running the full state transition.
@@ -23,7 +24,7 @@ export declare function verifyBlocksSanityChecks(chain: {
23
24
  config: ChainForkConfig;
24
25
  opts: IChainOptions;
25
26
  blacklistedBlocks: Map<RootHex, Slot | null>;
26
- }, blocks: IBlockInput[], opts: ImportBlockOpts): {
27
+ }, blocks: IBlockInput[], payloadEnvelopes: Map<Slot, PayloadEnvelopeInput> | null, opts: ImportBlockOpts): {
27
28
  relevantBlocks: IBlockInput[];
28
29
  parentSlots: Slot[];
29
30
  parentBlock: ProtoBlock | null;
@@ -1 +1 @@
1
- {"version":3,"file":"verifyBlocksSanityChecks.d.ts","sourceRoot":"","sources":["../../../src/chain/blocks/verifyBlocksSanityChecks.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,eAAe,EAAC,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAC,WAAW,EAAE,UAAU,EAAC,MAAM,uBAAuB,CAAC;AAE9D,OAAO,EAAC,OAAO,EAAE,IAAI,EAAqB,MAAM,iBAAiB,CAAC;AAElE,OAAO,EAAC,MAAM,EAAC,MAAM,qBAAqB,CAAC;AAE3C,OAAO,EAAC,aAAa,EAAC,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAC,WAAW,EAAC,MAAM,uBAAuB,CAAC;AAClD,OAAO,EAAC,eAAe,EAAC,MAAM,YAAY,CAAC;AAE3C;;;;;;;;;;;GAWG;AACH,wBAAgB,wBAAwB,CACtC,KAAK,EAAE;IACL,UAAU,EAAE,WAAW,CAAC;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,eAAe,CAAC;IACxB,IAAI,EAAE,aAAa,CAAC;IACpB,iBAAiB,EAAE,GAAG,CAAC,OAAO,EAAE,IAAI,GAAG,IAAI,CAAC,CAAC;CAC9C,EACD,MAAM,EAAE,WAAW,EAAE,EACrB,IAAI,EAAE,eAAe,GACpB;IACD,cAAc,EAAE,WAAW,EAAE,CAAC;IAC9B,WAAW,EAAE,IAAI,EAAE,CAAC;IACpB,WAAW,EAAE,UAAU,GAAG,IAAI,CAAC;CAChC,CAgGA"}
1
+ {"version":3,"file":"verifyBlocksSanityChecks.d.ts","sourceRoot":"","sources":["../../../src/chain/blocks/verifyBlocksSanityChecks.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,eAAe,EAAC,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAC,WAAW,EAAE,UAAU,EAAC,MAAM,uBAAuB,CAAC;AAE9D,OAAO,EAAC,OAAO,EAAE,IAAI,EAAqB,MAAM,iBAAiB,CAAC;AAElE,OAAO,EAAC,MAAM,EAAC,MAAM,qBAAqB,CAAC;AAE3C,OAAO,EAAC,aAAa,EAAC,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAC,WAAW,EAAC,MAAM,uBAAuB,CAAC;AAClD,OAAO,EAAC,oBAAoB,EAAC,MAAM,gDAAgD,CAAC;AACpF,OAAO,EAAC,eAAe,EAAC,MAAM,YAAY,CAAC;AAE3C;;;;;;;;;;;GAWG;AACH,wBAAgB,wBAAwB,CACtC,KAAK,EAAE;IACL,UAAU,EAAE,WAAW,CAAC;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,eAAe,CAAC;IACxB,IAAI,EAAE,aAAa,CAAC;IACpB,iBAAiB,EAAE,GAAG,CAAC,OAAO,EAAE,IAAI,GAAG,IAAI,CAAC,CAAC;CAC9C,EACD,MAAM,EAAE,WAAW,EAAE,EACrB,gBAAgB,EAAE,GAAG,CAAC,IAAI,EAAE,oBAAoB,CAAC,GAAG,IAAI,EACxD,IAAI,EAAE,eAAe,GACpB;IACD,cAAc,EAAE,WAAW,EAAE,CAAC;IAC9B,WAAW,EAAE,IAAI,EAAE,CAAC;IACpB,WAAW,EAAE,UAAU,GAAG,IAAI,CAAC;CAChC,CAiHA"}
@@ -14,7 +14,7 @@ import { BlockError, BlockErrorCode } from "../errors/index.js";
14
14
  * - Not finalized slot
15
15
  * - Not already known
16
16
  */
17
- export function verifyBlocksSanityChecks(chain, blocks, opts) {
17
+ export function verifyBlocksSanityChecks(chain, blocks, payloadEnvelopes, opts) {
18
18
  if (blocks.length === 0) {
19
19
  throw Error("Empty partiallyVerifiedBlocks");
20
20
  }
@@ -62,12 +62,32 @@ export function verifyBlocksSanityChecks(chain, blocks, opts) {
62
62
  else {
63
63
  // When importing a block segment, only the first NON-IGNORED block must be known to the fork-choice.
64
64
  const parentRoot = toRootHex(block.message.parentRoot);
65
- parentBlock = isGloasBeaconBlock(block.message)
66
- ? chain.forkChoice.getBlockHexAndBlockHash(parentRoot, toRootHex(block.message.body.signedExecutionPayloadBid.message.parentBlockHash))
67
- : chain.forkChoice.getBlockHexDefaultStatus(parentRoot);
68
- if (!parentBlock) {
65
+ const parentBlockDefaultStatus = chain.forkChoice.getBlockHexDefaultStatus(parentRoot);
66
+ if (!parentBlockDefaultStatus) {
69
67
  throw new BlockError(block, { code: BlockErrorCode.PARENT_UNKNOWN, parentRoot });
70
68
  }
69
+ parentBlock = parentBlockDefaultStatus;
70
+ if (isGloasBeaconBlock(block.message)) {
71
+ const parentBlockHash = toRootHex(block.message.body.signedExecutionPayloadBid.message.parentBlockHash);
72
+ const parentBlockWithPayload = chain.forkChoice.getBlockHexAndBlockHash(parentRoot, parentBlockHash);
73
+ if (!parentBlockWithPayload) {
74
+ // Checkpoint sync: parent's FULL variant may not be in fork-choice yet because the
75
+ // anchor block is initialized with PENDING+EMPTY only. The parent's payload arrives
76
+ // in the same batch via payloadEnvelopes and will be imported by processBlocks. If
77
+ // a matching payload is in the Map, accept the parent as known.
78
+ const parentPayloadInput = payloadEnvelopes?.get(parentBlockDefaultStatus.slot);
79
+ if (parentPayloadInput?.getBlockHashHex() !== parentBlockHash) {
80
+ throw new BlockError(block, {
81
+ code: BlockErrorCode.PARENT_PAYLOAD_UNKNOWN,
82
+ parentRoot,
83
+ parentBlockHash,
84
+ });
85
+ }
86
+ }
87
+ else {
88
+ parentBlock = parentBlockWithPayload;
89
+ }
90
+ }
71
91
  // Parent is known to the fork-choice
72
92
  parentBlockSlot = parentBlock.slot;
73
93
  }
@@ -1 +1 @@
1
- {"version":3,"file":"verifyBlocksSanityChecks.js","sourceRoot":"","sources":["../../../src/chain/blocks/verifyBlocksSanityChecks.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"verifyBlocksSanityChecks.js","sourceRoot":"","sources":["../../../src/chain/blocks/verifyBlocksSanityChecks.ts"],"names":[],"mappings":"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"}
@@ -12,13 +12,13 @@ export type VerifyExecutionPayloadEnvelopeOpts = {
12
12
  * performed outside this function, see `verifyExecutionPayloadEnvelopeSignature` and
13
13
  * `importExecutionPayload` which run both in parallel with this check.
14
14
  *
15
- * Spec: https://github.com/ethereum/consensus-specs/blob/v1.7.0-alpha.5/specs/gloas/fork-choice.md#new-verify_execution_payload_envelope
15
+ * Spec: https://github.com/ethereum/consensus-specs/blob/v1.7.0-alpha.6/specs/gloas/fork-choice.md#new-verify_execution_payload_envelope
16
16
  */
17
17
  export declare function verifyExecutionPayloadEnvelope(config: BeaconConfig, state: IBeaconStateViewGloas, envelope: gloas.ExecutionPayloadEnvelope, opts?: VerifyExecutionPayloadEnvelopeOpts): void;
18
18
  /**
19
19
  * Verify the BLS signature of an execution payload envelope.
20
20
  *
21
- * Spec: https://github.com/ethereum/consensus-specs/blob/v1.7.0-alpha.5/specs/gloas/fork-choice.md#new-verify_execution_payload_envelope_signature
21
+ * Spec: https://github.com/ethereum/consensus-specs/blob/v1.7.0-alpha.6/specs/gloas/fork-choice.md#new-verify_execution_payload_envelope_signature
22
22
  */
23
23
  export declare function verifyExecutionPayloadEnvelopeSignature(config: BeaconConfig, state: IBeaconStateViewGloas, pubkeyCache: PubkeyCache, signedEnvelope: gloas.SignedExecutionPayloadEnvelope, proposerIndex: number, bls: IBlsVerifier): Promise<boolean>;
24
24
  //# sourceMappingURL=verifyExecutionPayloadEnvelope.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"verifyExecutionPayloadEnvelope.d.ts","sourceRoot":"","sources":["../../../src/chain/blocks/verifyExecutionPayloadEnvelope.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,YAAY,EAAC,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EACL,KAAK,qBAAqB,EAC1B,KAAK,WAAW,EAGjB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAC,KAAK,EAAM,MAAM,iBAAiB,CAAC;AAE3C,OAAO,EAAC,YAAY,EAAC,MAAM,iBAAiB,CAAC;AAE7C,MAAM,MAAM,kCAAkC,GAAG;IAC/C,2BAA2B,CAAC,EAAE,OAAO,CAAC;CACvC,CAAC;AAEF;;;;;;;;GAQG;AACH,wBAAgB,8BAA8B,CAC5C,MAAM,EAAE,YAAY,EACpB,KAAK,EAAE,qBAAqB,EAC5B,QAAQ,EAAE,KAAK,CAAC,wBAAwB,EACxC,IAAI,CAAC,EAAE,kCAAkC,GACxC,IAAI,CA4EN;AAED;;;;GAIG;AACH,wBAAsB,uCAAuC,CAC3D,MAAM,EAAE,YAAY,EACpB,KAAK,EAAE,qBAAqB,EAC5B,WAAW,EAAE,WAAW,EACxB,cAAc,EAAE,KAAK,CAAC,8BAA8B,EACpD,aAAa,EAAE,MAAM,EACrB,GAAG,EAAE,YAAY,GAChB,OAAO,CAAC,OAAO,CAAC,CASlB"}
1
+ {"version":3,"file":"verifyExecutionPayloadEnvelope.d.ts","sourceRoot":"","sources":["../../../src/chain/blocks/verifyExecutionPayloadEnvelope.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,YAAY,EAAC,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EACL,KAAK,qBAAqB,EAC1B,KAAK,WAAW,EAGjB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAC,KAAK,EAAM,MAAM,iBAAiB,CAAC;AAE3C,OAAO,EAAC,YAAY,EAAC,MAAM,iBAAiB,CAAC;AAE7C,MAAM,MAAM,kCAAkC,GAAG;IAC/C,2BAA2B,CAAC,EAAE,OAAO,CAAC;CACvC,CAAC;AAEF;;;;;;;;GAQG;AACH,wBAAgB,8BAA8B,CAC5C,MAAM,EAAE,YAAY,EACpB,KAAK,EAAE,qBAAqB,EAC5B,QAAQ,EAAE,KAAK,CAAC,wBAAwB,EACxC,IAAI,CAAC,EAAE,kCAAkC,GACxC,IAAI,CAiFN;AAED;;;;GAIG;AACH,wBAAsB,uCAAuC,CAC3D,MAAM,EAAE,YAAY,EACpB,KAAK,EAAE,qBAAqB,EAC5B,WAAW,EAAE,WAAW,EACxB,cAAc,EAAE,KAAK,CAAC,8BAA8B,EACpD,aAAa,EAAE,MAAM,EACrB,GAAG,EAAE,YAAY,GAChB,OAAO,CAAC,OAAO,CAAC,CASlB"}
@@ -8,14 +8,14 @@ import { byteArrayEquals, toHex, toRootHex } from "@lodestar/utils";
8
8
  * performed outside this function, see `verifyExecutionPayloadEnvelopeSignature` and
9
9
  * `importExecutionPayload` which run both in parallel with this check.
10
10
  *
11
- * Spec: https://github.com/ethereum/consensus-specs/blob/v1.7.0-alpha.5/specs/gloas/fork-choice.md#new-verify_execution_payload_envelope
11
+ * Spec: https://github.com/ethereum/consensus-specs/blob/v1.7.0-alpha.6/specs/gloas/fork-choice.md#new-verify_execution_payload_envelope
12
12
  */
13
13
  export function verifyExecutionPayloadEnvelope(config, state, envelope, opts) {
14
14
  const { verifyExecutionRequestsRoot = true } = opts ?? {};
15
15
  const payload = envelope.payload;
16
16
  // Verify consistency with the beacon block.
17
- // Compute header root on a copy of latestBlockHeader to avoid mutating state.
18
- const headerValue = { ...state.latestBlockHeader };
17
+ // Compute header root on a clone of latestBlockHeader to avoid mutating state.
18
+ const headerValue = ssz.phase0.BeaconBlockHeader.clone(state.latestBlockHeader);
19
19
  if (byteArrayEquals(headerValue.stateRoot, ssz.Root.defaultValue())) {
20
20
  headerValue.stateRoot = state.hashTreeRoot();
21
21
  }
@@ -23,6 +23,9 @@ export function verifyExecutionPayloadEnvelope(config, state, envelope, opts) {
23
23
  if (!byteArrayEquals(envelope.beaconBlockRoot, headerRoot)) {
24
24
  throw new Error(`Envelope's block is not the latest block header envelope=${toRootHex(envelope.beaconBlockRoot)} latestBlockHeader=${toRootHex(headerRoot)}`);
25
25
  }
26
+ if (!byteArrayEquals(envelope.parentBeaconBlockRoot, state.latestBlockHeader.parentRoot)) {
27
+ throw new Error(`Envelope's parent_beacon_block_root mismatch envelope=${toRootHex(envelope.parentBeaconBlockRoot)} state=${toRootHex(state.latestBlockHeader.parentRoot)}`);
28
+ }
26
29
  // Verify consistency with the committed bid
27
30
  const bid = state.latestExecutionPayloadBid;
28
31
  if (envelope.builderIndex !== bid.builderIndex) {
@@ -67,7 +70,7 @@ export function verifyExecutionPayloadEnvelope(config, state, envelope, opts) {
67
70
  /**
68
71
  * Verify the BLS signature of an execution payload envelope.
69
72
  *
70
- * Spec: https://github.com/ethereum/consensus-specs/blob/v1.7.0-alpha.5/specs/gloas/fork-choice.md#new-verify_execution_payload_envelope_signature
73
+ * Spec: https://github.com/ethereum/consensus-specs/blob/v1.7.0-alpha.6/specs/gloas/fork-choice.md#new-verify_execution_payload_envelope_signature
71
74
  */
72
75
  export async function verifyExecutionPayloadEnvelopeSignature(config, state, pubkeyCache, signedEnvelope, proposerIndex, bls) {
73
76
  const signatureSet = getExecutionPayloadEnvelopeSignatureSet(config, pubkeyCache, state, signedEnvelope, proposerIndex);