@lodestar/beacon-node 1.43.0-dev.2740f92909 → 1.43.0-dev.433e692fd9

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 (105) hide show
  1. package/lib/api/impl/validator/index.d.ts.map +1 -1
  2. package/lib/api/impl/validator/index.js +4 -3
  3. package/lib/api/impl/validator/index.js.map +1 -1
  4. package/lib/chain/archiveStore/strategies/frequencyStateArchiveStrategy.d.ts.map +1 -1
  5. package/lib/chain/archiveStore/strategies/frequencyStateArchiveStrategy.js +2 -4
  6. package/lib/chain/archiveStore/strategies/frequencyStateArchiveStrategy.js.map +1 -1
  7. package/lib/chain/blocks/importBlock.d.ts.map +1 -1
  8. package/lib/chain/blocks/importBlock.js +24 -28
  9. package/lib/chain/blocks/importBlock.js.map +1 -1
  10. package/lib/chain/blocks/importExecutionPayload.js +2 -2
  11. package/lib/chain/blocks/importExecutionPayload.js.map +1 -1
  12. package/lib/chain/blocks/index.js +1 -1
  13. package/lib/chain/blocks/index.js.map +1 -1
  14. package/lib/chain/blocks/types.d.ts +1 -1
  15. package/lib/chain/blocks/types.d.ts.map +1 -1
  16. package/lib/chain/chain.d.ts.map +1 -1
  17. package/lib/chain/chain.js +17 -37
  18. package/lib/chain/chain.js.map +1 -1
  19. package/lib/chain/errors/attestationError.d.ts +8 -1
  20. package/lib/chain/errors/attestationError.d.ts.map +1 -1
  21. package/lib/chain/errors/attestationError.js +4 -0
  22. package/lib/chain/errors/attestationError.js.map +1 -1
  23. package/lib/chain/forkChoice/index.d.ts.map +1 -1
  24. package/lib/chain/forkChoice/index.js +6 -2
  25. package/lib/chain/forkChoice/index.js.map +1 -1
  26. package/lib/chain/prepareNextSlot.d.ts.map +1 -1
  27. package/lib/chain/prepareNextSlot.js +2 -6
  28. package/lib/chain/prepareNextSlot.js.map +1 -1
  29. package/lib/chain/produceBlock/computeNewStateRoot.d.ts +3 -9
  30. package/lib/chain/produceBlock/computeNewStateRoot.d.ts.map +1 -1
  31. package/lib/chain/produceBlock/computeNewStateRoot.js +5 -32
  32. package/lib/chain/produceBlock/computeNewStateRoot.js.map +1 -1
  33. package/lib/chain/produceBlock/produceBlockBody.d.ts +0 -6
  34. package/lib/chain/produceBlock/produceBlockBody.d.ts.map +1 -1
  35. package/lib/chain/produceBlock/produceBlockBody.js.map +1 -1
  36. package/lib/chain/regen/errors.d.ts +1 -11
  37. package/lib/chain/regen/errors.d.ts.map +1 -1
  38. package/lib/chain/regen/errors.js +0 -2
  39. package/lib/chain/regen/errors.js.map +1 -1
  40. package/lib/chain/regen/interface.d.ts +6 -12
  41. package/lib/chain/regen/interface.d.ts.map +1 -1
  42. package/lib/chain/regen/queued.d.ts +6 -11
  43. package/lib/chain/regen/queued.d.ts.map +1 -1
  44. package/lib/chain/regen/queued.js +8 -40
  45. package/lib/chain/regen/queued.js.map +1 -1
  46. package/lib/chain/regen/regen.d.ts +0 -5
  47. package/lib/chain/regen/regen.d.ts.map +1 -1
  48. package/lib/chain/regen/regen.js +7 -34
  49. package/lib/chain/regen/regen.js.map +1 -1
  50. package/lib/chain/stateCache/datastore/db.d.ts +5 -4
  51. package/lib/chain/stateCache/datastore/db.d.ts.map +1 -1
  52. package/lib/chain/stateCache/datastore/db.js +10 -32
  53. package/lib/chain/stateCache/datastore/db.js.map +1 -1
  54. package/lib/chain/stateCache/datastore/file.d.ts +1 -1
  55. package/lib/chain/stateCache/datastore/file.d.ts.map +1 -1
  56. package/lib/chain/stateCache/datastore/file.js +5 -5
  57. package/lib/chain/stateCache/datastore/file.js.map +1 -1
  58. package/lib/chain/stateCache/datastore/types.d.ts +1 -1
  59. package/lib/chain/stateCache/datastore/types.d.ts.map +1 -1
  60. package/lib/chain/stateCache/fifoBlockStateCache.d.ts +1 -7
  61. package/lib/chain/stateCache/fifoBlockStateCache.d.ts.map +1 -1
  62. package/lib/chain/stateCache/fifoBlockStateCache.js +0 -8
  63. package/lib/chain/stateCache/fifoBlockStateCache.js.map +1 -1
  64. package/lib/chain/stateCache/persistentCheckpointsCache.d.ts +13 -30
  65. package/lib/chain/stateCache/persistentCheckpointsCache.d.ts.map +1 -1
  66. package/lib/chain/stateCache/persistentCheckpointsCache.js +116 -215
  67. package/lib/chain/stateCache/persistentCheckpointsCache.js.map +1 -1
  68. package/lib/chain/stateCache/types.d.ts +8 -15
  69. package/lib/chain/stateCache/types.d.ts.map +1 -1
  70. package/lib/chain/stateCache/types.js.map +1 -1
  71. package/lib/chain/validation/aggregateAndProof.js +12 -0
  72. package/lib/chain/validation/aggregateAndProof.js.map +1 -1
  73. package/lib/chain/validation/attestation.d.ts.map +1 -1
  74. package/lib/chain/validation/attestation.js +12 -0
  75. package/lib/chain/validation/attestation.js.map +1 -1
  76. package/lib/chain/validation/executionPayloadEnvelope.js +2 -2
  77. package/lib/chain/validation/executionPayloadEnvelope.js.map +1 -1
  78. package/lib/network/gossip/topic.d.ts +2 -729
  79. package/lib/network/gossip/topic.d.ts.map +1 -1
  80. package/package.json +15 -15
  81. package/src/api/impl/validator/index.ts +6 -5
  82. package/src/chain/archiveStore/strategies/frequencyStateArchiveStrategy.ts +2 -4
  83. package/src/chain/blocks/importBlock.ts +23 -28
  84. package/src/chain/blocks/importExecutionPayload.ts +2 -2
  85. package/src/chain/blocks/index.ts +1 -1
  86. package/src/chain/blocks/types.ts +1 -1
  87. package/src/chain/chain.ts +16 -47
  88. package/src/chain/errors/attestationError.ts +6 -1
  89. package/src/chain/forkChoice/index.ts +6 -2
  90. package/src/chain/prepareNextSlot.ts +2 -6
  91. package/src/chain/produceBlock/computeNewStateRoot.ts +6 -43
  92. package/src/chain/produceBlock/produceBlockBody.ts +0 -6
  93. package/src/chain/regen/errors.ts +1 -6
  94. package/src/chain/regen/interface.ts +6 -12
  95. package/src/chain/regen/queued.ts +12 -48
  96. package/src/chain/regen/regen.ts +8 -36
  97. package/src/chain/stateCache/datastore/db.ts +10 -33
  98. package/src/chain/stateCache/datastore/file.ts +5 -6
  99. package/src/chain/stateCache/datastore/types.ts +2 -3
  100. package/src/chain/stateCache/fifoBlockStateCache.ts +1 -10
  101. package/src/chain/stateCache/persistentCheckpointsCache.ts +135 -246
  102. package/src/chain/stateCache/types.ts +8 -14
  103. package/src/chain/validation/aggregateAndProof.ts +13 -0
  104. package/src/chain/validation/attestation.ts +13 -0
  105. package/src/chain/validation/executionPayloadEnvelope.ts +2 -2
