@lodestar/beacon-node 1.41.0 → 1.42.0-dev.4118b5b440

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 (252) hide show
  1. package/lib/api/impl/beacon/blocks/index.d.ts.map +1 -1
  2. package/lib/api/impl/beacon/blocks/index.js +35 -16
  3. package/lib/api/impl/beacon/blocks/index.js.map +1 -1
  4. package/lib/api/impl/beacon/state/utils.d.ts +2 -2
  5. package/lib/api/impl/beacon/state/utils.d.ts.map +1 -1
  6. package/lib/api/impl/beacon/state/utils.js.map +1 -1
  7. package/lib/api/impl/validator/index.d.ts.map +1 -1
  8. package/lib/api/impl/validator/index.js +6 -2
  9. package/lib/api/impl/validator/index.js.map +1 -1
  10. package/lib/chain/archiveStore/archiveStore.d.ts +0 -1
  11. package/lib/chain/archiveStore/archiveStore.d.ts.map +1 -1
  12. package/lib/chain/archiveStore/archiveStore.js +0 -9
  13. package/lib/chain/archiveStore/archiveStore.js.map +1 -1
  14. package/lib/chain/archiveStore/interface.d.ts +4 -4
  15. package/lib/chain/archiveStore/interface.d.ts.map +1 -1
  16. package/lib/chain/archiveStore/strategies/frequencyStateArchiveStrategy.d.ts +4 -4
  17. package/lib/chain/archiveStore/strategies/frequencyStateArchiveStrategy.d.ts.map +1 -1
  18. package/lib/chain/archiveStore/strategies/frequencyStateArchiveStrategy.js +4 -1
  19. package/lib/chain/archiveStore/strategies/frequencyStateArchiveStrategy.js.map +1 -1
  20. package/lib/chain/archiveStore/utils/archiveBlocks.d.ts.map +1 -1
  21. package/lib/chain/archiveStore/utils/archiveBlocks.js +38 -0
  22. package/lib/chain/archiveStore/utils/archiveBlocks.js.map +1 -1
  23. package/lib/chain/blocks/blockInput/types.d.ts +4 -3
  24. package/lib/chain/blocks/blockInput/types.d.ts.map +1 -1
  25. package/lib/chain/blocks/blockInput/types.js +1 -0
  26. package/lib/chain/blocks/blockInput/types.js.map +1 -1
  27. package/lib/chain/blocks/importBlock.d.ts.map +1 -1
  28. package/lib/chain/blocks/importBlock.js +29 -9
  29. package/lib/chain/blocks/importBlock.js.map +1 -1
  30. package/lib/chain/blocks/importExecutionPayload.d.ts +48 -0
  31. package/lib/chain/blocks/importExecutionPayload.d.ts.map +1 -0
  32. package/lib/chain/blocks/importExecutionPayload.js +159 -0
  33. package/lib/chain/blocks/importExecutionPayload.js.map +1 -0
  34. package/lib/chain/blocks/payloadEnvelopeInput/index.d.ts +3 -0
  35. package/lib/chain/blocks/payloadEnvelopeInput/index.d.ts.map +1 -0
  36. package/lib/chain/blocks/payloadEnvelopeInput/index.js +3 -0
  37. package/lib/chain/blocks/payloadEnvelopeInput/index.js.map +1 -0
  38. package/lib/chain/blocks/payloadEnvelopeInput/payloadEnvelopeInput.d.ts +80 -0
  39. package/lib/chain/blocks/payloadEnvelopeInput/payloadEnvelopeInput.d.ts.map +1 -0
  40. package/lib/chain/blocks/payloadEnvelopeInput/payloadEnvelopeInput.js +248 -0
  41. package/lib/chain/blocks/payloadEnvelopeInput/payloadEnvelopeInput.js.map +1 -0
  42. package/lib/chain/blocks/payloadEnvelopeInput/types.d.ts +29 -0
  43. package/lib/chain/blocks/payloadEnvelopeInput/types.d.ts.map +1 -0
  44. package/lib/chain/blocks/payloadEnvelopeInput/types.js +11 -0
  45. package/lib/chain/blocks/payloadEnvelopeInput/types.js.map +1 -0
  46. package/lib/chain/blocks/payloadEnvelopeProcessor.d.ts +15 -0
  47. package/lib/chain/blocks/payloadEnvelopeProcessor.d.ts.map +1 -0
  48. package/lib/chain/blocks/payloadEnvelopeProcessor.js +46 -0
  49. package/lib/chain/blocks/payloadEnvelopeProcessor.js.map +1 -0
  50. package/lib/chain/blocks/types.d.ts +7 -0
  51. package/lib/chain/blocks/types.d.ts.map +1 -1
  52. package/lib/chain/blocks/verifyBlocksSignatures.js +1 -1
  53. package/lib/chain/blocks/verifyBlocksSignatures.js.map +1 -1
  54. package/lib/chain/blocks/writePayloadEnvelopeInputToDb.d.ts +12 -0
  55. package/lib/chain/blocks/writePayloadEnvelopeInputToDb.d.ts.map +1 -0
  56. package/lib/chain/blocks/writePayloadEnvelopeInputToDb.js +40 -0
  57. package/lib/chain/blocks/writePayloadEnvelopeInputToDb.js.map +1 -0
  58. package/lib/chain/chain.d.ts +10 -5
  59. package/lib/chain/chain.d.ts.map +1 -1
  60. package/lib/chain/chain.js +44 -10
  61. package/lib/chain/chain.js.map +1 -1
  62. package/lib/chain/errors/executionPayloadEnvelope.d.ts +12 -2
  63. package/lib/chain/errors/executionPayloadEnvelope.d.ts.map +1 -1
  64. package/lib/chain/errors/executionPayloadEnvelope.js +3 -1
  65. package/lib/chain/errors/executionPayloadEnvelope.js.map +1 -1
  66. package/lib/chain/forkChoice/index.d.ts.map +1 -1
  67. package/lib/chain/forkChoice/index.js +0 -10
  68. package/lib/chain/forkChoice/index.js.map +1 -1
  69. package/lib/chain/interface.d.ts +8 -5
  70. package/lib/chain/interface.d.ts.map +1 -1
  71. package/lib/chain/opPools/utils.js +1 -1
  72. package/lib/chain/opPools/utils.js.map +1 -1
  73. package/lib/chain/prepareNextSlot.d.ts.map +1 -1
  74. package/lib/chain/prepareNextSlot.js +6 -2
  75. package/lib/chain/prepareNextSlot.js.map +1 -1
  76. package/lib/chain/produceBlock/computeNewStateRoot.d.ts.map +1 -1
  77. package/lib/chain/produceBlock/computeNewStateRoot.js +6 -1
  78. package/lib/chain/produceBlock/computeNewStateRoot.js.map +1 -1
  79. package/lib/chain/produceBlock/produceBlockBody.js +1 -1
  80. package/lib/chain/produceBlock/produceBlockBody.js.map +1 -1
  81. package/lib/chain/regen/errors.d.ts +11 -1
  82. package/lib/chain/regen/errors.d.ts.map +1 -1
  83. package/lib/chain/regen/errors.js +2 -0
  84. package/lib/chain/regen/errors.js.map +1 -1
  85. package/lib/chain/regen/interface.d.ts +14 -6
  86. package/lib/chain/regen/interface.d.ts.map +1 -1
  87. package/lib/chain/regen/interface.js +2 -0
  88. package/lib/chain/regen/interface.js.map +1 -1
  89. package/lib/chain/regen/queued.d.ts +11 -6
  90. package/lib/chain/regen/queued.d.ts.map +1 -1
  91. package/lib/chain/regen/queued.js +40 -8
  92. package/lib/chain/regen/queued.js.map +1 -1
  93. package/lib/chain/regen/regen.d.ts +5 -0
  94. package/lib/chain/regen/regen.d.ts.map +1 -1
  95. package/lib/chain/regen/regen.js +33 -6
  96. package/lib/chain/regen/regen.js.map +1 -1
  97. package/lib/chain/seenCache/index.d.ts +1 -1
  98. package/lib/chain/seenCache/index.d.ts.map +1 -1
  99. package/lib/chain/seenCache/index.js +1 -1
  100. package/lib/chain/seenCache/index.js.map +1 -1
  101. package/lib/chain/seenCache/seenGossipBlockInput.js +2 -2
  102. package/lib/chain/seenCache/seenGossipBlockInput.js.map +1 -1
  103. package/lib/chain/seenCache/seenPayloadEnvelopeInput.d.ts +38 -0
  104. package/lib/chain/seenCache/seenPayloadEnvelopeInput.d.ts.map +1 -0
  105. package/lib/chain/seenCache/seenPayloadEnvelopeInput.js +76 -0
  106. package/lib/chain/seenCache/seenPayloadEnvelopeInput.js.map +1 -0
  107. package/lib/chain/stateCache/datastore/db.d.ts +4 -5
  108. package/lib/chain/stateCache/datastore/db.d.ts.map +1 -1
  109. package/lib/chain/stateCache/datastore/db.js +32 -10
  110. package/lib/chain/stateCache/datastore/db.js.map +1 -1
  111. package/lib/chain/stateCache/datastore/file.d.ts +1 -1
  112. package/lib/chain/stateCache/datastore/file.d.ts.map +1 -1
  113. package/lib/chain/stateCache/datastore/file.js +5 -5
  114. package/lib/chain/stateCache/datastore/file.js.map +1 -1
  115. package/lib/chain/stateCache/datastore/types.d.ts +1 -1
  116. package/lib/chain/stateCache/datastore/types.d.ts.map +1 -1
  117. package/lib/chain/stateCache/fifoBlockStateCache.d.ts +7 -4
  118. package/lib/chain/stateCache/fifoBlockStateCache.d.ts.map +1 -1
  119. package/lib/chain/stateCache/fifoBlockStateCache.js +8 -3
  120. package/lib/chain/stateCache/fifoBlockStateCache.js.map +1 -1
  121. package/lib/chain/stateCache/persistentCheckpointsCache.d.ts +33 -14
  122. package/lib/chain/stateCache/persistentCheckpointsCache.d.ts.map +1 -1
  123. package/lib/chain/stateCache/persistentCheckpointsCache.js +217 -119
  124. package/lib/chain/stateCache/persistentCheckpointsCache.js.map +1 -1
  125. package/lib/chain/stateCache/types.d.ts +15 -8
  126. package/lib/chain/stateCache/types.d.ts.map +1 -1
  127. package/lib/chain/stateCache/types.js.map +1 -1
  128. package/lib/chain/validation/executionPayloadEnvelope.d.ts.map +1 -1
  129. package/lib/chain/validation/executionPayloadEnvelope.js +30 -19
  130. package/lib/chain/validation/executionPayloadEnvelope.js.map +1 -1
  131. package/lib/chain/validation/lightClientFinalityUpdate.js +1 -1
  132. package/lib/chain/validation/lightClientFinalityUpdate.js.map +1 -1
  133. package/lib/chain/validation/lightClientOptimisticUpdate.js +1 -1
  134. package/lib/chain/validation/lightClientOptimisticUpdate.js.map +1 -1
  135. package/lib/chain/validation/syncCommittee.d.ts +2 -2
  136. package/lib/chain/validation/syncCommittee.d.ts.map +1 -1
  137. package/lib/chain/validation/syncCommittee.js +12 -11
  138. package/lib/chain/validation/syncCommittee.js.map +1 -1
  139. package/lib/chain/validation/voluntaryExit.d.ts.map +1 -1
  140. package/lib/chain/validation/voluntaryExit.js +2 -2
  141. package/lib/chain/validation/voluntaryExit.js.map +1 -1
  142. package/lib/chain/validatorMonitor.d.ts +2 -1
  143. package/lib/chain/validatorMonitor.d.ts.map +1 -1
  144. package/lib/chain/validatorMonitor.js +4 -1
  145. package/lib/chain/validatorMonitor.js.map +1 -1
  146. package/lib/execution/engine/interface.d.ts +2 -2
  147. package/lib/metrics/metrics/lodestar.d.ts +40 -4
  148. package/lib/metrics/metrics/lodestar.d.ts.map +1 -1
  149. package/lib/metrics/metrics/lodestar.js +93 -15
  150. package/lib/metrics/metrics/lodestar.js.map +1 -1
  151. package/lib/network/gossip/encoding.d.ts.map +1 -1
  152. package/lib/network/gossip/encoding.js +15 -0
  153. package/lib/network/gossip/encoding.js.map +1 -1
  154. package/lib/network/interface.d.ts +1 -1
  155. package/lib/network/interface.d.ts.map +1 -1
  156. package/lib/network/network.d.ts +1 -1
  157. package/lib/network/network.d.ts.map +1 -1
  158. package/lib/network/network.js +4 -4
  159. package/lib/network/network.js.map +1 -1
  160. package/lib/network/processor/extractSlotRootFns.d.ts +1 -1
  161. package/lib/network/processor/extractSlotRootFns.d.ts.map +1 -1
  162. package/lib/network/processor/extractSlotRootFns.js +15 -5
  163. package/lib/network/processor/extractSlotRootFns.js.map +1 -1
  164. package/lib/network/processor/gossipHandlers.d.ts.map +1 -1
  165. package/lib/network/processor/gossipHandlers.js +39 -9
  166. package/lib/network/processor/gossipHandlers.js.map +1 -1
  167. package/lib/network/processor/index.d.ts +12 -7
  168. package/lib/network/processor/index.d.ts.map +1 -1
  169. package/lib/network/processor/index.js +99 -78
  170. package/lib/network/processor/index.js.map +1 -1
  171. package/lib/network/reqresp/ReqRespBeaconNode.d.ts +1 -1
  172. package/lib/network/reqresp/ReqRespBeaconNode.js +1 -1
  173. package/lib/sync/backfill/backfill.d.ts +1 -1
  174. package/lib/sync/backfill/backfill.js +1 -1
  175. package/lib/sync/constants.d.ts +1 -1
  176. package/lib/sync/constants.js +1 -1
  177. package/lib/sync/unknownBlock.d.ts +3 -9
  178. package/lib/sync/unknownBlock.d.ts.map +1 -1
  179. package/lib/sync/unknownBlock.js +8 -41
  180. package/lib/sync/unknownBlock.js.map +1 -1
  181. package/lib/util/sszBytes.d.ts +4 -1
  182. package/lib/util/sszBytes.d.ts.map +1 -1
  183. package/lib/util/sszBytes.js +69 -12
  184. package/lib/util/sszBytes.js.map +1 -1
  185. package/package.json +15 -15
  186. package/src/api/impl/beacon/blocks/index.ts +36 -17
  187. package/src/api/impl/beacon/state/utils.ts +2 -2
  188. package/src/api/impl/validator/index.ts +8 -4
  189. package/src/chain/archiveStore/archiveStore.ts +0 -10
  190. package/src/chain/archiveStore/interface.ts +4 -4
  191. package/src/chain/archiveStore/strategies/frequencyStateArchiveStrategy.ts +8 -5
  192. package/src/chain/archiveStore/utils/archiveBlocks.ts +59 -1
  193. package/src/chain/blocks/blockInput/types.ts +4 -3
  194. package/src/chain/blocks/importBlock.ts +47 -8
  195. package/src/chain/blocks/importExecutionPayload.ts +241 -0
  196. package/src/chain/blocks/payloadEnvelopeInput/index.ts +2 -0
  197. package/src/chain/blocks/payloadEnvelopeInput/payloadEnvelopeInput.ts +336 -0
  198. package/src/chain/blocks/payloadEnvelopeInput/types.ts +33 -0
  199. package/src/chain/blocks/payloadEnvelopeProcessor.ts +61 -0
  200. package/src/chain/blocks/types.ts +8 -0
  201. package/src/chain/blocks/verifyBlocksSignatures.ts +1 -1
  202. package/src/chain/blocks/writePayloadEnvelopeInputToDb.ts +55 -0
  203. package/src/chain/chain.ts +60 -15
  204. package/src/chain/errors/executionPayloadEnvelope.ts +6 -2
  205. package/src/chain/forkChoice/index.ts +0 -10
  206. package/src/chain/interface.ts +8 -5
  207. package/src/chain/opPools/utils.ts +1 -1
  208. package/src/chain/prepareNextSlot.ts +6 -2
  209. package/src/chain/produceBlock/computeNewStateRoot.ts +6 -1
  210. package/src/chain/produceBlock/produceBlockBody.ts +1 -1
  211. package/src/chain/regen/errors.ts +6 -1
  212. package/src/chain/regen/interface.ts +14 -6
  213. package/src/chain/regen/queued.ts +48 -12
  214. package/src/chain/regen/regen.ts +37 -7
  215. package/src/chain/seenCache/index.ts +1 -1
  216. package/src/chain/seenCache/seenGossipBlockInput.ts +2 -2
  217. package/src/chain/seenCache/seenPayloadEnvelopeInput.ts +106 -0
  218. package/src/chain/stateCache/datastore/db.ts +33 -10
  219. package/src/chain/stateCache/datastore/file.ts +6 -5
  220. package/src/chain/stateCache/datastore/types.ts +3 -2
  221. package/src/chain/stateCache/fifoBlockStateCache.ts +10 -4
  222. package/src/chain/stateCache/persistentCheckpointsCache.ts +248 -139
  223. package/src/chain/stateCache/types.ts +18 -8
  224. package/src/chain/validation/executionPayloadEnvelope.ts +38 -25
  225. package/src/chain/validation/lightClientFinalityUpdate.ts +1 -1
  226. package/src/chain/validation/lightClientOptimisticUpdate.ts +1 -1
  227. package/src/chain/validation/syncCommittee.ts +15 -14
  228. package/src/chain/validation/voluntaryExit.ts +2 -1
  229. package/src/chain/validatorMonitor.ts +11 -1
  230. package/src/execution/engine/interface.ts +2 -2
  231. package/src/metrics/metrics/lodestar.ts +100 -19
  232. package/src/network/gossip/encoding.ts +16 -0
  233. package/src/network/interface.ts +1 -1
  234. package/src/network/network.ts +4 -4
  235. package/src/network/processor/extractSlotRootFns.ts +19 -6
  236. package/src/network/processor/gossipHandlers.ts +45 -8
  237. package/src/network/processor/index.ts +110 -89
  238. package/src/network/reqresp/ReqRespBeaconNode.ts +1 -1
  239. package/src/sync/backfill/backfill.ts +1 -1
  240. package/src/sync/constants.ts +1 -1
  241. package/src/sync/unknownBlock.ts +10 -50
  242. package/src/util/sszBytes.ts +90 -10
  243. package/lib/chain/archiveStore/utils/archivePayloads.d.ts +0 -7
  244. package/lib/chain/archiveStore/utils/archivePayloads.d.ts.map +0 -1
  245. package/lib/chain/archiveStore/utils/archivePayloads.js +0 -10
  246. package/lib/chain/archiveStore/utils/archivePayloads.js.map +0 -1
  247. package/lib/chain/seenCache/seenExecutionPayloadEnvelope.d.ts +0 -15
  248. package/lib/chain/seenCache/seenExecutionPayloadEnvelope.d.ts.map +0 -1
  249. package/lib/chain/seenCache/seenExecutionPayloadEnvelope.js +0 -28
  250. package/lib/chain/seenCache/seenExecutionPayloadEnvelope.js.map +0 -1
  251. package/src/chain/archiveStore/utils/archivePayloads.ts +0 -15
  252. package/src/chain/seenCache/seenExecutionPayloadEnvelope.ts +0 -34
