@lodestar/beacon-node 1.32.0-peerDAS.c530895658 → 1.32.0-peerDAS.d30e8dea19

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 (180) hide show
  1. package/lib/api/impl/beacon/blocks/index.js +34 -4
  2. package/lib/api/impl/beacon/blocks/index.js.map +1 -1
  3. package/lib/api/impl/beacon/state/index.js +13 -1
  4. package/lib/api/impl/beacon/state/index.js.map +1 -1
  5. package/lib/api/impl/debug/index.d.ts +1 -1
  6. package/lib/api/impl/debug/index.js +24 -1
  7. package/lib/api/impl/debug/index.js.map +1 -1
  8. package/lib/api/impl/validator/index.js +43 -29
  9. package/lib/api/impl/validator/index.js.map +1 -1
  10. package/lib/chain/archiveStore/archiveStore.js +1 -1
  11. package/lib/chain/archiveStore/archiveStore.js.map +1 -1
  12. package/lib/chain/archiveStore/historicalState/metrics.js +8 -0
  13. package/lib/chain/archiveStore/historicalState/metrics.js.map +1 -1
  14. package/lib/chain/archiveStore/utils/archiveBlocks.d.ts +1 -1
  15. package/lib/chain/archiveStore/utils/archiveBlocks.js +29 -1
  16. package/lib/chain/archiveStore/utils/archiveBlocks.js.map +1 -1
  17. package/lib/chain/blocks/importBlock.js +1 -52
  18. package/lib/chain/blocks/importBlock.js.map +1 -1
  19. package/lib/chain/blocks/types.d.ts +1 -0
  20. package/lib/chain/blocks/types.js.map +1 -1
  21. package/lib/chain/blocks/verifyBlocksDataAvailability.js +3 -3
  22. package/lib/chain/blocks/verifyBlocksDataAvailability.js.map +1 -1
  23. package/lib/chain/chain.d.ts +9 -6
  24. package/lib/chain/chain.js +37 -10
  25. package/lib/chain/chain.js.map +1 -1
  26. package/lib/chain/emitter.d.ts +6 -1
  27. package/lib/chain/emitter.js +4 -0
  28. package/lib/chain/emitter.js.map +1 -1
  29. package/lib/chain/interface.d.ts +4 -4
  30. package/lib/chain/interface.js.map +1 -1
  31. package/lib/chain/options.d.ts +2 -2
  32. package/lib/chain/produceBlock/produceBlockBody.d.ts +1 -1
  33. package/lib/chain/produceBlock/produceBlockBody.js +146 -117
  34. package/lib/chain/produceBlock/produceBlockBody.js.map +1 -1
  35. package/lib/chain/produceBlock/validateBlobsAndKzgCommitments.d.ts +1 -1
  36. package/lib/chain/produceBlock/validateBlobsAndKzgCommitments.js +6 -12
  37. package/lib/chain/produceBlock/validateBlobsAndKzgCommitments.js.map +1 -1
  38. package/lib/chain/seenCache/seenGossipBlockInput.d.ts +4 -1
  39. package/lib/chain/seenCache/seenGossipBlockInput.js +76 -10
  40. package/lib/chain/seenCache/seenGossipBlockInput.js.map +1 -1
  41. package/lib/chain/validation/blobSidecar.d.ts +1 -1
  42. package/lib/chain/validation/blobSidecar.js +6 -6
  43. package/lib/chain/validation/blobSidecar.js.map +1 -1
  44. package/lib/chain/validation/dataColumnSidecar.d.ts +3 -3
  45. package/lib/chain/validation/dataColumnSidecar.js +12 -9
  46. package/lib/chain/validation/dataColumnSidecar.js.map +1 -1
  47. package/lib/execution/engine/mock.js +3 -3
  48. package/lib/execution/engine/mock.js.map +1 -1
  49. package/lib/metrics/metrics/beacon.d.ts +7 -0
  50. package/lib/metrics/metrics/beacon.js +34 -1
  51. package/lib/metrics/metrics/beacon.js.map +1 -1
  52. package/lib/metrics/metrics/lodestar.d.ts +9 -0
  53. package/lib/metrics/metrics/lodestar.js +22 -0
  54. package/lib/metrics/metrics/lodestar.js.map +1 -1
  55. package/lib/network/core/networkCore.d.ts +7 -7
  56. package/lib/network/core/networkCore.js +47 -45
  57. package/lib/network/core/networkCore.js.map +1 -1
  58. package/lib/network/core/networkCoreWorkerHandler.d.ts +3 -3
  59. package/lib/network/core/networkCoreWorkerHandler.js.map +1 -1
  60. package/lib/network/core/types.d.ts +8 -4
  61. package/lib/network/discv5/index.d.ts +1 -0
  62. package/lib/network/discv5/index.js +1 -0
  63. package/lib/network/discv5/index.js.map +1 -1
  64. package/lib/network/discv5/types.d.ts +1 -0
  65. package/lib/network/discv5/utils.d.ts +3 -1
  66. package/lib/network/discv5/utils.js +12 -2
  67. package/lib/network/discv5/utils.js.map +1 -1
  68. package/lib/network/discv5/worker.js +5 -1
  69. package/lib/network/discv5/worker.js.map +1 -1
  70. package/lib/network/events.d.ts +2 -2
  71. package/lib/network/forks.d.ts +2 -0
  72. package/lib/network/forks.js +4 -0
  73. package/lib/network/forks.js.map +1 -1
  74. package/lib/network/gossip/encoding.js +1 -1
  75. package/lib/network/gossip/encoding.js.map +1 -1
  76. package/lib/network/gossip/gossipsub.js +6 -4
  77. package/lib/network/gossip/gossipsub.js.map +1 -1
  78. package/lib/network/gossip/interface.d.ts +3 -3
  79. package/lib/network/gossip/scoringParameters.js +10 -10
  80. package/lib/network/gossip/scoringParameters.js.map +1 -1
  81. package/lib/network/gossip/topic.js +14 -13
  82. package/lib/network/gossip/topic.js.map +1 -1
  83. package/lib/network/interface.d.ts +2 -2
  84. package/lib/network/network.d.ts +4 -4
  85. package/lib/network/network.js +69 -54
  86. package/lib/network/network.js.map +1 -1
  87. package/lib/network/networkConfig.js +1 -1
  88. package/lib/network/networkConfig.js.map +1 -1
  89. package/lib/network/peers/discover.js +1 -0
  90. package/lib/network/peers/discover.js.map +1 -1
  91. package/lib/network/peers/peerManager.d.ts +2 -2
  92. package/lib/network/peers/peerManager.js +4 -1
  93. package/lib/network/peers/peerManager.js.map +1 -1
  94. package/lib/network/peers/peersData.d.ts +9 -2
  95. package/lib/network/peers/peersData.js.map +1 -1
  96. package/lib/network/peers/utils/assertPeerRelevance.d.ts +7 -3
  97. package/lib/network/peers/utils/assertPeerRelevance.js +10 -1
  98. package/lib/network/peers/utils/assertPeerRelevance.js.map +1 -1
  99. package/lib/network/peers/utils/prioritizePeers.d.ts +3 -3
  100. package/lib/network/peers/utils/prioritizePeers.js.map +1 -1
  101. package/lib/network/processor/gossipHandlers.js +41 -30
  102. package/lib/network/processor/gossipHandlers.js.map +1 -1
  103. package/lib/network/processor/gossipQueues/index.js +1 -1
  104. package/lib/network/processor/gossipQueues/index.js.map +1 -1
  105. package/lib/network/processor/index.js +2 -2
  106. package/lib/network/processor/index.js.map +1 -1
  107. package/lib/network/reqresp/ReqRespBeaconNode.d.ts +5 -5
  108. package/lib/network/reqresp/ReqRespBeaconNode.js +20 -15
  109. package/lib/network/reqresp/ReqRespBeaconNode.js.map +1 -1
  110. package/lib/network/reqresp/beaconBlocksMaybeBlobsByRange.d.ts +2 -1
  111. package/lib/network/reqresp/beaconBlocksMaybeBlobsByRange.js +6 -2
  112. package/lib/network/reqresp/beaconBlocksMaybeBlobsByRange.js.map +1 -1
  113. package/lib/network/reqresp/beaconBlocksMaybeBlobsByRoot.d.ts +1 -0
  114. package/lib/network/reqresp/beaconBlocksMaybeBlobsByRoot.js +26 -6
  115. package/lib/network/reqresp/beaconBlocksMaybeBlobsByRoot.js.map +1 -1
  116. package/lib/network/reqresp/handlers/beaconBlocksByRange.js +2 -2
  117. package/lib/network/reqresp/handlers/beaconBlocksByRange.js.map +1 -1
  118. package/lib/network/reqresp/handlers/beaconBlocksByRoot.js +1 -1
  119. package/lib/network/reqresp/handlers/beaconBlocksByRoot.js.map +1 -1
  120. package/lib/network/reqresp/handlers/blobSidecarsByRange.js +1 -1
  121. package/lib/network/reqresp/handlers/blobSidecarsByRange.js.map +1 -1
  122. package/lib/network/reqresp/handlers/blobSidecarsByRoot.js +1 -1
  123. package/lib/network/reqresp/handlers/blobSidecarsByRoot.js.map +1 -1
  124. package/lib/network/reqresp/handlers/dataColumnSidecarsByRange.js +1 -1
  125. package/lib/network/reqresp/handlers/dataColumnSidecarsByRange.js.map +1 -1
  126. package/lib/network/reqresp/handlers/dataColumnSidecarsByRoot.js +1 -1
  127. package/lib/network/reqresp/handlers/dataColumnSidecarsByRoot.js.map +1 -1
  128. package/lib/network/reqresp/handlers/lightClientBootstrap.js +1 -1
  129. package/lib/network/reqresp/handlers/lightClientBootstrap.js.map +1 -1
  130. package/lib/network/reqresp/handlers/lightClientFinalityUpdate.js +1 -1
  131. package/lib/network/reqresp/handlers/lightClientFinalityUpdate.js.map +1 -1
  132. package/lib/network/reqresp/handlers/lightClientOptimisticUpdate.js +1 -1
  133. package/lib/network/reqresp/handlers/lightClientOptimisticUpdate.js.map +1 -1
  134. package/lib/network/reqresp/handlers/lightClientUpdatesByRange.js +1 -1
  135. package/lib/network/reqresp/handlers/lightClientUpdatesByRange.js.map +1 -1
  136. package/lib/network/reqresp/handlers/status.js +4 -3
  137. package/lib/network/reqresp/handlers/status.js.map +1 -1
  138. package/lib/network/reqresp/protocols.d.ts +1 -0
  139. package/lib/network/reqresp/protocols.js +5 -0
  140. package/lib/network/reqresp/protocols.js.map +1 -1
  141. package/lib/network/reqresp/types.d.ts +3 -3
  142. package/lib/network/reqresp/types.js +3 -3
  143. package/lib/network/reqresp/types.js.map +1 -1
  144. package/lib/network/statusCache.d.ts +5 -5
  145. package/lib/network/statusCache.js.map +1 -1
  146. package/lib/network/subnets/attnetsService.d.ts +3 -3
  147. package/lib/network/subnets/attnetsService.js +17 -17
  148. package/lib/network/subnets/attnetsService.js.map +1 -1
  149. package/lib/network/subnets/interface.d.ts +3 -3
  150. package/lib/network/subnets/syncnetsService.d.ts +3 -3
  151. package/lib/network/subnets/syncnetsService.js +13 -13
  152. package/lib/network/subnets/syncnetsService.js.map +1 -1
  153. package/lib/network/subscribeBoundary.d.ts +5 -0
  154. package/lib/network/subscribeBoundary.js +4 -0
  155. package/lib/network/subscribeBoundary.js.map +1 -0
  156. package/lib/node/nodejs.js +0 -6
  157. package/lib/node/nodejs.js.map +1 -1
  158. package/lib/sync/range/chain.d.ts +6 -3
  159. package/lib/sync/range/chain.js +14 -14
  160. package/lib/sync/range/chain.js.map +1 -1
  161. package/lib/sync/range/range.d.ts +3 -2
  162. package/lib/sync/range/range.js +8 -3
  163. package/lib/sync/range/range.js.map +1 -1
  164. package/lib/sync/range/utils/peerBalancer.d.ts +4 -7
  165. package/lib/sync/range/utils/peerBalancer.js +13 -8
  166. package/lib/sync/range/utils/peerBalancer.js.map +1 -1
  167. package/lib/sync/unknownBlock.js +12 -14
  168. package/lib/sync/unknownBlock.js.map +1 -1
  169. package/lib/sync/utils/remoteSyncType.d.ts +4 -4
  170. package/lib/sync/utils/remoteSyncType.js.map +1 -1
  171. package/lib/util/blobs.d.ts +5 -0
  172. package/lib/util/blobs.js +62 -2
  173. package/lib/util/blobs.js.map +1 -1
  174. package/lib/util/dataColumns.d.ts +32 -6
  175. package/lib/util/dataColumns.js +84 -8
  176. package/lib/util/dataColumns.js.map +1 -1
  177. package/lib/util/kzg.d.ts +2 -22
  178. package/lib/util/kzg.js +2 -47
  179. package/lib/util/kzg.js.map +1 -1
  180. package/package.json +15 -15
