@lodestar/beacon-node 1.32.0-peerDAS.fbabed864b → 1.32.0-rc.0

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