@@ -8,6 +8,7 @@ import {
8
8
  ForkSeq,
9
9
  MAX_COMMITTEES_PER_SLOT,
10
10
  isForkPostElectra,
11
+ isForkPostGloas,
11
12
  } from "@lodestar/params";
12
13
  import {BLSSignature, CommitteeIndex, RootHex, Slot, ValidatorIndex, ssz} from "@lodestar/types";
13
14
 
@@ -398,23 +399,102 @@ export function getSlotFromBlobSidecarSerialized(data: Uint8Array): Slot | null
398
399
  }
399
400
 
400
401
  /**
402
+ * Pre-Gloas DataColumnSidecar:
401
403
  * {
402
- index: ColumnIndex [ fixed - 8 bytes],
403
- column: DataColumn BYTES_PER_FIELD_ELEMENT * FIELD_ELEMENTS_PER_CELL * <some non fixed length>,
404
- kzgCommitments: denebSsz.BlobKzgCommitments,
405
- kzgProofs: denebSsz.KZGProofs,
406
- signedBlockHeader: phase0Ssz.SignedBeaconBlockHeader,
407
- kzgCommitmentsInclusionProof: KzgCommitmentsInclusionProof,
404
+ * index: ColumnIndex [fixed - 8 bytes],
405
+ * column: DataColumn (offset - 4 bytes),
406
+ * kzgCommitments: (offset - 4 bytes),
407
+ * kzgProofs: (offset - 4 bytes),
408
+ * signedBlockHeader: (offset - 4 bytes) -> slot at variable offset after fixed header
409
+ * kzgCommitmentsInclusionProof: (offset - 4 bytes),
410
+ * }
411
+ * Post-Gloas DataColumnSidecar:
412
+ * {
413
+ * index: ColumnIndex [8 bytes],
414
+ * column: DataColumn (offset - 4 bytes),
415
+ * kzgProofs: (offset - 4 bytes),
416
+ * slot: Slot [8 bytes] - at offset 16,
417
+ * beaconBlockRoot: Root [32 bytes] - at offset 24,
418
+ * }
419
+ */
420
+ const SLOT_BYTES_POSITION_IN_SIGNED_DATA_COLUMN_SIDECAR_PRE_GLOAS = 20;
421
+ const SLOT_BYTES_POSITION_IN_SIGNED_DATA_COLUMN_SIDECAR_POST_GLOAS = 16;
422
+ const BEACON_BLOCK_ROOT_POSITION_IN_GLOAS_DATA_COLUMN_SIDECAR = 24;
423
+
424
+ export function getSlotFromDataColumnSidecarSerialized(data: Uint8Array, fork: ForkName): Slot | null {
425
+ const offset = isForkPostGloas(fork)
426
+ ? SLOT_BYTES_POSITION_IN_SIGNED_DATA_COLUMN_SIDECAR_POST_GLOAS
427
+ : SLOT_BYTES_POSITION_IN_SIGNED_DATA_COLUMN_SIDECAR_PRE_GLOAS;
428
+
429
+ if (data.length < offset + SLOT_SIZE) {
430
+ return null;
408
431
  }
432
+
433
+ return getSlotFromOffset(data, offset);
434
+ }
435
+
436
+ export function getBeaconBlockRootFromDataColumnSidecarSerialized(data: Uint8Array): RootHex | null {
437
+ if (data.length < BEACON_BLOCK_ROOT_POSITION_IN_GLOAS_DATA_COLUMN_SIDECAR + ROOT_SIZE) {
438
+ return null;
439
+ }
440
+
441
+ blockRootBuf.set(
442
+ data.subarray(
443
+ BEACON_BLOCK_ROOT_POSITION_IN_GLOAS_DATA_COLUMN_SIDECAR,
444
+ BEACON_BLOCK_ROOT_POSITION_IN_GLOAS_DATA_COLUMN_SIDECAR + ROOT_SIZE
445
+ )
446
+ );
447
+ return "0x" + blockRootBuf.toString("hex");
448
+ }
449
+
450
+ /**
451
+ * SignedExecutionPayloadEnvelope SSZ Layout:
452
+ * ├─ 4 bytes: message offset (points to byte 100)
453
+ * ├─ 96 bytes: signature
454
+ * └─ ExecutionPayloadEnvelope (starts at byte 100):
455
+ * ├─ 4 bytes: payload offset
456
+ * ├─ 4 bytes: executionRequests offset
457
+ * ├─ 8 bytes: builderIndex (offset 108-115)
458
+ * ├─ 32 bytes: beaconBlockRoot (offset 116-147)
459
+ * ├─ 8 bytes: slot (offset 148-155)
460
+ * └─ 32 bytes: stateRoot (offset 156-187)
409
461
  */