@@ -6,7 +6,7 @@ import { ZERO_HASH, ZERO_HASH_HEX } from "../../constants/index.js";
6
6
  import { numToQuantity } from "../../eth1/provider/utils.js";
7
7
  import { getExpectedGasLimit, } from "../../execution/index.js";
8
8
  import { fromGraffitiBytes } from "../../util/graffiti.js";
9
- import { ckzg } from "../../util/kzg.js";
9
+ import { kzg } from "../../util/kzg.js";
10
10
  import { validateBlobsAndKzgCommitments } from "./validateBlobsAndKzgCommitments.js";
11
11
  // Time to provide the EL to generate a payload from new payload id
12
12
  const PAYLOAD_GENERATION_TIME_MS = 500;
@@ -43,12 +43,13 @@ export var BlobsResultType;
43
43
  BlobsResultType[BlobsResultType["blinded"] = 2] = "blinded";
44
44
  })(BlobsResultType || (BlobsResultType = {}));
45
45
  export async function produceBlockBody(blockType, currentState, blockAttr) {
46
- const { slot: blockSlot, feeRecipient: requestedFeeRecipient, parentBlockRoot, proposerIndex, proposerPubKey, commonBlockBody, } = blockAttr;
46
+ const { slot: blockSlot, feeRecipient: requestedFeeRecipient, parentBlockRoot, proposerIndex, proposerPubKey, commonBlockBodyPromise, } = blockAttr;
47
47
  // Type-safe for blobs variable. Translate 'null' value into 'preDeneb' enum
48
48
  // TODO: Not ideal, but better than just using null.
49
49
  // TODO: Does not guarantee that preDeneb enum goes with a preDeneb block
50
50
  let blobsResult;
51
51
  let executionPayloadValue;
52
+ let blockBody;
52
53
  // even though shouldOverrideBuilder is relevant for the engine response, for simplicity of typing
53
54
  // we just return it undefined for the builder which anyway doesn't get consumed downstream
54
55
  let shouldOverrideBuilder;
@@ -59,27 +60,6 @@ export async function produceBlockBody(blockType, currentState, blockAttr) {
59
60
  slot: blockSlot,
60
61
  };
61
62
  this.logger.verbose("Producing beacon block body", logMeta);
62
- const stepsMetrics = blockType === BlockType.Full
63
- ? this.metrics?.executionBlockProductionTimeSteps
64
- : this.metrics?.builderBlockProductionTimeSteps;
65
- const blockBody = commonBlockBody
66
- ? Object.assign({}, commonBlockBody)
67
- : await produceCommonBlockBody.call(this, blockType, currentState, blockAttr);
68
- const { graffiti, attestations, deposits, voluntaryExits, attesterSlashings, proposerSlashings, syncAggregate, blsToExecutionChanges, } = blockBody;
69
- Object.assign(logMeta, {
70
- graffiti: fromGraffitiBytes(graffiti),
71
- attestations: attestations.length,
72
- deposits: deposits.length,
73
- voluntaryExits: voluntaryExits.length,
74
- attesterSlashings: attesterSlashings.length,
75
- proposerSlashings: proposerSlashings.length,
76
- });
77
- if (isForkPostAltair(fork)) {
78
- Object.assign(logMeta, {
79
- syncAggregateParticipants: syncAggregate.syncCommitteeBits.getTrueBitIndexes().length,
80
- });
81
- }
82
- const endExecutionPayload = stepsMetrics?.startTimer();
83
63
  if (isForkPostBellatrix(fork)) {
84
64
  const safeBlockHash = this.forkChoice.getJustifiedBlock().executionPayloadBlockHash ?? ZERO_HASH_HEX;
85
65
  const finalizedBlockHash = this.forkChoice.getFinalizedBlock().executionPayloadBlockHash ?? ZERO_HASH_HEX;
@@ -93,16 +73,33 @@ export async function produceBlockBody(blockType, currentState, blockAttr) {
93
73
  if (blockType === BlockType.Blinded) {
94
74
  if (!this.executionBuilder)
95
75
  throw Error("Execution Builder not available");
96
- // This path will not be used in the production, but is here just for merge mock
97
- // tests because merge-mock requires an fcU to be issued prior to fetch payload
98
- // header.
99
- if (this.executionBuilder.issueLocalFcUWithFeeRecipient !== undefined) {
100
- await prepareExecutionPayload(this, this.logger, fork, parentBlockRoot, safeBlockHash, finalizedBlockHash ?? ZERO_HASH_HEX, currentState, this.executionBuilder.issueLocalFcUWithFeeRecipient);
101
- }
102
- // For MeV boost integration, this is where the execution header will be
103
- // fetched from the payload id and a blinded block will be produced instead of
104
- // fullblock for the validator to sign
105
- const builderRes = await prepareExecutionPayloadHeader(this, fork, currentState, proposerPubKey);
76
+ const executionBuilder = this.executionBuilder;
77
+ const builderPromise = (async () => {
78
+ const endExecutionPayloadHeader = this.metrics?.builderBlockProductionTimeSteps.startTimer();
79
+ // This path will not be used in the production, but is here just for merge mock
80
+ // tests because merge-mock requires an fcU to be issued prior to fetch payload
81
+ // header.
82
+ if (executionBuilder.issueLocalFcUWithFeeRecipient !== undefined) {
83
+ await prepareExecutionPayload(this, this.logger, fork, parentBlockRoot, safeBlockHash, finalizedBlockHash ?? ZERO_HASH_HEX, currentState, executionBuilder.issueLocalFcUWithFeeRecipient);
84
+ }
85
+ // For MeV boost integration, this is where the execution header will be
86
+ // fetched from the payload id and a blinded block will be produced instead of
87
+ // fullblock for the validator to sign
88
+ this.logger.verbose("Fetching execution payload header from builder", {
89
+ slot: blockSlot,
90
+ proposerPubKey: toHex(proposerPubKey),
91
+ });
92
+ const headerRes = prepareExecutionPayloadHeader(this, fork, currentState, proposerPubKey);
93
+ endExecutionPayloadHeader?.({
94
+ step: BlockProductionStep.executionPayload,
95
+ });
96
+ return headerRes;
97
+ })();
98
+ const [builderRes, commonBlockBody] = await Promise.all([
99
+ builderPromise,
100
+ commonBlockBodyPromise ?? produceCommonBlockBody.call(this, blockType, currentState, blockAttr),
101
+ ]);
102
+ blockBody = Object.assign({}, commonBlockBody);
106
103
  blockBody.executionPayloadHeader = builderRes.header;
107
104
  executionPayloadValue = builderRes.executionPayloadValue;
108
105
  const fetchedTime = Date.now() / 1000 - computeTimeAtSlot(this.config, blockSlot, this.genesisTime);
@@ -114,7 +111,7 @@ export async function produceBlockBody(blockType, currentState, blockAttr) {
114
111
  prepType,
115
112
  fetchedTime,
116
113
  });
117
- const targetGasLimit = this.executionBuilder.getValidatorRegistration(proposerPubKey)?.gasLimit;
114
+ const targetGasLimit = executionBuilder.getValidatorRegistration(proposerPubKey)?.gasLimit;
118
115
  if (!targetGasLimit) {
119
116
  // This should only happen if cache was cleared due to restart of beacon node
120
117
  this.logger.warn("Failed to get validator registration, could not check header gas limit", {
@@ -164,114 +161,146 @@ export async function produceBlockBody(blockType, currentState, blockAttr) {
164
161
  }
165
162
  // blockType === BlockType.Full
166
163
  else {
167
- // try catch payload fetch here, because there is still a recovery path possible if we
168
- // are pre-merge. We don't care the same for builder segment as the execution block
169
- // will takeover if the builder flow was activated and errors
170
- try {
171
- // https://github.com/ethereum/consensus-specs/blob/dev/specs/eip4844/validator.md#constructing-the-beaconblockbody
164
+ const enginePromise = (async () => {
165
+ const endExecutionPayload = this.metrics?.executionBlockProductionTimeSteps.startTimer();
166
+ this.logger.verbose("Preparing execution payload from engine", {
167
+ slot: blockSlot,
168
+ parentBlockRoot: toRootHex(parentBlockRoot),
169
+ feeRecipient,
170
+ });
171
+ // https://github.com/ethereum/consensus-specs/blob/dev/specs/deneb/validator.md#constructing-the-beaconblockbody
172
172
  const prepareRes = await prepareExecutionPayload(this, this.logger, fork, parentBlockRoot, safeBlockHash, finalizedBlockHash ?? ZERO_HASH_HEX, currentState, feeRecipient);
173
173
  if (prepareRes.isPremerge) {
174
- blockBody.executionPayload =
175
- sszTypesFor(fork).ExecutionPayload.defaultValue();
176
- blobsResult = { type: BlobsResultType.preDeneb };
177
- executionPayloadValue = BigInt(0);
174
+ return {
175
+ ...prepareRes,
176
+ executionPayload: sszTypesFor(fork).ExecutionPayload.defaultValue(),
177
+ executionPayloadValue: BigInt(0),
178
+ };
178
179
  }
179
- else {
180
- const { prepType, payloadId } = prepareRes;
181
- Object.assign(logMeta, { executionPayloadPrepType: prepType });
182
- if (prepType !== PayloadPreparationType.Cached) {
183
- // Wait for 500ms to allow EL to add some txs to the payload
184
- // the pitfalls of this have been put forward here, but 500ms delay for block proposal
185
- // seems marginal even with unhealthy network
186
- //
187
- // See: https://discord.com/channels/595666850260713488/892088344438255616/1009882079632314469
188
- await sleep(PAYLOAD_GENERATION_TIME_MS);
189
- }
190
- const engineRes = await this.executionEngine.getPayload(fork, payloadId);
191
- const { executionPayload, blobsBundle, executionRequests } = engineRes;
192
- shouldOverrideBuilder = engineRes.shouldOverrideBuilder;
193
- blockBody.executionPayload = executionPayload;
194
- executionPayloadValue = engineRes.executionPayloadValue;
195
- Object.assign(logMeta, { transactions: executionPayload.transactions.length, shouldOverrideBuilder });
196
- const fetchedTime = Date.now() / 1000 - computeTimeAtSlot(this.config, blockSlot, this.genesisTime);
197
- this.metrics?.blockPayload.payloadFetchedTime.observe({ prepType }, fetchedTime);
198
- this.logger.verbose("Fetched execution payload from engine", {
199
- slot: blockSlot,
200
- executionPayloadValue,
201
- prepType,
202
- payloadId,
203
- fetchedTime,
204
- executionHeadBlockHash: toRootHex(engineRes.executionPayload.blockHash),
205
- });
206
- if (executionPayload.transactions.length === 0) {
207
- this.metrics?.blockPayload.emptyPayloads.inc({ prepType });
208
- }
209
- if (ForkSeq[fork] >= ForkSeq.deneb) {
210
- if (blobsBundle === undefined) {
211
- throw Error(`Missing blobsBundle response from getPayload at fork=${fork}`);
212
- }
213
- let cells;
214
- if (ForkSeq[fork] >= ForkSeq.fulu) {
215
- cells = blobsBundle.blobs.map((blob) => ckzg.computeCells(blob));
216
- }
217
- if (this.opts.sanityCheckExecutionEngineBlobs) {
218
- validateBlobsAndKzgCommitments(fork, executionPayload, blobsBundle, cells);
219
- }
220
- blockBody.blobKzgCommitments = blobsBundle.commitments;
221
- const blockHash = toRootHex(executionPayload.blockHash);
222
- const contents = {
223
- kzgProofs: blobsBundle.proofs,
224
- blobs: blobsBundle.blobs,
225
- cells,
226
- };
227
- blobsResult = { type: BlobsResultType.produced, contents, blockHash };
228
- Object.assign(logMeta, { blobs: blobsBundle.commitments.length });
229
- }
230
- else {
231
- blobsResult = { type: BlobsResultType.preDeneb };
232
- }
233
- if (ForkSeq[fork] >= ForkSeq.electra) {
234
- if (executionRequests === undefined) {
235
- throw Error(`Missing executionRequests response from getPayload at fork=${fork}`);
236
- }
237
- blockBody.executionRequests = executionRequests;
238
- }
180
+ const { prepType, payloadId } = prepareRes;
181
+ Object.assign(logMeta, { executionPayloadPrepType: prepType });
182
+ if (prepType !== PayloadPreparationType.Cached) {
183
+ // Wait for 500ms to allow EL to add some txs to the payload
184
+ // the pitfalls of this have been put forward here, but 500ms delay for block proposal
185
+ // seems marginal even with unhealthy network
186
+ //
187
+ // See: https://discord.com/channels/595666850260713488/892088344438255616/1009882079632314469
188
+ await sleep(PAYLOAD_GENERATION_TIME_MS);
239
189
  }
240
- }
241
- catch (e) {
190
+ this.logger.verbose("Fetching execution payload from engine", { slot: blockSlot, payloadId });
191
+ const payloadRes = await this.executionEngine.getPayload(fork, payloadId);
192
+ endExecutionPayload?.({
193
+ step: BlockProductionStep.executionPayload,
194
+ });
195
+ return { ...prepareRes, ...payloadRes };
196
+ })().catch((e) => {
197
+ // catch payload fetch here, because there is still a recovery path possible if we
198
+ // are pre-merge. We don't care the same for builder segment as the execution block
199
+ // will takeover if the builder flow was activated and errors
242
200
  this.metrics?.blockPayload.payloadFetchErrors.inc();
243
- // ok we don't have an execution payload here, so we can assign an empty one
244
- // if pre-merge
245
201
  if (!isMergeTransitionComplete(currentState)) {
246
202
  this.logger?.warn("Fetch payload from the execution failed, however since we are still pre-merge proceeding with an empty one.", {}, e);
247
- blockBody.executionPayload =
248
- sszTypesFor(fork).ExecutionPayload.defaultValue();
249
- blobsResult = { type: BlobsResultType.preDeneb };
250
- executionPayloadValue = BigInt(0);
203
+ // ok we don't have an execution payload here, so we can assign an empty one
204
+ // if pre-merge
205
+ return {
206
+ isPremerge: true,
207
+ executionPayload: sszTypesFor(fork).ExecutionPayload.defaultValue(),
208
+ executionPayloadValue: BigInt(0),
209
+ };
210
+ }
211
+ // since merge transition is complete, we need a valid payload even if with an
212
+ // empty (transactions) one. defaultValue isn't gonna cut it!
213
+ throw e;
214
+ });
215
+ const [engineRes, commonBlockBody] = await Promise.all([
216
+ enginePromise,
217
+ commonBlockBodyPromise ?? produceCommonBlockBody.call(this, blockType, currentState, blockAttr),
218
+ ]);
219
+ blockBody = Object.assign({}, commonBlockBody);
220
+ if (engineRes.isPremerge) {
221
+ blockBody.executionPayload = engineRes.executionPayload;
222
+ blobsResult = { type: BlobsResultType.preDeneb };
223
+ executionPayloadValue = engineRes.executionPayloadValue;
224
+ }
225
+ else {
226
+ const { prepType, payloadId, executionPayload, blobsBundle, executionRequests } = engineRes;
227
+ shouldOverrideBuilder = engineRes.shouldOverrideBuilder;
228
+ blockBody.executionPayload = executionPayload;
229
+ executionPayloadValue = engineRes.executionPayloadValue;
230
+ Object.assign(logMeta, { transactions: executionPayload.transactions.length, shouldOverrideBuilder });
231
+ const fetchedTime = Date.now() / 1000 - computeTimeAtSlot(this.config, blockSlot, this.genesisTime);
232
+ this.metrics?.blockPayload.payloadFetchedTime.observe({ prepType }, fetchedTime);
233
+ this.logger.verbose("Fetched execution payload from engine", {
234
+ slot: blockSlot,
235
+ executionPayloadValue,
236
+ prepType,
237
+ payloadId,
238
+ fetchedTime,
239
+ executionHeadBlockHash: toRootHex(engineRes.executionPayload.blockHash),
240
+ });
241
+ if (executionPayload.transactions.length === 0) {
242
+ this.metrics?.blockPayload.emptyPayloads.inc({ prepType });
243
+ }
244
+ if (ForkSeq[fork] >= ForkSeq.deneb) {
245
+ if (blobsBundle === undefined) {
246
+ throw Error(`Missing blobsBundle response from getPayload at fork=${fork}`);
247
+ }
248
+ let cells;
249
+ if (ForkSeq[fork] >= ForkSeq.fulu) {
250
+ cells = blobsBundle.blobs.map((blob) => kzg.computeCells(blob));
251
+ }
252
+ if (this.opts.sanityCheckExecutionEngineBlobs) {
253
+ await validateBlobsAndKzgCommitments(fork, executionPayload, blobsBundle, cells);
254
+ }
255
+ blockBody.blobKzgCommitments = blobsBundle.commitments;
256
+ const blockHash = toRootHex(executionPayload.blockHash);
257
+ const contents = { kzgProofs: blobsBundle.proofs, blobs: blobsBundle.blobs, cells };
258
+ blobsResult = { type: BlobsResultType.produced, contents, blockHash };
259
+ Object.assign(logMeta, { blobs: blobsBundle.commitments.length });
251
260
  }
252
261
  else {
253
- // since merge transition is complete, we need a valid payload even if with an
254
- // empty (transactions) one. defaultValue isn't gonna cut it!
255
- throw e;
262
+ blobsResult = { type: BlobsResultType.preDeneb };
263
+ }
264
+ if (ForkSeq[fork] >= ForkSeq.electra) {
265
+ if (executionRequests === undefined) {
266
+ throw Error(`Missing executionRequests response from getPayload at fork=${fork}`);
267
+ }
268
+ blockBody.executionRequests = executionRequests;
256
269
  }
257
270
  }
258
271
  }
259
272
  }
260
273
  else {
274
+ const commonBlockBody = await (commonBlockBodyPromise ??
275
+ produceCommonBlockBody.call(this, blockType, currentState, blockAttr));
276
+ blockBody = Object.assign({}, commonBlockBody);
261
277
  blobsResult = { type: BlobsResultType.preDeneb };
262
278
  executionPayloadValue = BigInt(0);
263
279
  }
264
- endExecutionPayload?.({
265
- step: BlockProductionStep.executionPayload,
280
+ const { graffiti, attestations, deposits, voluntaryExits, attesterSlashings, proposerSlashings } = blockBody;
281
+ Object.assign(logMeta, {
282
+ graffiti: fromGraffitiBytes(graffiti),
283
+ attestations: attestations.length,
284
+ deposits: deposits.length,
285
+ voluntaryExits: voluntaryExits.length,
286
+ attesterSlashings: attesterSlashings.length,
287
+ proposerSlashings: proposerSlashings.length,
266
288
  });
289
+ if (isForkPostAltair(fork)) {
290
+ const { syncAggregate } = blockBody;
291
+ Object.assign(logMeta, {
292
+ syncAggregateParticipants: syncAggregate.syncCommitteeBits.getTrueBitIndexes().length,
293
+ });
294
+ }
267
295
  if (ForkSeq[fork] >= ForkSeq.capella) {
296
+ const { blsToExecutionChanges, executionPayload } = blockBody;
268
297
  Object.assign(logMeta, {
269
298
  blsToExecutionChanges: blsToExecutionChanges.length,
270
299
  });
271
300
  // withdrawals are only available in full body
272
301
  if (blockType === BlockType.Full) {
273
302
  Object.assign(logMeta, {
274
- withdrawals: blockBody.executionPayload.withdrawals.length,
303
+ withdrawals: executionPayload.withdrawals.length,
275
304
  });
276
305
  }
277
306
  }
@@ -1 +1 @@
1
- {"version":3,"file":"produceBlockBody.js","sourceRoot":"","sources":["../../../src/chain/produceBlock/produceBlockBody.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"produceBlockBody.js","sourceRoot":"","sources":["../../../src/chain/produceBlock/produceBlockBody.ts"],"names":[],"mappings":"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"}
@@ -5,5 +5,5 @@ import { BlobsBundle } from "../../execution/index.js";
5
5
  * Optionally sanity-check that the KZG commitments match the versioned hashes in the transactions
6
6
  * https://github.com/ethereum/consensus-specs/blob/11a037fd9227e29ee809c9397b09f8cc3383a8c0/specs/eip4844/validator.md#blob-kzg-commitments
7
7
  */
8
- export declare function validateBlobsAndKzgCommitments(fork: ForkPostDeneb, _payload: ExecutionPayload, blobsBundle: BlobsBundle, cells?: fulu.Cell[][]): void;
8
+ export declare function validateBlobsAndKzgCommitments(fork: ForkPostDeneb, _payload: ExecutionPayload, blobsBundle: BlobsBundle, cells?: fulu.Cell[][]): Promise<void>;
9
9
  //# sourceMappingURL=validateBlobsAndKzgCommitments.d.ts.map
@@ -1,10 +1,10 @@
1
1
  import { CELLS_PER_EXT_BLOB, ForkSeq } from "@lodestar/params";
2
- import { ckzg } from "../../util/kzg.js";
2
+ import { kzg } from "../../util/kzg.js";
3
3
  /**
4
4
  * Optionally sanity-check that the KZG commitments match the versioned hashes in the transactions
5
5
  * https://github.com/ethereum/consensus-specs/blob/11a037fd9227e29ee809c9397b09f8cc3383a8c0/specs/eip4844/validator.md#blob-kzg-commitments
6
6
  */
7
- export function validateBlobsAndKzgCommitments(fork, _payload, blobsBundle, cells) {
7
+ export async function validateBlobsAndKzgCommitments(fork, _payload, blobsBundle, cells) {
8
8
  if (blobsBundle.blobs.length !== blobsBundle.commitments.length) {
9
9
  throw Error(`Blobs bundle blobs len ${blobsBundle.blobs.length} != commitments len ${blobsBundle.commitments.length}`);
10
10
  }
@@ -12,28 +12,22 @@ export function validateBlobsAndKzgCommitments(fork, _payload, blobsBundle, cell
12
12
  if (blobsBundle.proofs.length !== blobsBundle.blobs.length) {
13
13
  throw new Error(`Invalid proofs length for BlobsBundleV1 format: expected ${blobsBundle.blobs.length}, got ${blobsBundle.proofs.length}`);
14
14
  }
15
- try {
16
- ckzg.verifyBlobKzgProofBatch(blobsBundle.blobs, blobsBundle.commitments, blobsBundle.proofs);
17
- }
18
- catch {
15
+ if (!(await kzg.asyncVerifyBlobKzgProofBatch(blobsBundle.blobs, blobsBundle.commitments, blobsBundle.proofs))) {
19
16
  throw new Error("Error in verifyBlobKzgProofBatch");
20
17
  }
21
18
  return;
22
19
  }
23
20
  if (!cells) {
24
- cells = blobsBundle.blobs.map((blob) => ckzg.computeCells(blob));
21
+ cells = blobsBundle.blobs.map((blob) => kzg.computeCells(blob));
25
22
  }
26
23
  const expectedProofsLength = blobsBundle.blobs.length * CELLS_PER_EXT_BLOB;
27
24
  if (blobsBundle.proofs.length !== expectedProofsLength) {
28
25
  throw Error(`Invalid proofs length for BlobsBundleV2 format: expected ${expectedProofsLength}, got ${blobsBundle.proofs.length}`);
29
26
  }
30
27
  const commitmentBytes = blobsBundle.commitments.flatMap((commitment) => Array(CELLS_PER_EXT_BLOB).fill(commitment));
31
- const cellIndices = Array.from({ length: blobsBundle.blobs.length }).flatMap(() => Array.from({ length: CELLS_PER_EXT_BLOB }, (_, i) => i));
28
+ const cellIndices = Array.from({ length: blobsBundle.blobs.length }).flatMap(() => Array.from({ length: CELLS_PER_EXT_BLOB }, (_, i) => BigInt(i)));
32
29
  const proofBytes = blobsBundle.proofs.flat();
33
- try {
34
- ckzg.verifyCellKzgProofBatch(commitmentBytes, cellIndices, cells.flat(), proofBytes);
35
- }
36
- catch {
30
+ if (!(await kzg.asyncVerifyCellKzgProofBatch(commitmentBytes, cellIndices, cells.flat(), proofBytes))) {
37
31
  throw new Error("Error in verifyCellKzgProofBatch");
38
32
  }
39
33
  }
@@ -1 +1 @@
1
- {"version":3,"file":"validateBlobsAndKzgCommitments.js","sourceRoot":"","sources":["../../../src/chain/produceBlock/validateBlobsAndKzgCommitments.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,kBAAkB,EAAiB,OAAO,EAAC,MAAM,kBAAkB,CAAC;AAG5E,OAAO,EAAC,IAAI,EAAC,MAAM,mBAAmB,CAAC;AAEvC;;;GAGG;AAEH,MAAM,UAAU,8BAA8B,CAC5C,IAAmB,EACnB,QAA0B,EAC1B,WAAwB,EACxB,KAAqB;IAErB,IAAI,WAAW,CAAC,KAAK,CAAC,MAAM,KAAK,WAAW,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC;QAChE,MAAM,KAAK,CACT,0BAA0B,WAAW,CAAC,KAAK,CAAC,MAAM,uBAAuB,WAAW,CAAC,WAAW,CAAC,MAAM,EAAE,CAC1G,CAAC;IACJ,CAAC;IAED,IAAI,OAAO,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;QACjC,IAAI,WAAW,CAAC,MAAM,CAAC,MAAM,KAAK,WAAW,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;YAC3D,MAAM,IAAI,KAAK,CACb,4DAA4D,WAAW,CAAC,KAAK,CAAC,MAAM,SAAS,WAAW,CAAC,MAAM,CAAC,MAAM,EAAE,CACzH,CAAC;QACJ,CAAC;QAED,IAAI,CAAC;YACH,IAAI,CAAC,uBAAuB,CAAC,WAAW,CAAC,KAAK,EAAE,WAAW,CAAC,WAAW,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;QAC/F,CAAC;QAAC,MAAM,CAAC;YACP,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAC;QACtD,CAAC;QAED,OAAO;IACT,CAAC;IAED,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,KAAK,GAAG,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC;IACnE,CAAC;IAED,MAAM,oBAAoB,GAAG,WAAW,CAAC,KAAK,CAAC,MAAM,GAAG,kBAAkB,CAAC;IAC3E,IAAI,WAAW,CAAC,MAAM,CAAC,MAAM,KAAK,oBAAoB,EAAE,CAAC;QACvD,MAAM,KAAK,CACT,4DAA4D,oBAAoB,SAAS,WAAW,CAAC,MAAM,CAAC,MAAM,EAAE,CACrH,CAAC;IACJ,CAAC;IAED,MAAM,eAAe,GAAG,WAAW,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;IACpH,MAAM,WAAW,GAAG,KAAK,CAAC,IAAI,CAAC,EAAC,MAAM,EAAE,WAAW,CAAC,KAAK,CAAC,MAAM,EAAC,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,CAC9E,KAAK,CAAC,IAAI,CAAC,EAAC,MAAM,EAAE,kBAAkB,EAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CACtD,CAAC;IACF,MAAM,UAAU,GAAG,WAAW,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;IAE7C,IAAI,CAAC;QACH,IAAI,CAAC,uBAAuB,CAAC,eAAe,EAAE,WAAW,EAAE,KAAK,CAAC,IAAI,EAAE,EAAE,UAAU,CAAC,CAAC;IACvF,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAC;IACtD,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"validateBlobsAndKzgCommitments.js","sourceRoot":"","sources":["../../../src/chain/produceBlock/validateBlobsAndKzgCommitments.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,kBAAkB,EAAiB,OAAO,EAAC,MAAM,kBAAkB,CAAC;AAG5E,OAAO,EAAC,GAAG,EAAC,MAAM,mBAAmB,CAAC;AAEtC;;;GAGG;AAEH,MAAM,CAAC,KAAK,UAAU,8BAA8B,CAClD,IAAmB,EACnB,QAA0B,EAC1B,WAAwB,EACxB,KAAqB;IAErB,IAAI,WAAW,CAAC,KAAK,CAAC,MAAM,KAAK,WAAW,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC;QAChE,MAAM,KAAK,CACT,0BAA0B,WAAW,CAAC,KAAK,CAAC,MAAM,uBAAuB,WAAW,CAAC,WAAW,CAAC,MAAM,EAAE,CAC1G,CAAC;IACJ,CAAC;IAED,IAAI,OAAO,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;QACjC,IAAI,WAAW,CAAC,MAAM,CAAC,MAAM,KAAK,WAAW,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;YAC3D,MAAM,IAAI,KAAK,CACb,4DAA4D,WAAW,CAAC,KAAK,CAAC,MAAM,SAAS,WAAW,CAAC,MAAM,CAAC,MAAM,EAAE,CACzH,CAAC;QACJ,CAAC;QAED,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC,4BAA4B,CAAC,WAAW,CAAC,KAAK,EAAE,WAAW,CAAC,WAAW,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC;YAC9G,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAC;QACtD,CAAC;QAED,OAAO;IACT,CAAC;IAED,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,KAAK,GAAG,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,GAAG,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC;IAClE,CAAC;IAED,MAAM,oBAAoB,GAAG,WAAW,CAAC,KAAK,CAAC,MAAM,GAAG,kBAAkB,CAAC;IAC3E,IAAI,WAAW,CAAC,MAAM,CAAC,MAAM,KAAK,oBAAoB,EAAE,CAAC;QACvD,MAAM,KAAK,CACT,4DAA4D,oBAAoB,SAAS,WAAW,CAAC,MAAM,CAAC,MAAM,EAAE,CACrH,CAAC;IACJ,CAAC;IAED,MAAM,eAAe,GAAG,WAAW,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;IACpH,MAAM,WAAW,GAAG,KAAK,CAAC,IAAI,CAAC,EAAC,MAAM,EAAE,WAAW,CAAC,KAAK,CAAC,MAAM,EAAC,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,CAC9E,KAAK,CAAC,IAAI,CAAC,EAAC,MAAM,EAAE,kBAAkB,EAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAC9D,CAAC;IACF,MAAM,UAAU,GAAG,WAAW,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;IAE7C,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC,4BAA4B,CAAC,eAAe,EAAE,WAAW,EAAE,KAAK,CAAC,IAAI,EAAE,EAAE,UAAU,CAAC,CAAC,EAAE,CAAC;QACtG,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAC;IACtD,CAAC;AACH,CAAC"}
@@ -4,11 +4,13 @@ import { RootHex, SignedBeaconBlock, deneb, fulu } from "@lodestar/types";
4
4
  import { Logger } from "@lodestar/utils";
5
5
  import { IExecutionEngine } from "../../execution/index.js";
6
6
  import { Metrics } from "../../metrics/index.js";
7
+ import { IClock } from "../../util/clock.js";
7
8
  import { CustodyConfig } from "../../util/dataColumns.js";
8
9
  import { BlockInput, CachedData, GossipedInputType, NullBlockInput } from "../blocks/types.js";
9
10
  import { ChainEventEmitter } from "../emitter.js";
10
11
  export declare enum BlockInputAvailabilitySource {
11
12
  GOSSIP = "gossip",
13
+ RECOVERED = "recovered",
12
14
  UNKNOWN_SYNC = "unknown_sync"
13
15
  }
14
16
  type GossipedBlockInput = {
@@ -72,9 +74,10 @@ export declare class SeenGossipBlockInput {
72
74
  private readonly blockInputCache;
73
75
  private readonly custodyConfig;
74
76
  private readonly executionEngine;
77
+ private readonly clock;
75
78
  private readonly emitter;
76
79
  private readonly logger;
77
- constructor(custodyConfig: CustodyConfig, executionEngine: IExecutionEngine, emitter: ChainEventEmitter, logger: Logger);
80
+ constructor(custodyConfig: CustodyConfig, executionEngine: IExecutionEngine, emitter: ChainEventEmitter, clock: IClock, logger: Logger);
78
81
  globalCacheId: number;
79
82
  prune(): void;
80
83
  hasBlock(blockRoot: RootHex): boolean;