@@ -315,6 +315,19 @@ async function validateAttestationNoSignatureCheck(
315
315
  code: AttestationErrorCode.PREMATURELY_INDICATED_PAYLOAD_PRESENT,
316
316
  });
317
317
  }
318
+
319
+ // [REJECT] If `attestation.data.index == 1` (payload present for a past
320
+ // block), the execution payload for `block` passes validation.
321
+ // [IGNORE] When `attestation.data.index == 1` (payload present for a past block),
322
+ // the corresponding execution payload for `block` has been seen (a client MAY queue
323
+ // attestations for processing once the payload is retrieved and SHOULD request the
324
+ // payload envelope via `ExecutionPayloadEnvelopesByRoot`).
325
+ if (block !== null && attData.index === 1 && !chain.seenPayloadEnvelope(toRootHex(attData.beaconBlockRoot))) {
326
+ throw new AttestationError(GossipAction.IGNORE, {
327
+ code: AttestationErrorCode.EXECUTION_PAYLOAD_NOT_SEEN,
328
+ beaconBlockRoot: toRootHex(attData.beaconBlockRoot),
329
+ });
330
+ }
318
331
  } else {
319
332
  // [REJECT] attestation.data.index == 0
320
333
  if (attData.index !== 0) {
@@ -32,7 +32,7 @@ async function validateExecutionPayloadEnvelope(
32
32
  const {payload} = envelope;
33
33
  const blockRootHex = toRootHex(envelope.beaconBlockRoot);
34
34
 
35
- // [IGNORE] The envelope's block root `envelope.block_root` has been seen (via
35
+ // [IGNORE] The envelope's block root `envelope.beacon_block_root` has been seen (via
36
36
  // gossip or non-gossip sources) (a client MAY queue payload for processing once
37
37
  // the block is retrieved).
38
38
  // TODO GLOAS: Need to review this, we should queue the envelope for later
@@ -107,7 +107,7 @@ async function validateExecutionPayloadEnvelope(
107
107
  });
108
108
  }
109
109
 
110
- // Get the post block state which is the pre-payload state to verify the builder's signature.
110
+ // Get the block state to verify the builder's signature.
111
111
  const blockState = await chain.regen
112
112
  .getState(block.stateRoot, RegenCaller.validateGossipPayloadEnvelope)
113
113
  .catch(() => {