462
+ const SIGNED_EXECUTION_PAYLOAD_ENVELOPE_MESSAGE_OFFSET = 4;
463
+ const SIGNED_EXECUTION_PAYLOAD_ENVELOPE_SIGNATURE_SIZE = 96;
464
+ const EXECUTION_PAYLOAD_ENVELOPE_PAYLOAD_OFFSET = 4;
465
+ const EXECUTION_PAYLOAD_ENVELOPE_REQUESTS_OFFSET = 4;
466
+ const EXECUTION_PAYLOAD_ENVELOPE_BUILDER_INDEX_SIZE = 8;
467
+
468
+ const BEACON_BLOCK_ROOT_OFFSET_IN_SIGNED_EXECUTION_PAYLOAD_ENVELOPE =
469
+ SIGNED_EXECUTION_PAYLOAD_ENVELOPE_MESSAGE_OFFSET +
470
+ SIGNED_EXECUTION_PAYLOAD_ENVELOPE_SIGNATURE_SIZE +
471
+ EXECUTION_PAYLOAD_ENVELOPE_PAYLOAD_OFFSET +
472
+ EXECUTION_PAYLOAD_ENVELOPE_REQUESTS_OFFSET +
473
+ EXECUTION_PAYLOAD_ENVELOPE_BUILDER_INDEX_SIZE; // 116
474
+
475
+ const SLOT_OFFSET_IN_SIGNED_EXECUTION_PAYLOAD_ENVELOPE =
476
+ BEACON_BLOCK_ROOT_OFFSET_IN_SIGNED_EXECUTION_PAYLOAD_ENVELOPE + ROOT_SIZE; // 148
477
+
478
+ export function getSlotFromExecutionPayloadEnvelopeSerialized(data: Uint8Array): Slot | null {
479
+ if (data.length < SLOT_OFFSET_IN_SIGNED_EXECUTION_PAYLOAD_ENVELOPE + SLOT_SIZE) {
480
+ return null;
481
+ }
410
482
 
411
- const SLOT_BYTES_POSITION_IN_SIGNED_DATA_COLUMN_SIDECAR = 20;
412
- export function getSlotFromDataColumnSidecarSerialized(data: Uint8Array): Slot | null {
413
- if (data.length < SLOT_BYTES_POSITION_IN_SIGNED_DATA_COLUMN_SIDECAR + SLOT_SIZE) {
483
+ return getSlotFromOffset(data, SLOT_OFFSET_IN_SIGNED_EXECUTION_PAYLOAD_ENVELOPE);
484
+ }
485
+
486
+ export function getBeaconBlockRootFromExecutionPayloadEnvelopeSerialized(data: Uint8Array): RootHex | null {
487
+ if (data.length < BEACON_BLOCK_ROOT_OFFSET_IN_SIGNED_EXECUTION_PAYLOAD_ENVELOPE + ROOT_SIZE) {
414
488
  return null;
415
489
  }
416
490
 
417
- return getSlotFromOffset(data, SLOT_BYTES_POSITION_IN_SIGNED_DATA_COLUMN_SIDECAR);
491
+ blockRootBuf.set(
492
+ data.subarray(
493
+ BEACON_BLOCK_ROOT_OFFSET_IN_SIGNED_EXECUTION_PAYLOAD_ENVELOPE,
494
+ BEACON_BLOCK_ROOT_OFFSET_IN_SIGNED_EXECUTION_PAYLOAD_ENVELOPE + ROOT_SIZE
495
+ )
496
+ );
497
+ return "0x" + blockRootBuf.toString("hex");
418
498
  }
419
499
 
420
500
  /**
@@ -1,7 +0,0 @@
1
- import { CheckpointWithHex } from "@lodestar/fork-choice";
2
- import { IBeaconChain } from "../../interface.js";
3
- /**
4
- * Archives execution payload envelopes from hot DB to archive DB after finalization.
5
- */
6
- export declare function archiveExecutionPayloadEnvelopes(chain: IBeaconChain, _finalized: CheckpointWithHex): Promise<void>;
7
- //# sourceMappingURL=archivePayloads.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"archivePayloads.d.ts","sourceRoot":"","sources":["../../../../src/chain/archiveStore/utils/archivePayloads.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,iBAAiB,EAAC,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAC,YAAY,EAAC,MAAM,oBAAoB,CAAC;AAEhD;;GAEG;AACH,wBAAsB,gCAAgC,CACpD,KAAK,EAAE,YAAY,EACnB,UAAU,EAAE,iBAAiB,GAC5B,OAAO,CAAC,IAAI,CAAC,CAKf"}
@@ -1,10 +0,0 @@
1
- /**
2
- * Archives execution payload envelopes from hot DB to archive DB after finalization.
3
- */
4
- export async function archiveExecutionPayloadEnvelopes(chain, _finalized) {
5
- const finalizedBlock = chain.forkChoice.getFinalizedBlock();
6
- if (!finalizedBlock)
7
- return;
8
- // TODO GLOAS: Implement payload envelope archival after epbs fork choice changes are merged
9
- }
10
- //# sourceMappingURL=archivePayloads.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"archivePayloads.js","sourceRoot":"","sources":["../../../../src/chain/archiveStore/utils/archivePayloads.ts"],"names":[],"mappings":"AAGA;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,gCAAgC,CACpD,KAAmB,EACnB,UAA6B,EACd;IACf,MAAM,cAAc,GAAG,KAAK,CAAC,UAAU,CAAC,iBAAiB,EAAE,CAAC;IAC5D,IAAI,CAAC,cAAc;QAAE,OAAO;IAE5B,4FAA4F;AAFhE,CAG7B"}
@@ -1,15 +0,0 @@
1
- import { RootHex, Slot } from "@lodestar/types";
2
- /**
3
- * Cache to prevent processing multiple execution payload envelopes for the same block root.
4
- * Only one builder qualifies to submit an execution payload for a given slot.
5
- * We only keep track of envelopes of unfinalized slots.
6
- * [IGNORE] The node has not seen another valid `SignedExecutionPayloadEnvelope` for this block root.
7
- */
8
- export declare class SeenExecutionPayloadEnvelopes {
9
- private readonly slotByBlockRoot;
10
- private finalizedSlot;
11
- isKnown(blockRoot: RootHex): boolean;
12
- add(blockRoot: RootHex, slot: Slot): void;
13
- prune(finalizedSlot: Slot): void;
14
- }
15
- //# sourceMappingURL=seenExecutionPayloadEnvelope.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"seenExecutionPayloadEnvelope.d.ts","sourceRoot":"","sources":["../../../src/chain/seenCache/seenExecutionPayloadEnvelope.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,OAAO,EAAE,IAAI,EAAC,MAAM,iBAAiB,CAAC;AAE9C;;;;;GAKG;AACH,qBAAa,6BAA6B;IACxC,OAAO,CAAC,QAAQ,CAAC,eAAe,CAA4B;IAC5D,OAAO,CAAC,aAAa,CAAW;IAEhC,OAAO,CAAC,SAAS,EAAE,OAAO,GAAG,OAAO,CAEnC;IAED,GAAG,CAAC,SAAS,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,GAAG,IAAI,CAMxC;IAED,KAAK,CAAC,aAAa,EAAE,IAAI,GAAG,IAAI,CAQ/B;CACF"}
@@ -1,28 +0,0 @@
1
- /**
2
- * Cache to prevent processing multiple execution payload envelopes for the same block root.
3
- * Only one builder qualifies to submit an execution payload for a given slot.
4
- * We only keep track of envelopes of unfinalized slots.
5
- * [IGNORE] The node has not seen another valid `SignedExecutionPayloadEnvelope` for this block root.
6
- */
7
- export class SeenExecutionPayloadEnvelopes {
8
- slotByBlockRoot = new Map();
9
- finalizedSlot = 0;
10
- isKnown(blockRoot) {
11
- return this.slotByBlockRoot.has(blockRoot);
12
- }
13
- add(blockRoot, slot) {
14
- if (slot < this.finalizedSlot) {
15
- throw Error(`slot ${slot} < finalizedSlot ${this.finalizedSlot}`);
16
- }
17
- this.slotByBlockRoot.set(blockRoot, slot);
18
- }
19
- prune(finalizedSlot) {
20
- this.finalizedSlot = finalizedSlot;
21
- for (const [blockRoot, slot] of this.slotByBlockRoot.entries()) {
22
- if (slot < finalizedSlot) {
23
- this.slotByBlockRoot.delete(blockRoot);
24
- }
25
- }
26
- }
27
- }
28
- //# sourceMappingURL=seenExecutionPayloadEnvelope.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"seenExecutionPayloadEnvelope.js","sourceRoot":"","sources":["../../../src/chain/seenCache/seenExecutionPayloadEnvelope.ts"],"names":[],"mappings":"AAEA;;;;;GAKG;AACH,MAAM,OAAO,6BAA6B;IACvB,eAAe,GAAG,IAAI,GAAG,EAAiB,CAAC;IACpD,aAAa,GAAS,CAAC,CAAC;IAEhC,OAAO,CAAC,SAAkB,EAAW;QACnC,OAAO,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IAAA,CAC5C;IAED,GAAG,CAAC,SAAkB,EAAE,IAAU,EAAQ;QACxC,IAAI,IAAI,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;YAC9B,MAAM,KAAK,CAAC,QAAQ,IAAI,oBAAoB,IAAI,CAAC,aAAa,EAAE,CAAC,CAAC;QACpE,CAAC;QAED,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;IAAA,CAC3C;IAED,KAAK,CAAC,aAAmB,EAAQ;QAC/B,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;QAEnC,KAAK,MAAM,CAAC,SAAS,EAAE,IAAI,CAAC,IAAI,IAAI,CAAC,eAAe,CAAC,OAAO,EAAE,EAAE,CAAC;YAC/D,IAAI,IAAI,GAAG,aAAa,EAAE,CAAC;gBACzB,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;YACzC,CAAC;QACH,CAAC;IAAA,CACF;CACF"}
@@ -1,15 +0,0 @@
1
- import {CheckpointWithHex} from "@lodestar/fork-choice";
2
- import {IBeaconChain} from "../../interface.js";
3
-
4
- /**
5
- * Archives execution payload envelopes from hot DB to archive DB after finalization.
6
- */
7
- export async function archiveExecutionPayloadEnvelopes(
8
- chain: IBeaconChain,
9
- _finalized: CheckpointWithHex
10
- ): Promise<void> {
11
- const finalizedBlock = chain.forkChoice.getFinalizedBlock();
12
- if (!finalizedBlock) return;
13
-
14
- // TODO GLOAS: Implement payload envelope archival after epbs fork choice changes are merged
15
- }
@@ -1,34 +0,0 @@
1
- import {RootHex, Slot} from "@lodestar/types";
2
-
3
- /**
4
- * Cache to prevent processing multiple execution payload envelopes for the same block root.
5
- * Only one builder qualifies to submit an execution payload for a given slot.
6
- * We only keep track of envelopes of unfinalized slots.
7
- * [IGNORE] The node has not seen another valid `SignedExecutionPayloadEnvelope` for this block root.
8
- */
9
- export class SeenExecutionPayloadEnvelopes {
10
- private readonly slotByBlockRoot = new Map<RootHex, Slot>();
11
- private finalizedSlot: Slot = 0;
12
-
13
- isKnown(blockRoot: RootHex): boolean {
14
- return this.slotByBlockRoot.has(blockRoot);
15
- }
16
-
17
- add(blockRoot: RootHex, slot: Slot): void {
18
- if (slot < this.finalizedSlot) {
19
- throw Error(`slot ${slot} < finalizedSlot ${this.finalizedSlot}`);
20
- }
21
-
22
- this.slotByBlockRoot.set(blockRoot, slot);
23
- }
24
-
25
- prune(finalizedSlot: Slot): void {
26
- this.finalizedSlot = finalizedSlot;
27
-
28
- for (const [blockRoot, slot] of this.slotByBlockRoot.entries()) {
29
- if (slot < finalizedSlot) {
30
- this.slotByBlockRoot.delete(blockRoot);
31
- }
32
- }
33
- }
34
- }