@lodestar/beacon-node 1.43.0-dev.7a6a5b0190 → 1.43.0-dev.87cbe69c66

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 (171) hide show
  1. package/lib/api/impl/beacon/blocks/index.d.ts.map +1 -1
  2. package/lib/api/impl/beacon/blocks/index.js +10 -0
  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/validator/index.d.ts.map +1 -1
  11. package/lib/api/impl/validator/index.js +68 -2
  12. package/lib/api/impl/validator/index.js.map +1 -1
  13. package/lib/chain/blocks/importBlock.d.ts.map +1 -1
  14. package/lib/chain/blocks/importBlock.js +23 -22
  15. package/lib/chain/blocks/importBlock.js.map +1 -1
  16. package/lib/chain/blocks/importExecutionPayload.d.ts +5 -3
  17. package/lib/chain/blocks/importExecutionPayload.d.ts.map +1 -1
  18. package/lib/chain/blocks/importExecutionPayload.js +25 -14
  19. package/lib/chain/blocks/importExecutionPayload.js.map +1 -1
  20. package/lib/chain/blocks/index.d.ts.map +1 -1
  21. package/lib/chain/blocks/index.js +36 -21
  22. package/lib/chain/blocks/index.js.map +1 -1
  23. package/lib/chain/blocks/payloadEnvelopeInput/payloadEnvelopeInput.d.ts +1 -0
  24. package/lib/chain/blocks/payloadEnvelopeInput/payloadEnvelopeInput.d.ts.map +1 -1
  25. package/lib/chain/blocks/payloadEnvelopeInput/payloadEnvelopeInput.js +5 -1
  26. package/lib/chain/blocks/payloadEnvelopeInput/payloadEnvelopeInput.js.map +1 -1
  27. package/lib/chain/blocks/payloadEnvelopeInput/types.d.ts +1 -0
  28. package/lib/chain/blocks/payloadEnvelopeInput/types.d.ts.map +1 -1
  29. package/lib/chain/blocks/types.d.ts +2 -1
  30. package/lib/chain/blocks/types.d.ts.map +1 -1
  31. package/lib/chain/blocks/utils/chainSegment.d.ts.map +1 -1
  32. package/lib/chain/blocks/utils/chainSegment.js +8 -0
  33. package/lib/chain/blocks/utils/chainSegment.js.map +1 -1
  34. package/lib/chain/blocks/verifyBlock.d.ts +2 -1
  35. package/lib/chain/blocks/verifyBlock.d.ts.map +1 -1
  36. package/lib/chain/blocks/verifyBlock.js +30 -12
  37. package/lib/chain/blocks/verifyBlock.js.map +1 -1
  38. package/lib/chain/blocks/verifyBlocksExecutionPayloads.d.ts +0 -4
  39. package/lib/chain/blocks/verifyBlocksExecutionPayloads.d.ts.map +1 -1
  40. package/lib/chain/blocks/verifyBlocksExecutionPayloads.js +5 -2
  41. package/lib/chain/blocks/verifyBlocksExecutionPayloads.js.map +1 -1
  42. package/lib/chain/blocks/verifyBlocksSanityChecks.d.ts +2 -1
  43. package/lib/chain/blocks/verifyBlocksSanityChecks.d.ts.map +1 -1
  44. package/lib/chain/blocks/verifyBlocksSanityChecks.js +16 -7
  45. package/lib/chain/blocks/verifyBlocksSanityChecks.js.map +1 -1
  46. package/lib/chain/blocks/verifyExecutionPayloadEnvelope.d.ts +2 -2
  47. package/lib/chain/blocks/verifyExecutionPayloadEnvelope.d.ts.map +1 -1
  48. package/lib/chain/blocks/verifyExecutionPayloadEnvelope.js +5 -2
  49. package/lib/chain/blocks/verifyExecutionPayloadEnvelope.js.map +1 -1
  50. package/lib/chain/blocks/verifyPayloadsDataAvailability.d.ts.map +1 -1
  51. package/lib/chain/blocks/verifyPayloadsDataAvailability.js +8 -3
  52. package/lib/chain/blocks/verifyPayloadsDataAvailability.js.map +1 -1
  53. package/lib/chain/chain.d.ts.map +1 -1
  54. package/lib/chain/chain.js +2 -0
  55. package/lib/chain/chain.js.map +1 -1
  56. package/lib/chain/emitter.d.ts +0 -11
  57. package/lib/chain/emitter.d.ts.map +1 -1
  58. package/lib/chain/emitter.js +0 -4
  59. package/lib/chain/emitter.js.map +1 -1
  60. package/lib/chain/errors/proposerPreferences.d.ts +8 -1
  61. package/lib/chain/errors/proposerPreferences.d.ts.map +1 -1
  62. package/lib/chain/errors/proposerPreferences.js +1 -0
  63. package/lib/chain/errors/proposerPreferences.js.map +1 -1
  64. package/lib/chain/opPools/payloadAttestationPool.d.ts +3 -2
  65. package/lib/chain/opPools/payloadAttestationPool.d.ts.map +1 -1
  66. package/lib/chain/opPools/payloadAttestationPool.js +26 -4
  67. package/lib/chain/opPools/payloadAttestationPool.js.map +1 -1
  68. package/lib/chain/prepareNextSlot.d.ts.map +1 -1
  69. package/lib/chain/prepareNextSlot.js +15 -17
  70. package/lib/chain/prepareNextSlot.js.map +1 -1
  71. package/lib/chain/produceBlock/produceBlockBody.d.ts +12 -3
  72. package/lib/chain/produceBlock/produceBlockBody.d.ts.map +1 -1
  73. package/lib/chain/produceBlock/produceBlockBody.js +34 -22
  74. package/lib/chain/produceBlock/produceBlockBody.js.map +1 -1
  75. package/lib/chain/regen/queued.d.ts.map +1 -1
  76. package/lib/chain/regen/queued.js +1 -4
  77. package/lib/chain/regen/queued.js.map +1 -1
  78. package/lib/chain/regen/regen.d.ts.map +1 -1
  79. package/lib/chain/regen/regen.js +1 -4
  80. package/lib/chain/regen/regen.js.map +1 -1
  81. package/lib/chain/seenCache/seenPayloadEnvelopeInput.d.ts +8 -2
  82. package/lib/chain/seenCache/seenPayloadEnvelopeInput.d.ts.map +1 -1
  83. package/lib/chain/seenCache/seenPayloadEnvelopeInput.js +20 -4
  84. package/lib/chain/seenCache/seenPayloadEnvelopeInput.js.map +1 -1
  85. package/lib/chain/seenCache/seenProposerPreferences.d.ts +8 -7
  86. package/lib/chain/seenCache/seenProposerPreferences.d.ts.map +1 -1
  87. package/lib/chain/seenCache/seenProposerPreferences.js +17 -11
  88. package/lib/chain/seenCache/seenProposerPreferences.js.map +1 -1
  89. package/lib/chain/validation/executionPayloadBid.js +11 -8
  90. package/lib/chain/validation/executionPayloadBid.js.map +1 -1
  91. package/lib/chain/validation/proposerPreferences.d.ts.map +1 -1
  92. package/lib/chain/validation/proposerPreferences.js +39 -17
  93. package/lib/chain/validation/proposerPreferences.js.map +1 -1
  94. package/lib/network/gossip/topic.d.ts +2 -0
  95. package/lib/network/gossip/topic.d.ts.map +1 -1
  96. package/lib/network/interface.d.ts +1 -0
  97. package/lib/network/interface.d.ts.map +1 -1
  98. package/lib/network/network.d.ts +1 -0
  99. package/lib/network/network.d.ts.map +1 -1
  100. package/lib/network/network.js +5 -0
  101. package/lib/network/network.js.map +1 -1
  102. package/lib/network/processor/gossipHandlers.d.ts.map +1 -1
  103. package/lib/network/processor/gossipHandlers.js +14 -10
  104. package/lib/network/processor/gossipHandlers.js.map +1 -1
  105. package/lib/network/processor/index.js +5 -5
  106. package/lib/network/processor/index.js.map +1 -1
  107. package/lib/node/nodejs.js +2 -2
  108. package/lib/node/nodejs.js.map +1 -1
  109. package/lib/node/notifier.js +1 -7
  110. package/lib/node/notifier.js.map +1 -1
  111. package/lib/sync/range/batch.d.ts +11 -0
  112. package/lib/sync/range/batch.d.ts.map +1 -1
  113. package/lib/sync/range/batch.js +29 -4
  114. package/lib/sync/range/batch.js.map +1 -1
  115. package/lib/sync/range/chain.d.ts.map +1 -1
  116. package/lib/sync/range/chain.js +23 -5
  117. package/lib/sync/range/chain.js.map +1 -1
  118. package/lib/sync/unknownBlock.d.ts +0 -2
  119. package/lib/sync/unknownBlock.d.ts.map +1 -1
  120. package/lib/sync/unknownBlock.js +0 -47
  121. package/lib/sync/unknownBlock.js.map +1 -1
  122. package/lib/sync/utils/downloadByRange.d.ts.map +1 -1
  123. package/lib/sync/utils/downloadByRange.js +36 -19
  124. package/lib/sync/utils/downloadByRange.js.map +1 -1
  125. package/lib/sync/utils/downloadByRoot.d.ts.map +1 -1
  126. package/lib/sync/utils/downloadByRoot.js +10 -0
  127. package/lib/sync/utils/downloadByRoot.js.map +1 -1
  128. package/lib/util/sszBytes.d.ts.map +1 -1
  129. package/lib/util/sszBytes.js +8 -6
  130. package/lib/util/sszBytes.js.map +1 -1
  131. package/package.json +15 -15
  132. package/src/api/impl/beacon/blocks/index.ts +13 -0
  133. package/src/api/impl/beacon/pool/index.ts +83 -1
  134. package/src/api/impl/debug/index.ts +0 -1
  135. package/src/api/impl/validator/index.ts +82 -1
  136. package/src/chain/blocks/importBlock.ts +23 -39
  137. package/src/chain/blocks/importExecutionPayload.ts +33 -14
  138. package/src/chain/blocks/index.ts +34 -15
  139. package/src/chain/blocks/payloadEnvelopeInput/payloadEnvelopeInput.ts +6 -1
  140. package/src/chain/blocks/payloadEnvelopeInput/types.ts +1 -0
  141. package/src/chain/blocks/types.ts +2 -1
  142. package/src/chain/blocks/utils/chainSegment.ts +8 -0
  143. package/src/chain/blocks/verifyBlock.ts +45 -13
  144. package/src/chain/blocks/verifyBlocksExecutionPayloads.ts +6 -4
  145. package/src/chain/blocks/verifyBlocksSanityChecks.ts +16 -6
  146. package/src/chain/blocks/verifyExecutionPayloadEnvelope.ts +7 -2
  147. package/src/chain/blocks/verifyPayloadsDataAvailability.ts +7 -4
  148. package/src/chain/chain.ts +2 -0
  149. package/src/chain/emitter.ts +0 -11
  150. package/src/chain/errors/proposerPreferences.ts +9 -1
  151. package/src/chain/opPools/payloadAttestationPool.ts +29 -8
  152. package/src/chain/prepareNextSlot.ts +20 -28
  153. package/src/chain/produceBlock/produceBlockBody.ts +45 -27
  154. package/src/chain/regen/queued.ts +2 -7
  155. package/src/chain/regen/regen.ts +2 -7
  156. package/src/chain/seenCache/seenPayloadEnvelopeInput.ts +25 -5
  157. package/src/chain/seenCache/seenProposerPreferences.ts +20 -12
  158. package/src/chain/validation/executionPayloadBid.ts +11 -8
  159. package/src/chain/validation/proposerPreferences.ts +37 -18
  160. package/src/network/interface.ts +1 -0
  161. package/src/network/network.ts +11 -0
  162. package/src/network/processor/gossipHandlers.ts +20 -11
  163. package/src/network/processor/index.ts +5 -5
  164. package/src/node/nodejs.ts +2 -2
  165. package/src/node/notifier.ts +1 -8
  166. package/src/sync/range/batch.ts +54 -5
  167. package/src/sync/range/chain.ts +25 -5
  168. package/src/sync/unknownBlock.ts +0 -50
  169. package/src/sync/utils/downloadByRange.ts +36 -18
  170. package/src/sync/utils/downloadByRoot.ts +12 -0
  171. package/src/util/sszBytes.ts +8 -6
@@ -434,9 +434,10 @@ export function getBeaconBlockRootFromDataColumnSidecarSerialized(data) {
434
434
  * └─ ExecutionPayloadEnvelope (starts at byte 100):
435
435
  * ├─ 4 bytes: payload offset
436
436
  * ├─ 4 bytes: executionRequests offset
437
- * ├─ 8 bytes: builderIndex (offset 108-115)
438
- * ├─ 32 bytes: beaconBlockRoot (offset 116-147)
439
- * └─ variable: payload data (starts at envelope + 48)
437
+ * ├─ 8 bytes: builderIndex (offset 108-115)
438
+ * ├─ 32 bytes: beaconBlockRoot (offset 116-147)
439
+ * ├─ 32 bytes: parentBeaconBlockRoot (offset 148-179) new in Gloas alpha.6 (consensus-specs#5152)
440
+ * └─ variable: payload data (starts at envelope + 80)
440
441
  * └─ ExecutionPayload fixed portion includes slotNumber at offset 532
441
442
  */
442
443
  const SIGNED_EXECUTION_PAYLOAD_ENVELOPE_MESSAGE_OFFSET = 4;
@@ -449,11 +450,12 @@ const BEACON_BLOCK_ROOT_OFFSET_IN_SIGNED_EXECUTION_PAYLOAD_ENVELOPE = SIGNED_EXE
449
450
  EXECUTION_PAYLOAD_ENVELOPE_PAYLOAD_OFFSET +
450
451
  EXECUTION_PAYLOAD_ENVELOPE_REQUESTS_OFFSET +
451
452
  EXECUTION_PAYLOAD_ENVELOPE_BUILDER_INDEX_SIZE; // 116
452
- // Envelope fixed portion (without slot): payload_offset(4) + requests_offset(4) + builderIndex(8) + beaconBlockRoot(32) = 48
453
+ // Envelope fixed portion: payload_offset(4) + requests_offset(4) + builderIndex(8) + beaconBlockRoot(32) + parentBeaconBlockRoot(32) = 80
453
454
  const EXECUTION_PAYLOAD_ENVELOPE_FIXED_SIZE = EXECUTION_PAYLOAD_ENVELOPE_PAYLOAD_OFFSET +
454
455
  EXECUTION_PAYLOAD_ENVELOPE_REQUESTS_OFFSET +
455
456
  EXECUTION_PAYLOAD_ENVELOPE_BUILDER_INDEX_SIZE +
456
- ROOT_SIZE; // 48
457
+ ROOT_SIZE +
458
+ ROOT_SIZE; // 80
457
459
  // slotNumber offset within ExecutionPayload fixed portion:
458
460
  // parentHash(32) + feeRecipient(20) + stateRoot(32) + receiptsRoot(32) + logsBloom(256) +
459
461
  // prevRandao(32) + blockNumber(8) + gasLimit(8) + gasUsed(8) + timestamp(8) +
@@ -462,7 +464,7 @@ const EXECUTION_PAYLOAD_ENVELOPE_FIXED_SIZE = EXECUTION_PAYLOAD_ENVELOPE_PAYLOAD
462
464
  const SLOT_NUMBER_OFFSET_IN_EXECUTION_PAYLOAD = 532;
463
465
  // Payload data starts right after the envelope's fixed portion
464
466
  const ENVELOPE_START_IN_SIGNED = SIGNED_EXECUTION_PAYLOAD_ENVELOPE_MESSAGE_OFFSET + SIGNED_EXECUTION_PAYLOAD_ENVELOPE_SIGNATURE_SIZE; // 100
465
- const SLOT_OFFSET_IN_SIGNED_EXECUTION_PAYLOAD_ENVELOPE = ENVELOPE_START_IN_SIGNED + EXECUTION_PAYLOAD_ENVELOPE_FIXED_SIZE + SLOT_NUMBER_OFFSET_IN_EXECUTION_PAYLOAD; // 100 + 48 + 532 = 680
467
+ const SLOT_OFFSET_IN_SIGNED_EXECUTION_PAYLOAD_ENVELOPE = ENVELOPE_START_IN_SIGNED + EXECUTION_PAYLOAD_ENVELOPE_FIXED_SIZE + SLOT_NUMBER_OFFSET_IN_EXECUTION_PAYLOAD; // 100 + 80 + 532 = 712
466
468
  export function getSlotFromExecutionPayloadEnvelopeSerialized(data) {
467
469
  if (data.length < SLOT_OFFSET_IN_SIGNED_EXECUTION_PAYLOAD_ENVELOPE + SLOT_SIZE) {
468
470
  return null;
@@ -1 +1 @@
1
- {"version":3,"file":"sszBytes.js","sourceRoot":"","sources":["../../src/util/sszBytes.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sszBytes.js","sourceRoot":"","sources":["../../src/util/sszBytes.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -11,7 +11,7 @@
11
11
  "bugs": {
12
12
  "url": "https://github.com/ChainSafe/lodestar/issues"
13
13
  },
14
- "version": "1.43.0-dev.7a6a5b0190",
14
+ "version": "1.43.0-dev.87cbe69c66",
15
15
  "type": "module",
16
16
  "exports": {
17
17
  ".": {
@@ -135,18 +135,18 @@
135
135
  "@libp2p/peer-id": "^6.0.4",
136
136
  "@libp2p/prometheus-metrics": "^5.0.14",
137
137
  "@libp2p/tcp": "^11.0.13",
138
- "@lodestar/api": "^1.43.0-dev.7a6a5b0190",
139
- "@lodestar/config": "^1.43.0-dev.7a6a5b0190",
140
- "@lodestar/db": "^1.43.0-dev.7a6a5b0190",
141
- "@lodestar/fork-choice": "^1.43.0-dev.7a6a5b0190",
142
- "@lodestar/light-client": "^1.43.0-dev.7a6a5b0190",
143
- "@lodestar/logger": "^1.43.0-dev.7a6a5b0190",
144
- "@lodestar/params": "^1.43.0-dev.7a6a5b0190",
145
- "@lodestar/reqresp": "^1.43.0-dev.7a6a5b0190",
146
- "@lodestar/state-transition": "^1.43.0-dev.7a6a5b0190",
147
- "@lodestar/types": "^1.43.0-dev.7a6a5b0190",
148
- "@lodestar/utils": "^1.43.0-dev.7a6a5b0190",
149
- "@lodestar/validator": "^1.43.0-dev.7a6a5b0190",
138
+ "@lodestar/api": "^1.43.0-dev.87cbe69c66",
139
+ "@lodestar/config": "^1.43.0-dev.87cbe69c66",
140
+ "@lodestar/db": "^1.43.0-dev.87cbe69c66",
141
+ "@lodestar/fork-choice": "^1.43.0-dev.87cbe69c66",
142
+ "@lodestar/light-client": "^1.43.0-dev.87cbe69c66",
143
+ "@lodestar/logger": "^1.43.0-dev.87cbe69c66",
144
+ "@lodestar/params": "^1.43.0-dev.87cbe69c66",
145
+ "@lodestar/reqresp": "^1.43.0-dev.87cbe69c66",
146
+ "@lodestar/state-transition": "^1.43.0-dev.87cbe69c66",
147
+ "@lodestar/types": "^1.43.0-dev.87cbe69c66",
148
+ "@lodestar/utils": "^1.43.0-dev.87cbe69c66",
149
+ "@lodestar/validator": "^1.43.0-dev.87cbe69c66",
150
150
  "@multiformats/multiaddr": "^13.0.1",
151
151
  "datastore-core": "^11.0.2",
152
152
  "datastore-fs": "^11.0.2",
@@ -169,7 +169,7 @@
169
169
  "@libp2p/interface-internal": "^3.0.13",
170
170
  "@libp2p/logger": "^6.2.2",
171
171
  "@libp2p/utils": "^7.0.13",
172
- "@lodestar/spec-test-util": "^1.43.0-dev.7a6a5b0190",
172
+ "@lodestar/spec-test-util": "^1.43.0-dev.87cbe69c66",
173
173
  "@types/js-yaml": "^4.0.5",
174
174
  "@types/qs": "^6.9.7",
175
175
  "@types/tmp": "^0.2.3",
@@ -187,5 +187,5 @@
187
187
  "beacon",
188
188
  "blockchain"
189
189
  ],
190
- "gitHead": "3f74f610df50319d1df421a38c5f8d5db00daab7"
190
+ "gitHead": "0644cbf9a6bf649f65fa68581f545f12a3f96763"
191
191
  }
@@ -5,6 +5,7 @@ import {
5
5
  BUILDER_INDEX_SELF_BUILD,
6
6
  ForkPostBellatrix,
7
7
  ForkPostFulu,
8
+ ForkPostGloas,
8
9
  ForkPreGloas,
9
10
  NUMBER_OF_COLUMNS,
10
11
  SLOTS_PER_HISTORICAL_ROOT,
@@ -109,6 +110,18 @@ export function getBeaconBlockApi({
109
110
  seenTimestampSec,
110
111
  blockRootHex: blockRoot,
111
112
  });
113
+
114
+ if (isForkPostGloas(fork)) {
115
+ chain.seenPayloadEnvelopeInputCache.add({
116
+ blockRootHex: blockRoot,
117
+ block: signedBlock as SignedBeaconBlock<ForkPostGloas>,
118
+ forkName: fork,
119
+ sampledColumns: chain.custodyConfig.sampledColumns,
120
+ custodyColumns: chain.custodyConfig.custodyColumns,
121
+ timeCreatedSec: seenTimestampSec,
122
+ });
123
+ }
124
+
112
125
  let blobSidecars: deneb.BlobSidecars, dataColumnSidecars: fulu.DataColumnSidecar[];
113
126
 
114
127
  if (isDenebBlockContents(signedBlockContents)) {
@@ -1,17 +1,27 @@
1
1
  import {routes} from "@lodestar/api";
2
2
  import {ApplicationMethods} from "@lodestar/api/server";
3
- import {ForkPostElectra, ForkPreElectra, SYNC_COMMITTEE_SUBNET_SIZE, isForkPostElectra} from "@lodestar/params";
3
+ import {
4
+ ForkPostElectra,
5
+ ForkPreElectra,
6
+ SYNC_COMMITTEE_SUBNET_SIZE,
7
+ isForkPostElectra,
8
+ isForkPostGloas,
9
+ } from "@lodestar/params";
4
10
  import {isStatePostAltair} from "@lodestar/state-transition";
5
11
  import {Attestation, Epoch, SingleAttestation, isElectraAttestation, ssz, sszTypesFor} from "@lodestar/types";
12
+ import {toRootHex} from "@lodestar/utils";
6
13
  import {
7
14
  AttestationError,
8
15
  AttestationErrorCode,
9
16
  GossipAction,
17
+ PayloadAttestationError,
18
+ PayloadAttestationErrorCode,
10
19
  SyncCommitteeError,
11
20
  } from "../../../../chain/errors/index.js";
12
21
  import {validateApiAttesterSlashing} from "../../../../chain/validation/attesterSlashing.js";
13
22
  import {validateApiBlsToExecutionChange} from "../../../../chain/validation/blsToExecutionChange.js";
14
23
  import {toElectraSingleAttestation, validateApiAttestation} from "../../../../chain/validation/index.js";
24
+ import {validateApiPayloadAttestationMessage} from "../../../../chain/validation/payloadAttestationMessage.js";
15
25
  import {validateApiProposerSlashing} from "../../../../chain/validation/proposerSlashing.js";
16
26
  import {validateApiSyncCommittee} from "../../../../chain/validation/syncCommittee.js";
17
27
  import {validateApiVoluntaryExit} from "../../../../chain/validation/voluntaryExit.js";
@@ -62,6 +72,15 @@ export function getBeaconPoolApi({
62
72
  return {data: attestations, meta: {version: fork}};
63
73
  },
64
74
 
75
+ async getPoolPayloadAttestations({slot}) {
76
+ const fork = chain.config.getForkName(slot ?? chain.clock.currentSlot);
77
+ if (!isForkPostGloas(fork)) {
78
+ throw new ApiError(400, `Payload attestation pool is not supported before Gloas fork=${fork}`);
79
+ }
80
+
81
+ return {data: chain.payloadAttestationPool.getAll(slot), meta: {version: fork}};
82
+ },
83
+
65
84
  async getPoolAttesterSlashings() {
66
85
  const fork = chain.config.getForkName(chain.clock.currentSlot);
67
86
 
@@ -231,6 +250,69 @@ export function getBeaconPoolApi({
231
250
  }
232
251
  },
233
252
 
253
+ async submitPayloadAttestationMessages({payloadAttestationMessages}) {
254
+ const failures: FailureList = [];
255
+
256
+ await Promise.all(
257
+ payloadAttestationMessages.map(async (payloadAttestationMessage, i) => {
258
+ try {
259
+ const validateFn = () => validateApiPayloadAttestationMessage(chain, payloadAttestationMessage);
260
+ const {slot, beaconBlockRoot} = payloadAttestationMessage.data;
261
+ const {attDataRootHex, validatorCommitteeIndex} = await validateGossipFnRetryUnknownRoot(
262
+ validateFn,
263
+ network,
264
+ chain,
265
+ slot,
266
+ beaconBlockRoot
267
+ );
268
+
269
+ const insertOutcome = chain.payloadAttestationPool.add(
270
+ payloadAttestationMessage,
271
+ attDataRootHex,
272
+ validatorCommitteeIndex
273
+ );
274
+ metrics?.opPool.payloadAttestationPool.apiInsertOutcome.inc({insertOutcome});
275
+
276
+ chain.forkChoice.notifyPtcMessages(
277
+ toRootHex(payloadAttestationMessage.data.beaconBlockRoot),
278
+ [validatorCommitteeIndex],
279
+ payloadAttestationMessage.data.payloadPresent
280
+ );
281
+
282
+ await network.publishPayloadAttestationMessage(payloadAttestationMessage);
283
+ } catch (e) {
284
+ const logCtx = {
285
+ slot: payloadAttestationMessage.data.slot,
286
+ validatorIndex: payloadAttestationMessage.validatorIndex,
287
+ beaconBlockRoot: toRootHex(payloadAttestationMessage.data.beaconBlockRoot),
288
+ };
289
+
290
+ if (
291
+ e instanceof PayloadAttestationError &&
292
+ e.type.code === PayloadAttestationErrorCode.PAYLOAD_ATTESTATION_ALREADY_KNOWN
293
+ ) {
294
+ logger.debug("Ignoring known payload attestation message", logCtx);
295
+ return;
296
+ }
297
+
298
+ failures.push({index: i, message: (e as Error).message});
299
+ logger.verbose(`Error on submitPayloadAttestationMessages [${i}]`, logCtx, e as Error);
300
+ if (e instanceof PayloadAttestationError && e.action === GossipAction.REJECT) {
301
+ chain.persistInvalidSszValue(
302
+ ssz.gloas.PayloadAttestationMessage,
303
+ payloadAttestationMessage,
304
+ "api_reject"
305
+ );
306
+ }
307
+ }
308
+ })
309
+ );
310
+
311
+ if (failures.length > 0) {
312
+ throw new IndexedError("Error processing payload attestation messages", failures);
313
+ }
314
+ },
315
+
234
316
  /**
235
317
  * POST `/eth/v1/beacon/pool/sync_committees`
236
318
  *
@@ -43,7 +43,6 @@ export function getDebugApi({
43
43
  validity: (() => {
44
44
  switch (node.executionStatus) {
45
45
  case ExecutionStatus.Valid:
46
- case ExecutionStatus.PayloadSeparated:
47
46
  return "valid";
48
47
  case ExecutionStatus.Invalid:
49
48
  return "invalid";
@@ -26,6 +26,7 @@ import {
26
26
  computeTimeAtSlot,
27
27
  getCurrentSlot,
28
28
  isStatePostAltair,
29
+ isStatePostGloas,
29
30
  proposerShufflingDecisionRoot,
30
31
  } from "@lodestar/state-transition";
31
32
  import {
@@ -1049,6 +1050,36 @@ export function getValidatorApi(
1049
1050
  };
1050
1051
  },
1051
1052
 
1053
+ async producePayloadAttestationData({slot}) {
1054
+ const fork = config.getForkName(slot);
1055
+ if (!isForkPostGloas(fork)) {
1056
+ throw new ApiError(400, `producePayloadAttestationData is not supported before Gloas fork=${fork}`);
1057
+ }
1058
+
1059
+ notWhileSyncing();
1060
+ await waitForSlot(slot);
1061
+
1062
+ const block = chain.forkChoice.getCanonicalBlockClosestLteSlot(slot);
1063
+ if (!block) {
1064
+ throw new ApiError(404, `No canonical block found at or before slot=${slot}`);
1065
+ }
1066
+
1067
+ const blockIsForSlot = block.slot === slot;
1068
+ const payloadInput = chain.seenPayloadEnvelopeInputCache.get(block.blockRoot);
1069
+ const payloadPresent = blockIsForSlot && (payloadInput?.hasPayloadEnvelope() ?? false);
1070
+ const blobDataAvailable = blockIsForSlot && (payloadInput?.hasAllData() ?? false);
1071
+
1072
+ return {
1073
+ data: {
1074
+ beaconBlockRoot: fromHex(block.blockRoot),
1075
+ slot,
1076
+ payloadPresent,
1077
+ blobDataAvailable,
1078
+ },
1079
+ meta: {version: fork},
1080
+ };
1081
+ },
1082
+
1052
1083
  /**
1053
1084
  * GET `/eth/v1/validator/sync_committee_contribution`
1054
1085
  *
@@ -1263,6 +1294,55 @@ export function getValidatorApi(
1263
1294
  };
1264
1295
  },
1265
1296
 
1297
+ async getPtcDuties({epoch, indices}) {
1298
+ notWhileSyncing();
1299
+
1300
+ if (indices.length === 0) {
1301
+ throw new ApiError(400, "No validator to get PTC duties");
1302
+ }
1303
+
1304
+ const startSlot = computeStartSlotAtEpoch(epoch);
1305
+ const fork = config.getForkName(startSlot);
1306
+ if (!isForkPostGloas(fork)) {
1307
+ throw new ApiError(400, `PTC duties are not supported before Gloas fork=${fork}`);
1308
+ }
1309
+
1310
+ await waitForNextClosestEpoch();
1311
+
1312
+ if (epoch > chain.clock.currentEpoch + 1) {
1313
+ throw new ApiError(400, "Cannot get PTC duties for epoch more than one ahead");
1314
+ }
1315
+
1316
+ const head = chain.forkChoice.getHead();
1317
+ const state = await chain.getHeadStateAtCurrentEpoch(RegenCaller.getDuties);
1318
+ if (!isStatePostGloas(state)) {
1319
+ throw new ApiError(400, `PTC duties are not available before Gloas fork=${state.forkName}`);
1320
+ }
1321
+
1322
+ const pubkeys = getPubkeysForIndices(state, indices);
1323
+ const ptcs = state.getEpochPTCs(epoch);
1324
+ const duties: routes.validator.PtcDuty[] = [];
1325
+ for (let i = 0, len = indices.length; i < len; i++) {
1326
+ const validatorIndex = indices[i];
1327
+ for (let j = 0; j < SLOTS_PER_EPOCH; j++) {
1328
+ if (ptcs[j].indexOf(validatorIndex) !== -1) {
1329
+ duties.push({pubkey: pubkeys[i], validatorIndex, slot: j + startSlot});
1330
+ break;
1331
+ }
1332
+ }
1333
+ }
1334
+
1335
+ const dependentRoot = fromHex(state.getShufflingDecisionRoot(epoch)) || (await getGenesisBlockRoot(state));
1336
+
1337
+ return {
1338
+ data: duties,
1339
+ meta: {
1340
+ dependentRoot: toRootHex(dependentRoot),
1341
+ executionOptimistic: isOptimisticBlock(head),
1342
+ },
1343
+ };
1344
+ },
1345
+
1266
1346
  /**
1267
1347
  * `POST /eth/v1/validator/duties/sync/{epoch}`
1268
1348
  *
@@ -1641,13 +1721,14 @@ export function getValidatorApi(
1641
1721
  throw Error("Cached block production result is not full block");
1642
1722
  }
1643
1723
 
1644
- const {executionPayload, executionRequests} = produceResult as ProduceFullGloas;
1724
+ const {executionPayload, executionRequests, parentBlockRoot} = produceResult as ProduceFullGloas;
1645
1725
 
1646
1726
  const envelope: gloas.ExecutionPayloadEnvelope = {
1647
1727
  payload: executionPayload,
1648
1728
  executionRequests: executionRequests,
1649
1729
  builderIndex: BUILDER_INDEX_SELF_BUILD,
1650
1730
  beaconBlockRoot,
1731
+ parentBeaconBlockRoot: parentBlockRoot,
1651
1732
  };
1652
1733
 
1653
1734
  logger.info("Produced execution payload envelope", {
@@ -9,14 +9,7 @@ import {
9
9
  NotReorgedReason,
10
10
  getSafeExecutionBlockHash,
11
11
  } from "@lodestar/fork-choice";
12
- import {
13
- ForkPostAltair,
14
- ForkPostElectra,
15
- ForkPostGloas,
16
- ForkSeq,
17
- MAX_SEED_LOOKAHEAD,
18
- SLOTS_PER_EPOCH,
19
- } from "@lodestar/params";
12
+ import {ForkPostAltair, ForkPostElectra, ForkSeq, MAX_SEED_LOOKAHEAD, SLOTS_PER_EPOCH} from "@lodestar/params";
20
13
  import {
21
14
  IBeaconStateView,
22
15
  RootCache,
@@ -27,17 +20,7 @@ import {
27
20
  isStatePostAltair,
28
21
  isStatePostBellatrix,
29
22
  } from "@lodestar/state-transition";
30
- import {
31
- Attestation,
32
- BeaconBlock,
33
- SignedBeaconBlock,
34
- altair,
35
- capella,
36
- electra,
37
- isGloasBeaconBlock,
38
- phase0,
39
- ssz,
40
- } from "@lodestar/types";
23
+ import {Attestation, BeaconBlock, altair, capella, electra, isGloasBeaconBlock, phase0, ssz} from "@lodestar/types";
41
24
  import {isErrorAborted, toRootHex} from "@lodestar/utils";
42
25
  import {ZERO_HASH_HEX} from "../../constants/index.js";
43
26
  import {callInNextEventLoop} from "../../util/eventLoop.js";
@@ -86,8 +69,8 @@ export async function importBlock(
86
69
  fullyVerifiedBlock: FullyVerifiedBlock,
87
70
  opts: ImportBlockOpts
88
71
  ): Promise<void> {
89
- const {blockInput, postState, parentBlockSlot, executionStatus, dataAvailabilityStatus, indexedAttestations} =
90
- fullyVerifiedBlock;
72
+ const {blockInput, postState, parentBlockSlot, dataAvailabilityStatus, indexedAttestations} = fullyVerifiedBlock;
73
+ let {executionStatus} = fullyVerifiedBlock;
91
74
  const block = blockInput.getBlock();
92
75
  const source = blockInput.getBlockSource();
93
76
  const {slot: blockSlot} = block.message;
@@ -122,13 +105,23 @@ export async function importBlock(
122
105
 
123
106
  // Should compute checkpoint balances before forkchoice.onBlock
124
107
  this.checkpointBalancesCache.processState(blockRootHex, postState);
108
+ if (fork >= ForkSeq.gloas) {
109
+ const parentRootHex = toRootHex(block.message.parentRoot);
110
+ const parentBlock = this.forkChoice.getBlockHexDefaultStatus(parentRootHex);
111
+ if (parentBlock === null) {
112
+ throw Error(`Parent block not found in forkChoice, parentRoot=${parentRootHex}`);
113
+ }
114
+ if (parentBlock.executionStatus === ExecutionStatus.Invalid) {
115
+ throw Error(`Parent block has invalid execution status, parentRoot=${parentRootHex}`);
116
+ }
117
+ executionStatus = parentBlock.executionStatus;
118
+ }
125
119
  const blockSummary = this.forkChoice.onBlock(
126
120
  block.message,
127
121
  postState,
128
122
  blockDelaySec,
129
123
  currentSlot,
130
- fork >= ForkSeq.gloas ? ExecutionStatus.PayloadSeparated : executionStatus,
131
- // TODO GLOAS: this is not useful post-gloas, may need to remove it?
124
+ executionStatus,
132
125
  dataAvailabilityStatus
133
126
  );
134
127
 
@@ -136,23 +129,14 @@ export async function importBlock(
136
129
  // Some block event handlers require state being in state cache so need to do this before emitting EventType.block
137
130
  this.regen.processState(blockRootHex, postState);
138
131
 
139
- // For range sync, PayloadEnvelope is created before reaching this
140
- // we also don't need to trigger getBlobs() in that case
132
+ // For range sync we skip triggerGetBlobs because column fetching is handled in the range path.
141
133
  if (fork >= ForkSeq.gloas && !opts.fromRangeSync) {
142
- const payloadInput = this.seenPayloadEnvelopeInputCache.add({
143
- blockRootHex,
144
- block: block as SignedBeaconBlock<ForkPostGloas>,
145
- forkName: blockInput.forkName,
146
- sampledColumns: this.custodyConfig.sampledColumns,
147
- custodyColumns: this.custodyConfig.custodyColumns,
148
- timeCreatedSec: fullyVerifiedBlock.seenTimestampSec,
149
- });
150
- this.logger.debug("Created PayloadEnvelopeInput for block", {
151
- slot: blockSlot,
152
- root: blockRootHex,
153
- source: source.source,
154
- ...(opts.seenTimestampSec !== undefined ? {recvToImport: Date.now() / 1000 - opts.seenTimestampSec} : {}),
155
- });
134
+ const payloadInput = this.seenPayloadEnvelopeInputCache.get(blockRootHex);
135
+ // PayloadEnvelopeInput is supposed to have right after we have block
136
+ // there are 4 sources of them: gossip, by root, by range and api
137
+ if (!payloadInput) {
138
+ throw Error(`PayloadEnvelopeInput not seeded for block ${blockRootHex} before importBlock`);
139
+ }
156
140
 
157
141
  // Immediately attempt fetch of data columns from execution engine as the bid contains kzg commitments
158
142
  // which is all the information we need so there is no reason to delay until execution payload arrives
@@ -1,7 +1,8 @@
1
1
  import {routes} from "@lodestar/api";
2
- import {ExecutionStatus, PayloadExecutionStatus} from "@lodestar/fork-choice";
3
- import {isStatePostGloas} from "@lodestar/state-transition";
4
- import {fromHex} from "@lodestar/utils";
2
+ import {ExecutionStatus, PayloadExecutionStatus, getSafeExecutionBlockHash} from "@lodestar/fork-choice";
3
+ import {DataAvailabilityStatus, isStatePostGloas} from "@lodestar/state-transition";
4
+ import {isErrorAborted} from "@lodestar/utils";
5
+ import {ZERO_HASH_HEX} from "../../constants/index.js";
5
6
  import {ExecutionPayloadStatus} from "../../execution/index.js";
6
7
  import {isQueueErrorAborted} from "../../util/queue/index.js";
7
8
  import {BeaconChain} from "../chain.js";
@@ -60,7 +61,6 @@ function toForkChoiceExecutionStatus(status: ExecutionPayloadStatus): PayloadExe
60
61
  switch (status) {
61
62
  case ExecutionPayloadStatus.VALID:
62
63
  return ExecutionStatus.Valid;
63
- // TODO GLOAS: Handle optimistic import for payload
64
64
  case ExecutionPayloadStatus.SYNCING:
65
65
  case ExecutionPayloadStatus.ACCEPTED:
66
66
  return ExecutionStatus.Syncing;
@@ -85,12 +85,14 @@ function toForkChoiceExecutionStatus(status: ExecutionPayloadStatus): PayloadExe
85
85
  * 4. Verify envelope (fields against state, signature, and EL in parallel where possible)
86
86
  * 5. Persist verified payload envelope to hot DB (waits for write-queue space for backpressure)
87
87
  * 6. Update fork choice (transitions the block's PENDING variant to FULL)
88
- * 7. Record metrics for payload envelope and column sources
89
- * 8. Emit `execution_payload` event
88
+ * 7. Queue notifyForkchoiceUpdate to engine api
89
+ * 8. Record metrics for payload envelope and column sources
90
+ * 9. Emit `execution_payload` event
90
91
  */
91
92
  export async function importExecutionPayload(
92
93
  this: BeaconChain,
93
94
  payloadInput: PayloadEnvelopeInput,
95
+ dataAvailabilityStatus: DataAvailabilityStatus,
94
96
  opts: ImportPayloadOpts = {}
95
97
  ): Promise<void> {
96
98
  const signedEnvelope = payloadInput.getPayloadEnvelope();
@@ -157,7 +159,7 @@ export async function importExecutionPayload(
157
159
  fork,
158
160
  envelope.payload,
159
161
  payloadInput.getVersionedHashes(),
160
- fromHex(protoBlock.parentRoot),
162
+ envelope.parentBeaconBlockRoot,
161
163
  envelope.executionRequests
162
164
  ),
163
165
 
@@ -219,23 +221,40 @@ export async function importExecutionPayload(
219
221
 
220
222
  // 6. Update fork choice, transitions the block's PENDING variant to FULL
221
223
  const execStatus = toForkChoiceExecutionStatus(execResult.status);
222
- this.forkChoice.onExecutionPayload(blockRootHex, blockHashHex, envelope.payload.blockNumber, execStatus);
224
+ this.forkChoice.onExecutionPayload(
225
+ blockRootHex,
226
+ blockHashHex,
227
+ envelope.payload.blockNumber,
228
+ execStatus,
229
+ dataAvailabilityStatus
230
+ );
231
+
232
+ // 7. Queue notifyForkchoiceUpdate to engine api
233
+ const head = this.forkChoice.getHead();
234
+ if (!this.opts.disableImportExecutionFcU && blockRootHex === head.blockRoot) {
235
+ const safeBlockHash = getSafeExecutionBlockHash(this.forkChoice);
236
+ const finalizedBlockHash = this.forkChoice.getFinalizedBlock().executionPayloadBlockHash ?? ZERO_HASH_HEX;
237
+ this.executionEngine.notifyForkchoiceUpdate(fork, blockHashHex, safeBlockHash, finalizedBlockHash).catch((e) => {
238
+ if (!isErrorAborted(e) && !isQueueErrorAborted(e)) {
239
+ this.logger.error("Error pushing notifyForkchoiceUpdate()", {blockHashHex, finalizedBlockHash}, e);
240
+ }
241
+ });
242
+ }
223
243
 
224
- // 7. Record metrics for payload envelope and column sources
244
+ // 8. Record metrics for payload envelope and column sources
225
245
  this.metrics?.importPayload.bySource.inc({source: payloadInput.getPayloadEnvelopeSource().source});
226
246
  for (const {source} of payloadInput.getSampledColumnsWithSource()) {
227
247
  this.metrics?.importPayload.columnsBySource.inc({source});
228
248
  }
229
249
 
230
- // 8. Emit event after payload is fully verified and imported to fork choice, only for recent enough payloads
250
+ // 9. Emit event after payload is fully verified and imported to fork choice, only for recent enough payloads
231
251
  if (this.clock.currentSlot - slot < EVENTSTREAM_EMIT_RECENT_EXECUTION_PAYLOAD_SLOTS) {
232
252
  this.emitter.emit(routes.events.EventType.executionPayload, {
233
253
  slot,
234
254
  builderIndex: envelope.builderIndex,
235
255
  blockHash: blockHashHex,
236
256
  blockRoot: blockRootHex,
237
- // TODO GLOAS: revisit once we support optimistic import
238
- executionOptimistic: false,
257
+ executionOptimistic: execStatus === ExecutionStatus.Syncing,
239
258
  });
240
259
  }
241
260
 
@@ -261,6 +280,6 @@ export async function processExecutionPayload(
261
280
  signal: AbortSignal,
262
281
  opts: ImportPayloadOpts = {}
263
282
  ): Promise<void> {
264
- await verifyPayloadsDataAvailability([payloadInput], signal);
265
- await importExecutionPayload.call(this, payloadInput, opts);
283
+ const {dataAvailabilityStatuses} = await verifyPayloadsDataAvailability([payloadInput], signal);
284
+ await importExecutionPayload.call(this, payloadInput, dataAvailabilityStatuses[0], opts);
266
285
  }