@lodestar/beacon-node 1.33.0 → 1.34.0-dev.098ff4253f

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 (264) hide show
  1. package/lib/api/impl/beacon/blocks/index.js +162 -55
  2. package/lib/api/impl/beacon/blocks/index.js.map +1 -1
  3. package/lib/api/impl/beacon/pool/index.js +3 -3
  4. package/lib/api/impl/beacon/pool/index.js.map +1 -1
  5. package/lib/api/impl/beacon/state/index.js +15 -16
  6. package/lib/api/impl/beacon/state/index.js.map +1 -1
  7. package/lib/api/impl/debug/index.d.ts +1 -1
  8. package/lib/api/impl/debug/index.js +24 -1
  9. package/lib/api/impl/debug/index.js.map +1 -1
  10. package/lib/api/impl/validator/index.js +43 -26
  11. package/lib/api/impl/validator/index.js.map +1 -1
  12. package/lib/api/impl/validator/utils.d.ts +3 -3
  13. package/lib/api/impl/validator/utils.js +2 -2
  14. package/lib/api/impl/validator/utils.js.map +1 -1
  15. package/lib/chain/archiveStore/archiveStore.d.ts +1 -1
  16. package/lib/chain/archiveStore/archiveStore.js +2 -2
  17. package/lib/chain/archiveStore/interface.d.ts +1 -1
  18. package/lib/chain/archiveStore/utils/archiveBlocks.d.ts +1 -1
  19. package/lib/chain/archiveStore/utils/archiveBlocks.js +89 -22
  20. package/lib/chain/archiveStore/utils/archiveBlocks.js.map +1 -1
  21. package/lib/chain/beaconProposerCache.d.ts +1 -0
  22. package/lib/chain/beaconProposerCache.js +3 -0
  23. package/lib/chain/beaconProposerCache.js.map +1 -1
  24. package/lib/chain/blocks/importBlock.js +3 -2
  25. package/lib/chain/blocks/importBlock.js.map +1 -1
  26. package/lib/chain/blocks/types.d.ts +66 -23
  27. package/lib/chain/blocks/types.js +39 -5
  28. package/lib/chain/blocks/types.js.map +1 -1
  29. package/lib/chain/blocks/utils/zebraBanner.d.ts +2 -0
  30. package/lib/chain/blocks/utils/zebraBanner.js +45 -0
  31. package/lib/chain/blocks/utils/zebraBanner.js.map +1 -0
  32. package/lib/chain/blocks/verifyBlock.js +18 -5
  33. package/lib/chain/blocks/verifyBlock.js.map +1 -1
  34. package/lib/chain/blocks/verifyBlocksDataAvailability.js +21 -10
  35. package/lib/chain/blocks/verifyBlocksDataAvailability.js.map +1 -1
  36. package/lib/chain/blocks/writeBlockInputToDb.js +63 -16
  37. package/lib/chain/blocks/writeBlockInputToDb.js.map +1 -1
  38. package/lib/chain/chain.d.ts +18 -101
  39. package/lib/chain/chain.js +110 -70
  40. package/lib/chain/chain.js.map +1 -1
  41. package/lib/chain/emitter.d.ts +18 -2
  42. package/lib/chain/emitter.js +13 -0
  43. package/lib/chain/emitter.js.map +1 -1
  44. package/lib/chain/errors/dataColumnSidecarError.d.ts +69 -0
  45. package/lib/chain/errors/dataColumnSidecarError.js +21 -0
  46. package/lib/chain/errors/dataColumnSidecarError.js.map +1 -0
  47. package/lib/chain/errors/index.d.ts +1 -0
  48. package/lib/chain/errors/index.js +1 -0
  49. package/lib/chain/errors/index.js.map +1 -1
  50. package/lib/chain/interface.d.ts +6 -7
  51. package/lib/chain/interface.js.map +1 -1
  52. package/lib/chain/options.d.ts +4 -1
  53. package/lib/chain/options.js +1 -0
  54. package/lib/chain/options.js.map +1 -1
  55. package/lib/chain/prepareNextSlot.js +2 -1
  56. package/lib/chain/prepareNextSlot.js.map +1 -1
  57. package/lib/chain/produceBlock/produceBlockBody.d.ts +30 -16
  58. package/lib/chain/produceBlock/produceBlockBody.js +28 -28
  59. package/lib/chain/produceBlock/produceBlockBody.js.map +1 -1
  60. package/lib/chain/produceBlock/validateBlobsAndKzgCommitments.d.ts +6 -3
  61. package/lib/chain/produceBlock/validateBlobsAndKzgCommitments.js +28 -4
  62. package/lib/chain/produceBlock/validateBlobsAndKzgCommitments.js.map +1 -1
  63. package/lib/chain/seenCache/seenGossipBlockInput.d.ts +64 -18
  64. package/lib/chain/seenCache/seenGossipBlockInput.js +321 -53
  65. package/lib/chain/seenCache/seenGossipBlockInput.js.map +1 -1
  66. package/lib/chain/validation/dataColumnSidecar.d.ts +29 -0
  67. package/lib/chain/validation/dataColumnSidecar.js +249 -0
  68. package/lib/chain/validation/dataColumnSidecar.js.map +1 -0
  69. package/lib/db/beacon.d.ts +3 -1
  70. package/lib/db/beacon.js +3 -1
  71. package/lib/db/beacon.js.map +1 -1
  72. package/lib/db/buckets.d.ts +3 -1
  73. package/lib/db/buckets.js +2 -0
  74. package/lib/db/buckets.js.map +1 -1
  75. package/lib/db/interface.d.ts +3 -1
  76. package/lib/db/repositories/dataColumnSidecar.d.ts +26 -0
  77. package/lib/db/repositories/dataColumnSidecar.js +39 -0
  78. package/lib/db/repositories/dataColumnSidecar.js.map +1 -0
  79. package/lib/db/repositories/dataColumnSidecarArchive.d.ts +24 -0
  80. package/lib/db/repositories/dataColumnSidecarArchive.js +39 -0
  81. package/lib/db/repositories/dataColumnSidecarArchive.js.map +1 -0
  82. package/lib/db/repositories/index.d.ts +2 -0
  83. package/lib/db/repositories/index.js +2 -0
  84. package/lib/db/repositories/index.js.map +1 -1
  85. package/lib/execution/builder/http.d.ts +20 -4
  86. package/lib/execution/builder/http.js +30 -11
  87. package/lib/execution/builder/http.js.map +1 -1
  88. package/lib/execution/builder/interface.d.ts +5 -4
  89. package/lib/execution/engine/http.d.ts +8 -5
  90. package/lib/execution/engine/http.js +56 -42
  91. package/lib/execution/engine/http.js.map +1 -1
  92. package/lib/execution/engine/interface.d.ts +6 -13
  93. package/lib/execution/engine/interface.js +1 -1
  94. package/lib/execution/engine/interface.js.map +1 -1
  95. package/lib/execution/engine/mock.d.ts +5 -1
  96. package/lib/execution/engine/mock.js +58 -15
  97. package/lib/execution/engine/mock.js.map +1 -1
  98. package/lib/execution/engine/types.d.ts +15 -5
  99. package/lib/execution/engine/types.js +8 -2
  100. package/lib/execution/engine/types.js.map +1 -1
  101. package/lib/metrics/metrics/beacon.d.ts +15 -5
  102. package/lib/metrics/metrics/beacon.js +61 -14
  103. package/lib/metrics/metrics/beacon.js.map +1 -1
  104. package/lib/metrics/metrics/lodestar.d.ts +29 -1
  105. package/lib/metrics/metrics/lodestar.js +59 -0
  106. package/lib/metrics/metrics/lodestar.js.map +1 -1
  107. package/lib/network/core/metrics.d.ts +10 -3
  108. package/lib/network/core/metrics.js +22 -4
  109. package/lib/network/core/metrics.js.map +1 -1
  110. package/lib/network/core/networkCore.d.ts +15 -4
  111. package/lib/network/core/networkCore.js +73 -23
  112. package/lib/network/core/networkCore.js.map +1 -1
  113. package/lib/network/core/networkCoreWorker.js +2 -0
  114. package/lib/network/core/networkCoreWorker.js.map +1 -1
  115. package/lib/network/core/networkCoreWorkerHandler.d.ts +5 -3
  116. package/lib/network/core/networkCoreWorkerHandler.js +6 -1
  117. package/lib/network/core/networkCoreWorkerHandler.js.map +1 -1
  118. package/lib/network/core/types.d.ts +7 -4
  119. package/lib/network/events.d.ts +4 -2
  120. package/lib/network/events.js.map +1 -1
  121. package/lib/network/gossip/gossipsub.d.ts +2 -2
  122. package/lib/network/gossip/gossipsub.js +8 -6
  123. package/lib/network/gossip/gossipsub.js.map +1 -1
  124. package/lib/network/gossip/interface.d.ts +8 -1
  125. package/lib/network/gossip/interface.js +1 -0
  126. package/lib/network/gossip/interface.js.map +1 -1
  127. package/lib/network/gossip/scoringParameters.d.ts +6 -2
  128. package/lib/network/gossip/scoringParameters.js.map +1 -1
  129. package/lib/network/gossip/topic.d.ts +2033 -1484
  130. package/lib/network/gossip/topic.js +29 -1
  131. package/lib/network/gossip/topic.js.map +1 -1
  132. package/lib/network/interface.d.ts +11 -3
  133. package/lib/network/metadata.d.ts +9 -5
  134. package/lib/network/metadata.js +26 -5
  135. package/lib/network/metadata.js.map +1 -1
  136. package/lib/network/network.d.ts +14 -4
  137. package/lib/network/network.js +73 -11
  138. package/lib/network/network.js.map +1 -1
  139. package/lib/network/networkConfig.d.ts +12 -0
  140. package/lib/network/networkConfig.js +2 -0
  141. package/lib/network/networkConfig.js.map +1 -0
  142. package/lib/network/options.d.ts +1 -0
  143. package/lib/network/options.js +5 -0
  144. package/lib/network/options.js.map +1 -1
  145. package/lib/network/peers/discover.d.ts +8 -3
  146. package/lib/network/peers/discover.js +99 -14
  147. package/lib/network/peers/discover.js.map +1 -1
  148. package/lib/network/peers/peerManager.d.ts +10 -4
  149. package/lib/network/peers/peerManager.js +105 -19
  150. package/lib/network/peers/peerManager.js.map +1 -1
  151. package/lib/network/peers/peersData.d.ts +17 -3
  152. package/lib/network/peers/peersData.js.map +1 -1
  153. package/lib/network/peers/score/interface.d.ts +1 -1
  154. package/lib/network/peers/score/score.d.ts +2 -2
  155. package/lib/network/peers/score/score.js +4 -1
  156. package/lib/network/peers/score/score.js.map +1 -1
  157. package/lib/network/peers/score/store.d.ts +3 -1
  158. package/lib/network/peers/score/store.js +6 -2
  159. package/lib/network/peers/score/store.js.map +1 -1
  160. package/lib/network/peers/utils/assertPeerRelevance.d.ts +7 -3
  161. package/lib/network/peers/utils/assertPeerRelevance.js +10 -1
  162. package/lib/network/peers/utils/assertPeerRelevance.js.map +1 -1
  163. package/lib/network/peers/utils/prioritizePeers.d.ts +19 -7
  164. package/lib/network/peers/utils/prioritizePeers.js +42 -6
  165. package/lib/network/peers/utils/prioritizePeers.js.map +1 -1
  166. package/lib/network/processor/extractSlotRootFns.js +8 -1
  167. package/lib/network/processor/extractSlotRootFns.js.map +1 -1
  168. package/lib/network/processor/gossipHandlers.js +165 -16
  169. package/lib/network/processor/gossipHandlers.js.map +1 -1
  170. package/lib/network/processor/gossipQueues/index.js +5 -0
  171. package/lib/network/processor/gossipQueues/index.js.map +1 -1
  172. package/lib/network/processor/index.js +1 -0
  173. package/lib/network/processor/index.js.map +1 -1
  174. package/lib/network/reqresp/ReqRespBeaconNode.d.ts +2 -2
  175. package/lib/network/reqresp/ReqRespBeaconNode.js +36 -14
  176. package/lib/network/reqresp/ReqRespBeaconNode.js.map +1 -1
  177. package/lib/network/reqresp/beaconBlocksMaybeBlobsByRange.d.ts +24 -4
  178. package/lib/network/reqresp/beaconBlocksMaybeBlobsByRange.js +259 -20
  179. package/lib/network/reqresp/beaconBlocksMaybeBlobsByRange.js.map +1 -1
  180. package/lib/network/reqresp/beaconBlocksMaybeBlobsByRoot.d.ts +37 -6
  181. package/lib/network/reqresp/beaconBlocksMaybeBlobsByRoot.js +283 -28
  182. package/lib/network/reqresp/beaconBlocksMaybeBlobsByRoot.js.map +1 -1
  183. package/lib/network/reqresp/handlers/beaconBlocksByRange.d.ts +1 -1
  184. package/lib/network/reqresp/handlers/beaconBlocksByRange.js +3 -3
  185. package/lib/network/reqresp/handlers/beaconBlocksByRange.js.map +1 -1
  186. package/lib/network/reqresp/handlers/beaconBlocksByRoot.d.ts +2 -2
  187. package/lib/network/reqresp/handlers/beaconBlocksByRoot.js.map +1 -1
  188. package/lib/network/reqresp/handlers/blobSidecarsByRange.d.ts +2 -2
  189. package/lib/network/reqresp/handlers/blobSidecarsByRange.js +2 -3
  190. package/lib/network/reqresp/handlers/blobSidecarsByRange.js.map +1 -1
  191. package/lib/network/reqresp/handlers/dataColumnSidecarsByRange.d.ts +8 -0
  192. package/lib/network/reqresp/handlers/dataColumnSidecarsByRange.js +73 -0
  193. package/lib/network/reqresp/handlers/dataColumnSidecarsByRange.js.map +1 -0
  194. package/lib/network/reqresp/handlers/dataColumnSidecarsByRoot.d.ts +6 -0
  195. package/lib/network/reqresp/handlers/dataColumnSidecarsByRoot.js +36 -0
  196. package/lib/network/reqresp/handlers/dataColumnSidecarsByRoot.js.map +1 -0
  197. package/lib/network/reqresp/handlers/index.js +13 -2
  198. package/lib/network/reqresp/handlers/index.js.map +1 -1
  199. package/lib/network/reqresp/protocols.d.ts +4 -0
  200. package/lib/network/reqresp/protocols.js +20 -0
  201. package/lib/network/reqresp/protocols.js.map +1 -1
  202. package/lib/network/reqresp/rateLimit.js +19 -3
  203. package/lib/network/reqresp/rateLimit.js.map +1 -1
  204. package/lib/network/reqresp/score.js +3 -0
  205. package/lib/network/reqresp/score.js.map +1 -1
  206. package/lib/network/reqresp/types.d.ts +13 -6
  207. package/lib/network/reqresp/types.js +14 -5
  208. package/lib/network/reqresp/types.js.map +1 -1
  209. package/lib/network/statusCache.d.ts +5 -5
  210. package/lib/network/statusCache.js.map +1 -1
  211. package/lib/network/subnets/interface.d.ts +3 -0
  212. package/lib/network/subnets/interface.js +14 -1
  213. package/lib/network/subnets/interface.js.map +1 -1
  214. package/lib/network/subnets/syncnetsService.js +4 -5
  215. package/lib/network/subnets/syncnetsService.js.map +1 -1
  216. package/lib/node/nodejs.js +1 -0
  217. package/lib/node/nodejs.js.map +1 -1
  218. package/lib/sync/constants.d.ts +18 -3
  219. package/lib/sync/constants.js +21 -3
  220. package/lib/sync/constants.js.map +1 -1
  221. package/lib/sync/interface.d.ts +2 -2
  222. package/lib/sync/interface.js +1 -1
  223. package/lib/sync/interface.js.map +1 -1
  224. package/lib/sync/range/batch.d.ts +17 -2
  225. package/lib/sync/range/batch.js +39 -7
  226. package/lib/sync/range/batch.js.map +1 -1
  227. package/lib/sync/range/chain.d.ts +15 -1
  228. package/lib/sync/range/chain.js +124 -33
  229. package/lib/sync/range/chain.js.map +1 -1
  230. package/lib/sync/range/range.d.ts +3 -2
  231. package/lib/sync/range/range.js +9 -3
  232. package/lib/sync/range/range.js.map +1 -1
  233. package/lib/sync/range/utils/chainTarget.d.ts +5 -1
  234. package/lib/sync/range/utils/chainTarget.js +26 -1
  235. package/lib/sync/range/utils/chainTarget.js.map +1 -1
  236. package/lib/sync/range/utils/peerBalancer.d.ts +19 -5
  237. package/lib/sync/range/utils/peerBalancer.js +104 -10
  238. package/lib/sync/range/utils/peerBalancer.js.map +1 -1
  239. package/lib/sync/sync.js +1 -1
  240. package/lib/sync/sync.js.map +1 -1
  241. package/lib/sync/unknownBlock.d.ts +54 -5
  242. package/lib/sync/unknownBlock.js +321 -61
  243. package/lib/sync/unknownBlock.js.map +1 -1
  244. package/lib/sync/utils/remoteSyncType.d.ts +4 -4
  245. package/lib/sync/utils/remoteSyncType.js.map +1 -1
  246. package/lib/util/blobs.d.ts +16 -4
  247. package/lib/util/blobs.js +122 -5
  248. package/lib/util/blobs.js.map +1 -1
  249. package/lib/util/dataColumns.d.ts +137 -0
  250. package/lib/util/dataColumns.js +358 -0
  251. package/lib/util/dataColumns.js.map +1 -0
  252. package/lib/util/metadata.d.ts +5 -0
  253. package/lib/util/metadata.js +10 -0
  254. package/lib/util/metadata.js.map +1 -1
  255. package/lib/util/sszBytes.d.ts +1 -0
  256. package/lib/util/sszBytes.js +17 -0
  257. package/lib/util/sszBytes.js.map +1 -1
  258. package/lib/util/types.d.ts +7 -0
  259. package/lib/util/types.js +3 -0
  260. package/lib/util/types.js.map +1 -1
  261. package/package.json +18 -18
  262. package/lib/network/reqresp/handlers/status.d.ts +0 -4
  263. package/lib/network/reqresp/handlers/status.js +0 -11
  264. package/lib/network/reqresp/handlers/status.js.map +0 -1
@@ -1,7 +1,7 @@
1
1
  import { WireFormat } from "@lodestar/api";
2
2
  import { getClient } from "@lodestar/api/builder";
3
3
  import { SLOTS_PER_EPOCH } from "@lodestar/params";
4
- import { parseExecutionPayloadAndBlobsBundle, reconstructFullBlockOrContents } from "@lodestar/state-transition";
4
+ import { parseExecutionPayloadAndBlobsBundle, reconstructSignedBlockContents } from "@lodestar/state-transition";
5
5
  import { toPrintableUrl } from "@lodestar/utils";
6
6
  import { ValidatorRegistrationCache } from "./cache.js";
7
7
  export const defaultExecutionBuilderHttpOpts = {
@@ -9,6 +9,23 @@ export const defaultExecutionBuilderHttpOpts = {
9
9
  url: "http://localhost:8661",
10
10
  timeout: 12000,
11
11
  };
12
+ export var BuilderStatus;
13
+ (function (BuilderStatus) {
14
+ /**
15
+ * Builder is enabled and operational
16
+ */
17
+ BuilderStatus["enabled"] = "enabled";
18
+ /**
19
+ * Builder is disabled due to failed status check
20
+ */
21
+ BuilderStatus["disabled"] = "disabled";
22
+ /**
23
+ * Circuit breaker condition that is triggered when the node determines the chain is unhealthy.
24
+ * When the circuit breaker is fired, proposers **MUST** not utilize the external builder
25
+ * network and exclusively build locally.
26
+ */
27
+ BuilderStatus["circuitBreaker"] = "circuit_breaker";
28
+ })(BuilderStatus || (BuilderStatus = {}));
12
29
  /**
13
30
  * Expected error if builder does not provide a bid. Most of the time, this
14
31
  * is due to `min-bid` setting on the mev-boost side but in rare cases could
@@ -32,7 +49,7 @@ const BUILDER_PROPOSAL_DELAY_TOLERANCE = 1000 + EVENT_LOOP_LAG_BUFFER;
32
49
  export class ExecutionBuilderHttp {
33
50
  constructor(opts, config, metrics = null, logger) {
34
51
  // Builder needs to be explicity enabled using updateStatus
35
- this.status = false;
52
+ this.status = BuilderStatus.disabled;
36
53
  /**
37
54
  * Determine if SSZ is supported by requesting an SSZ encoded response in the `getHeader` request.
38
55
  * The builder responding with a SSZ serialized `SignedBuilderBid` indicates support to handle the
@@ -57,24 +74,26 @@ export class ExecutionBuilderHttp {
57
74
  * Beacon clients select randomized values from the following ranges when initializing
58
75
  * the circuit breaker (so at boot time and once for each unique boot).
59
76
  *
60
- * ALLOWED_FAULTS: between 1 and SLOTS_PER_EPOCH // 2
77
+ * ALLOWED_FAULTS: between 1 and SLOTS_PER_EPOCH // 4
61
78
  * FAULT_INSPECTION_WINDOW: between SLOTS_PER_EPOCH and 2 * SLOTS_PER_EPOCH
62
79
  *
63
80
  */
64
81
  this.faultInspectionWindow = Math.max(opts.faultInspectionWindow ?? SLOTS_PER_EPOCH + Math.floor(Math.random() * SLOTS_PER_EPOCH), SLOTS_PER_EPOCH);
65
- // allowedFaults should be < faultInspectionWindow, limiting them to faultInspectionWindow/2
66
- this.allowedFaults = Math.min(opts.allowedFaults ?? Math.floor(this.faultInspectionWindow / 2), Math.floor(this.faultInspectionWindow / 2));
82
+ // allowedFaults should be < faultInspectionWindow, limiting them to faultInspectionWindow/4
83
+ this.allowedFaults = Math.min(opts.allowedFaults ?? Math.floor(this.faultInspectionWindow / 4), Math.floor(this.faultInspectionWindow / 4));
67
84
  }
68
- updateStatus(shouldEnable) {
69
- this.status = shouldEnable;
85
+ updateStatus(status) {
86
+ this.status = status;
70
87
  }
71
88
  async checkStatus() {
72
89
  try {
73
90
  (await this.api.status()).assertOk();
74
91
  }
75
92
  catch (e) {
76
- // Disable if the status was enabled
77
- this.status = false;
93
+ if (this.status === BuilderStatus.enabled) {
94
+ // Disable if the status was enabled
95
+ this.status = BuilderStatus.disabled;
96
+ }
78
97
  throw e;
79
98
  }
80
99
  }
@@ -108,8 +127,8 @@ export class ExecutionBuilderHttp {
108
127
  // invalid signature, but there is no recourse to this anyway so lets just proceed and will
109
128
  // probably need diagonis if this block turns out to be invalid because of some bug
110
129
  //
111
- const contents = blobsBundle ? { blobs: blobsBundle.blobs, kzgProofs: blobsBundle.proofs } : null;
112
- return reconstructFullBlockOrContents(signedBlindedBlock.data, { executionPayload, contents });
130
+ const fork = this.config.getForkName(signedBlindedBlock.data.message.slot);
131
+ return reconstructSignedBlockContents(fork, signedBlindedBlock.data, executionPayload, blobsBundle);
113
132
  }
114
133
  async submitBlindedBlockNoResponse(signedBlindedBlock) {
115
134
  (await this.api.submitBlindedBlockV2({ signedBlindedBlock }, { retries: 2, requestWireFormat: this.sszSupported ? WireFormat.ssz : WireFormat.json })).assertOk();
@@ -1 +1 @@
1
- {"version":3,"file":"http.js","sourceRoot":"","sources":["../../../src/execution/builder/http.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"http.js","sourceRoot":"","sources":["../../../src/execution/builder/http.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,7 @@
1
1
  import { ForkPostBellatrix } from "@lodestar/params";
2
- import { BLSPubkey, Epoch, ExecutionPayloadHeader, Root, SignedBeaconBlockOrContents, SignedBlindedBeaconBlock, Slot, Wei, WithOptionalBytes, bellatrix, deneb, electra } from "@lodestar/types";
2
+ import { BLSPubkey, Epoch, ExecutionPayloadHeader, Root, SignedBlindedBeaconBlock, SignedBlockContents, Slot, Wei, WithOptionalBytes, bellatrix, deneb, electra } from "@lodestar/types";
3
3
  import { ValidatorRegistration } from "./cache.js";
4
+ import { BuilderStatus } from "./http.js";
4
5
  export interface IExecutionBuilder {
5
6
  /**
6
7
  * This param is only to for testing scripts using merge-mock which need
@@ -8,12 +9,12 @@ export interface IExecutionBuilder {
8
9
  * fetch
9
10
  */
10
11
  readonly issueLocalFcUWithFeeRecipient?: string;
11
- status: boolean;
12
+ status: BuilderStatus;
12
13
  /** Window to inspect missed slots for enabling/disabling builder circuit breaker */
13
14
  faultInspectionWindow: number;
14
15
  /** Number of missed slots allowed in the faultInspectionWindow for builder circuit*/
15
16
  allowedFaults: number;
16
- updateStatus(shouldEnable: boolean): void;
17
+ updateStatus(status: BuilderStatus): void;
17
18
  checkStatus(): Promise<void>;
18
19
  registerValidator(epoch: Epoch, registrations: bellatrix.SignedValidatorRegistrationV1[]): Promise<void>;
19
20
  getValidatorRegistration(pubkey: BLSPubkey): ValidatorRegistration | undefined;
@@ -23,7 +24,7 @@ export interface IExecutionBuilder {
23
24
  blobKzgCommitments?: deneb.BlobKzgCommitments;
24
25
  executionRequests?: electra.ExecutionRequests;
25
26
  }>;
26
- submitBlindedBlock(signedBlindedBlock: WithOptionalBytes<SignedBlindedBeaconBlock>): Promise<SignedBeaconBlockOrContents>;
27
+ submitBlindedBlock(signedBlindedBlock: WithOptionalBytes<SignedBlindedBeaconBlock>): Promise<SignedBlockContents>;
27
28
  submitBlindedBlockNoResponse(signedBlindedBlock: WithOptionalBytes<SignedBlindedBeaconBlock>): Promise<void>;
28
29
  }
29
30
  //# sourceMappingURL=interface.d.ts.map
@@ -1,10 +1,11 @@
1
1
  import { Logger } from "@lodestar/logger";
2
- import { ForkName } from "@lodestar/params";
3
- import { ExecutionPayload, ExecutionRequests, Root, RootHex, Wei } from "@lodestar/types";
2
+ import { ForkName, ForkPostFulu, ForkPreFulu } from "@lodestar/params";
3
+ import { BlobsBundle, ExecutionPayload, ExecutionRequests, Root, RootHex, Wei } from "@lodestar/types";
4
4
  import { BlobAndProof } from "@lodestar/types/deneb";
5
+ import { BlobAndProofV2 } from "@lodestar/types/fulu";
5
6
  import { IJsonRpcHttpClient } from "../../eth1/provider/jsonRpcHttpClient.js";
6
7
  import { Metrics } from "../../metrics/index.js";
7
- import { BlobsBundle, ClientVersion, ExecutePayloadResponse, ExecutionEngineState, IExecutionEngine, PayloadAttributes, PayloadId, VersionedHashes } from "./interface.js";
8
+ import { ClientVersion, ExecutePayloadResponse, ExecutionEngineState, IExecutionEngine, PayloadAttributes, PayloadId, VersionedHashes } from "./interface.js";
8
9
  import { PayloadIdCache } from "./payloadIdCache.js";
9
10
  import { ExecutionPayloadBody } from "./types.js";
10
11
  export type ExecutionEngineModules = {
@@ -55,7 +56,6 @@ export declare class ExecutionEngineHttp implements IExecutionEngine {
55
56
  private readonly rpc;
56
57
  private readonly opts?;
57
58
  private logger;
58
- private lastGetBlobsErrorTime;
59
59
  state: ExecutionEngineState;
60
60
  /** Cached EL client version from the latest getClientVersion call */
61
61
  clientVersion?: ClientVersion | null;
@@ -146,7 +146,10 @@ export declare class ExecutionEngineHttp implements IExecutionEngine {
146
146
  prunePayloadIdCache(): Promise<void>;
147
147
  getPayloadBodiesByHash(_fork: ForkName, blockHashes: RootHex[]): Promise<(ExecutionPayloadBody | null)[]>;
148
148
  getPayloadBodiesByRange(_fork: ForkName, startBlockNumber: number, blockCount: number): Promise<(ExecutionPayloadBody | null)[]>;
149
- getBlobs(_fork: ForkName, versionedHashes: VersionedHashes): Promise<(BlobAndProof | null)[]>;
149
+ getBlobs(fork: ForkPostFulu, versionedHashes: VersionedHashes): Promise<BlobAndProofV2[] | null>;
150
+ getBlobs(fork: ForkPreFulu, versionedHashes: VersionedHashes): Promise<(BlobAndProof | null)[]>;
151
+ private getBlobsV1;
152
+ private getBlobsV2;
150
153
  private getClientVersion;
151
154
  private updateEngineState;
152
155
  }
@@ -1,13 +1,13 @@
1
- import { ForkSeq, SLOTS_PER_EPOCH } from "@lodestar/params";
1
+ import { ForkName, ForkSeq, SLOTS_PER_EPOCH, isForkPostFulu } from "@lodestar/params";
2
2
  import { strip0xPrefix } from "@lodestar/utils";
3
- import { ErrorJsonRpcResponse, HttpRpcError, JsonRpcHttpClientEvent, parseJsonRpcErrorCode, } from "../../eth1/provider/jsonRpcHttpClient.js";
3
+ import { ErrorJsonRpcResponse, HttpRpcError, JsonRpcHttpClientEvent, } from "../../eth1/provider/jsonRpcHttpClient.js";
4
4
  import { bytesToData, numToQuantity } from "../../eth1/provider/utils.js";
5
5
  import { EPOCHS_PER_BATCH } from "../../sync/constants.js";
6
6
  import { getLodestarClientVersion } from "../../util/metadata.js";
7
7
  import { JobItemQueue } from "../../util/queue/index.js";
8
8
  import { ClientCode, ExecutionEngineState, ExecutionPayloadStatus, } from "./interface.js";
9
9
  import { PayloadIdCache } from "./payloadIdCache.js";
10
- import { assertReqSizeLimit, deserializeBlobAndProofs, deserializeExecutionPayloadBody, parseExecutionPayload, serializeBeaconBlockRoot, serializeExecutionPayload, serializeExecutionRequests, serializePayloadAttributes, serializeVersionedHashes, } from "./types.js";
10
+ import { assertReqSizeLimit, deserializeBlobAndProofs, deserializeBlobAndProofsV2, deserializeExecutionPayloadBody, parseExecutionPayload, serializeBeaconBlockRoot, serializeExecutionPayload, serializeExecutionRequests, serializePayloadAttributes, serializeVersionedHashes, } from "./types.js";
11
11
  import { getExecutionEngineState } from "./utils.js";
12
12
  export const defaultExecutionEngineHttpOpts = {
13
13
  /**
@@ -25,6 +25,12 @@ export const defaultExecutionEngineHttpOpts = {
25
25
  * EPOCHS_PER_BATCH * 2 in case new payloads are also not awaited serially
26
26
  */
27
27
  const QUEUE_MAX_LENGTH = EPOCHS_PER_BATCH * SLOTS_PER_EPOCH * 2;
28
+ /**
29
+ * Maximum number of version hashes that can be sent in a getBlobs request
30
+ * Clients must support at least 128 versionedHashes, so we avoid sending more
31
+ * https://github.com/ethereum/execution-apis/blob/main/src/engine/cancun.md#specification-3
32
+ */
33
+ const MAX_VERSIONED_HASHES = 128;
28
34
  // Define static options once to prevent extra allocations
29
35
  const notifyNewPayloadOpts = { routeId: "notifyNewPayload" };
30
36
  const forkchoiceUpdatedV1Opts = { routeId: "forkchoiceUpdated" };
@@ -42,7 +48,6 @@ export class ExecutionEngineHttp {
42
48
  constructor(rpc, { metrics, signal, logger }, opts) {
43
49
  this.rpc = rpc;
44
50
  this.opts = opts;
45
- this.lastGetBlobsErrorTime = 0;
46
51
  // The default state is ONLINE, it will be updated to SYNCING once we receive the first payload
47
52
  // This assumption is better than the OFFLINE state, since we can't be sure if the EL is offline and being offline may trigger some notifications
48
53
  // It's safer to to avoid false positives and assume that the EL is syncing until we receive the first payload
@@ -257,13 +262,26 @@ export class ExecutionEngineHttp {
257
262
  * 3. Client software MAY stop the corresponding building process after serving this call.
258
263
  */
259
264
  async getPayload(fork, payloadId) {
260
- const method = ForkSeq[fork] >= ForkSeq.electra
261
- ? "engine_getPayloadV4"
262
- : ForkSeq[fork] >= ForkSeq.deneb
263
- ? "engine_getPayloadV3"
264
- : ForkSeq[fork] >= ForkSeq.capella
265
- ? "engine_getPayloadV2"
266
- : "engine_getPayloadV1";
265
+ let method;
266
+ switch (fork) {
267
+ case ForkName.phase0:
268
+ case ForkName.altair:
269
+ case ForkName.bellatrix:
270
+ method = "engine_getPayloadV1";
271
+ break;
272
+ case ForkName.capella:
273
+ method = "engine_getPayloadV2";
274
+ break;
275
+ case ForkName.deneb:
276
+ method = "engine_getPayloadV3";
277
+ break;
278
+ case ForkName.electra:
279
+ method = "engine_getPayloadV4";
280
+ break;
281
+ default:
282
+ method = "engine_getPayloadV5";
283
+ break;
284
+ }
267
285
  const payloadResponse = await this.rpc.fetchWithRetries({
268
286
  method,
269
287
  params: [payloadId],
@@ -287,45 +305,41 @@ export class ExecutionEngineHttp {
287
305
  const response = await this.rpc.fetchWithRetries({ method, params: [start, count] });
288
306
  return response.map(deserializeExecutionPayloadBody);
289
307
  }
290
- async getBlobs(_fork, versionedHashes) {
291
- // retry only after a day may be
292
- const GETBLOBS_RETRY_TIMEOUT = 256 * 32 * 12;
293
- const timeNow = Date.now() / 1000;
294
- const timeSinceLastFail = timeNow - this.lastGetBlobsErrorTime;
295
- if (timeSinceLastFail < GETBLOBS_RETRY_TIMEOUT) {
296
- // do not try getblobs since it might not be available
297
- this.logger.debug(`disabled engine_getBlobsV1 api call since last failed < GETBLOBS_RETRY_TIMEOUT=${GETBLOBS_RETRY_TIMEOUT}`, timeSinceLastFail);
298
- throw Error(`engine_getBlobsV1 call recently failed timeSinceLastFail=${timeSinceLastFail} < GETBLOBS_RETRY_TIMEOUT=${GETBLOBS_RETRY_TIMEOUT}`);
299
- }
300
- const method = "engine_getBlobsV1";
301
- assertReqSizeLimit(versionedHashes.length, 128);
308
+ async getBlobs(fork, versionedHashes) {
309
+ assertReqSizeLimit(versionedHashes.length, MAX_VERSIONED_HASHES);
302
310
  const versionedHashesHex = versionedHashes.map(bytesToData);
303
- let response = await this.rpc
304
- .fetchWithRetries({
305
- method,
311
+ if (isForkPostFulu(fork)) {
312
+ return await this.getBlobsV2(versionedHashesHex);
313
+ }
314
+ return await this.getBlobsV1(versionedHashesHex);
315
+ }
316
+ async getBlobsV1(versionedHashesHex) {
317
+ const response = await this.rpc.fetchWithRetries({
318
+ method: "engine_getBlobsV1",
306
319
  params: [versionedHashesHex],
307
- })
308
- .catch((e) => {
309
- if (e instanceof ErrorJsonRpcResponse && parseJsonRpcErrorCode(e.response.error.code) === "Method not found") {
310
- this.lastGetBlobsErrorTime = timeNow;
311
- this.logger.debug("disabling engine_getBlobsV1 api call since engine responded with method not availeble", {
312
- retryTimeout: GETBLOBS_RETRY_TIMEOUT,
313
- });
314
- }
315
- throw e;
316
320
  });
317
- // handle nethermind buggy response
318
- // see: https://discord.com/channels/595666850260713488/1293605631785304088/1298956894274060301
319
- if (response.blobsAndProofs !== undefined) {
320
- response = response.blobsAndProofs;
321
- }
322
- if (response.length !== versionedHashes.length) {
323
- const error = `Invalid engine_getBlobsV1 response length=${response.length} versionedHashes=${versionedHashes.length}`;
321
+ const invalidLength = response.length !== versionedHashesHex.length;
322
+ if (invalidLength) {
323
+ const error = `Invalid engine_getBlobsV1 response length=${response.length} versionedHashes=${versionedHashesHex.length}`;
324
324
  this.logger.error(error);
325
325
  throw Error(error);
326
326
  }
327
327
  return response.map(deserializeBlobAndProofs);
328
328
  }
329
+ async getBlobsV2(versionedHashesHex) {
330
+ const response = await this.rpc.fetchWithRetries({
331
+ method: "engine_getBlobsV2",
332
+ params: [versionedHashesHex],
333
+ });
334
+ // engine_getBlobsV2 does not return partial responses. It returns null if any blob is not found
335
+ const invalidLength = !!response && response.length !== versionedHashesHex.length;
336
+ if (invalidLength) {
337
+ const error = `Invalid engine_getBlobsV2 response length=${response?.length ?? "null"} versionedHashes=${versionedHashesHex.length}`;
338
+ this.logger.error(error);
339
+ throw Error(error);
340
+ }
341
+ return !response ? null : response.map(deserializeBlobAndProofsV2);
342
+ }
329
343
  async getClientVersion(clientVersion) {
330
344
  const method = "engine_getClientVersionV1";
331
345
  const response = await this.rpc.fetchWithRetries({ method, params: [{ ...clientVersion, commit: `0x${clientVersion.commit}` }] });
@@ -1 +1 @@
1
- {"version":3,"file":"http.js","sourceRoot":"","sources":["../../../src/execution/engine/http.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"http.js","sourceRoot":"","sources":["../../../src/execution/engine/http.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,7 @@
1
- import { CONSOLIDATION_REQUEST_TYPE, DEPOSIT_REQUEST_TYPE, ForkName, WITHDRAWAL_REQUEST_TYPE } from "@lodestar/params";
2
- import { ExecutionPayload, ExecutionRequests, Root, RootHex, Wei, capella } from "@lodestar/types";
3
- import { Blob, BlobAndProof, KZGCommitment, KZGProof } from "@lodestar/types/deneb";
1
+ import { CONSOLIDATION_REQUEST_TYPE, DEPOSIT_REQUEST_TYPE, ForkName, ForkPostFulu, ForkPreFulu, WITHDRAWAL_REQUEST_TYPE } from "@lodestar/params";
2
+ import { BlobsBundle, ExecutionPayload, ExecutionRequests, Root, RootHex, Wei, capella } from "@lodestar/types";
3
+ import { BlobAndProof } from "@lodestar/types/deneb";
4
+ import { BlobAndProofV2 } from "@lodestar/types/fulu";
4
5
  import { DATA } from "../../eth1/provider/utils.js";
5
6
  import { PayloadId, PayloadIdCache, WithdrawalV1 } from "./payloadIdCache.js";
6
7
  import { ExecutionPayloadBody } from "./types.js";
@@ -79,15 +80,6 @@ export type PayloadAttributes = {
79
80
  withdrawals?: capella.Withdrawal[];
80
81
  parentBeaconBlockRoot?: Uint8Array;
81
82
  };
82
- export type BlobsBundle = {
83
- /**
84
- * Execution payload `blockHash` for the caller to sanity-check the consistency with the `engine_getPayload` call
85
- * https://github.com/protolambda/execution-apis/blob/bf44a8d08ab34b861ef97fa9ef5c5e7806194547/src/engine/blob-extension.md?plain=1#L49
86
- */
87
- commitments: KZGCommitment[];
88
- blobs: Blob[];
89
- proofs: KZGProof[];
90
- };
91
83
  export type ClientVersion = {
92
84
  code: ClientCode;
93
85
  name: string;
@@ -144,6 +136,7 @@ export interface IExecutionEngine {
144
136
  }>;
145
137
  getPayloadBodiesByHash(fork: ForkName, blockHash: DATA[]): Promise<(ExecutionPayloadBody | null)[]>;
146
138
  getPayloadBodiesByRange(fork: ForkName, start: number, count: number): Promise<(ExecutionPayloadBody | null)[]>;
147
- getBlobs(fork: ForkName, versionedHashes: VersionedHashes): Promise<(BlobAndProof | null)[]>;
139
+ getBlobs(fork: ForkPostFulu, versionedHashes: VersionedHashes): Promise<BlobAndProofV2[] | null>;
140
+ getBlobs(fork: ForkPreFulu, versionedHashes: VersionedHashes): Promise<(BlobAndProof | null)[]>;
148
141
  }
149
142
  //# sourceMappingURL=interface.d.ts.map
@@ -1,4 +1,4 @@
1
- import { CONSOLIDATION_REQUEST_TYPE, DEPOSIT_REQUEST_TYPE, WITHDRAWAL_REQUEST_TYPE } from "@lodestar/params";
1
+ import { CONSOLIDATION_REQUEST_TYPE, DEPOSIT_REQUEST_TYPE, WITHDRAWAL_REQUEST_TYPE, } from "@lodestar/params";
2
2
  import { PayloadIdCache } from "./payloadIdCache.js";
3
3
  export { PayloadIdCache };
4
4
  export var ExecutionPayloadStatus;
@@ -1 +1 @@
1
- {"version":3,"file":"interface.js","sourceRoot":"","sources":["../../../src/execution/engine/interface.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,0BAA0B,EAAE,oBAAoB,EAAY,uBAAuB,EAAC,MAAM,kBAAkB,CAAC;AAKrH,OAAO,EAAY,cAAc,EAAe,MAAM,qBAAqB,CAAC;AAG5E,OAAO,EAAC,cAAc,EAAoC,CAAC;AAE3D,MAAM,CAAN,IAAY,sBAoBX;AApBD,WAAY,sBAAsB;IAChC,6BAA6B;IAC7B,yCAAe,CAAA;IACf,+BAA+B;IAC/B,6CAAmB,CAAA;IACnB,kCAAkC;IAClC,6CAAmB,CAAA;IACnB;;;OAGG;IACH,+CAAqB,CAAA;IACrB,2BAA2B;IAC3B,mEAAyC,CAAA;IACzC,eAAe;IACf,6CAAmB,CAAA;IACnB,qBAAqB;IACrB,qDAA2B,CAAA;IAC3B,wFAAwF;IACxF,+EAAqD,CAAA;AACvD,CAAC,EApBW,sBAAsB,KAAtB,sBAAsB,QAoBjC;AAED,MAAM,CAAN,IAAY,oBAMX;AAND,WAAY,oBAAoB;IAC9B,yCAAiB,CAAA;IACjB,2CAAmB,CAAA;IACnB,2CAAmB,CAAA;IACnB,yCAAiB,CAAA;IACjB,mDAA2B,CAAA;AAC7B,CAAC,EANW,oBAAoB,KAApB,oBAAoB,QAM/B;AAED;;;GAGG;AACH,MAAM,CAAN,IAAY,UAcX;AAdD,WAAY,UAAU;IACpB,uBAAS,CAAA;IACT,uBAAS,CAAA;IACT,uBAAS,CAAA;IACT,uBAAS,CAAA;IACT,uBAAS,CAAA;IACT,uBAAS,CAAA;IACT,uBAAS,CAAA;IACT,uBAAS,CAAA;IACT,uBAAS,CAAA;IACT,uBAAS,CAAA;IACT,uBAAS,CAAA;IACT,uBAAS,CAAA;IACT,uBAAS,CAAA;AACX,CAAC,EAdW,UAAU,KAAV,UAAU,QAcrB;AAOD,MAAM,UAAU,sBAAsB,CAAC,IAAY;IACjD,OAAO,IAAI,KAAK,oBAAoB,IAAI,IAAI,KAAK,uBAAuB,IAAI,IAAI,KAAK,0BAA0B,CAAC;AAClH,CAAC"}
1
+ {"version":3,"file":"interface.js","sourceRoot":"","sources":["../../../src/execution/engine/interface.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,0BAA0B,EAC1B,oBAAoB,EAIpB,uBAAuB,GACxB,MAAM,kBAAkB,CAAC;AAM1B,OAAO,EAAY,cAAc,EAAe,MAAM,qBAAqB,CAAC;AAG5E,OAAO,EAAC,cAAc,EAAoC,CAAC;AAE3D,MAAM,CAAN,IAAY,sBAoBX;AApBD,WAAY,sBAAsB;IAChC,6BAA6B;IAC7B,yCAAe,CAAA;IACf,+BAA+B;IAC/B,6CAAmB,CAAA;IACnB,kCAAkC;IAClC,6CAAmB,CAAA;IACnB;;;OAGG;IACH,+CAAqB,CAAA;IACrB,2BAA2B;IAC3B,mEAAyC,CAAA;IACzC,eAAe;IACf,6CAAmB,CAAA;IACnB,qBAAqB;IACrB,qDAA2B,CAAA;IAC3B,wFAAwF;IACxF,+EAAqD,CAAA;AACvD,CAAC,EApBW,sBAAsB,KAAtB,sBAAsB,QAoBjC;AAED,MAAM,CAAN,IAAY,oBAMX;AAND,WAAY,oBAAoB;IAC9B,yCAAiB,CAAA;IACjB,2CAAmB,CAAA;IACnB,2CAAmB,CAAA;IACnB,yCAAiB,CAAA;IACjB,mDAA2B,CAAA;AAC7B,CAAC,EANW,oBAAoB,KAApB,oBAAoB,QAM/B;AAED;;;GAGG;AACH,MAAM,CAAN,IAAY,UAcX;AAdD,WAAY,UAAU;IACpB,uBAAS,CAAA;IACT,uBAAS,CAAA;IACT,uBAAS,CAAA;IACT,uBAAS,CAAA;IACT,uBAAS,CAAA;IACT,uBAAS,CAAA;IACT,uBAAS,CAAA;IACT,uBAAS,CAAA;IACT,uBAAS,CAAA;IACT,uBAAS,CAAA;IACT,uBAAS,CAAA;IACT,uBAAS,CAAA;IACT,uBAAS,CAAA;AACX,CAAC,EAdW,UAAU,KAAV,UAAU,QAcrB;AAOD,MAAM,UAAU,sBAAsB,CAAC,IAAY;IACjD,OAAO,IAAI,KAAK,oBAAoB,IAAI,IAAI,KAAK,uBAAuB,IAAI,IAAI,KAAK,0BAA0B,CAAC;AAClH,CAAC"}
@@ -4,10 +4,12 @@ import { EngineApiRpcParamTypes, EngineApiRpcReturnTypes, PayloadStatus } from "
4
4
  import { JsonRpcBackend } from "./utils.js";
5
5
  export type ExecutionEngineMockOpts = {
6
6
  genesisBlockHash: string;
7
+ eth1BlockHash?: string;
7
8
  onlyPredefinedResponses?: boolean;
8
9
  capellaForkTimestamp?: number;
9
10
  denebForkTimestamp?: number;
10
11
  electraForkTimestamp?: number;
12
+ fuluForkTimestamp?: number;
11
13
  };
12
14
  /**
13
15
  * Mock ExecutionEngine for fast prototyping and unit testing
@@ -54,9 +56,11 @@ export declare class ExecutionEngineMockBackend implements JsonRpcBackend {
54
56
  * 2. The call MUST be responded with 5: Unavailable payload error if the building process identified by the payloadId doesn't exist.
55
57
  * 3. Client software MAY stop the corresponding building process after serving this call.
56
58
  */
57
- private getPayload;
59
+ private getPayloadV1;
60
+ private getPayloadV5;
58
61
  private getClientVersionV1;
59
62
  private getBlobs;
63
+ private getBlobsV2;
60
64
  private timestampToFork;
61
65
  }
62
66
  //# sourceMappingURL=mock.d.ts.map
@@ -1,13 +1,14 @@
1
1
  import crypto from "node:crypto";
2
2
  import { BLOB_TX_TYPE, BYTES_PER_FIELD_ELEMENT, FIELD_ELEMENTS_PER_BLOB, ForkName, ForkSeq, } from "@lodestar/params";
3
3
  import { ssz } from "@lodestar/types";
4
- import { fromHex, toHex } from "@lodestar/utils";
4
+ import { fromHex, toHex, toRootHex } from "@lodestar/utils";
5
5
  import { ZERO_HASH_HEX } from "../../constants/index.js";
6
6
  import { quantityToNum } from "../../eth1/provider/utils.js";
7
+ import { INTEROP_BLOCK_HASH } from "../../node/utils/interop/state.js";
7
8
  import { kzgCommitmentToVersionedHash } from "../../util/blobs.js";
8
9
  import { kzg } from "../../util/kzg.js";
9
10
  import { ClientCode, ExecutionPayloadStatus, PayloadIdCache } from "./interface.js";
10
- import { deserializePayloadAttributes, serializeBlobsBundle, serializeExecutionPayload, } from "./types.js";
11
+ import { deserializePayloadAttributes, serializeBlobsBundle, serializeExecutionPayload, serializeExecutionRequests, } from "./types.js";
11
12
  const INTEROP_GAS_LIMIT = 30e6;
12
13
  const PRUNE_PAYLOAD_ID_AFTER_MS = 5000;
13
14
  const TX_TYPE_EIP1559 = 2;
@@ -35,6 +36,13 @@ export class ExecutionEngineMockBackend {
35
36
  timestamp: 0,
36
37
  blockNumber: 0,
37
38
  });
39
+ const eth1BlockHash = opts.eth1BlockHash ?? toRootHex(INTEROP_BLOCK_HASH);
40
+ this.validBlocks.set(eth1BlockHash, {
41
+ parentHash: ZERO_HASH_HEX,
42
+ blockHash: eth1BlockHash,
43
+ timestamp: 0,
44
+ blockNumber: 1,
45
+ });
38
46
  this.handlers = {
39
47
  engine_newPayloadV1: this.notifyNewPayload.bind(this),
40
48
  engine_newPayloadV2: this.notifyNewPayload.bind(this),
@@ -43,14 +51,16 @@ export class ExecutionEngineMockBackend {
43
51
  engine_forkchoiceUpdatedV1: this.notifyForkchoiceUpdate.bind(this),
44
52
  engine_forkchoiceUpdatedV2: this.notifyForkchoiceUpdate.bind(this),
45
53
  engine_forkchoiceUpdatedV3: this.notifyForkchoiceUpdate.bind(this),
46
- engine_getPayloadV1: this.getPayload.bind(this),
47
- engine_getPayloadV2: this.getPayload.bind(this),
48
- engine_getPayloadV3: this.getPayload.bind(this),
49
- engine_getPayloadV4: this.getPayload.bind(this),
54
+ engine_getPayloadV1: this.getPayloadV1.bind(this),
55
+ engine_getPayloadV2: this.getPayloadV5.bind(this),
56
+ engine_getPayloadV3: this.getPayloadV5.bind(this),
57
+ engine_getPayloadV4: this.getPayloadV5.bind(this),
58
+ engine_getPayloadV5: this.getPayloadV5.bind(this),
50
59
  engine_getPayloadBodiesByHashV1: this.getPayloadBodiesByHash.bind(this),
51
60
  engine_getPayloadBodiesByRangeV1: this.getPayloadBodiesByRange.bind(this),
52
61
  engine_getClientVersionV1: this.getClientVersionV1.bind(this),
53
62
  engine_getBlobsV1: this.getBlobs.bind(this),
63
+ engine_getBlobsV2: this.getBlobsV2.bind(this),
54
64
  };
55
65
  }
56
66
  getPayloadBodiesByHash(_blockHex) {
@@ -172,7 +182,6 @@ export class ExecutionEngineMockBackend {
172
182
  // IF references an unknown payload or a payload that can't be validated because requisite data is missing
173
183
  // RETURN {payloadStatus: {status: SYNCING, latestValidHash: null, validationError: null}, payloadId: null}
174
184
  //
175
- // > TODO: Implement
176
185
  return {
177
186
  payloadStatus: { status: ExecutionPayloadStatus.SYNCING, latestValidHash: null, validationError: null },
178
187
  payloadId: null,
@@ -227,9 +236,22 @@ export class ExecutionEngineMockBackend {
227
236
  const commitments = [];
228
237
  const blobs = [];
229
238
  const proofs = [];
230
- // if post deneb, add between 0 and 2 blob transactions
231
- if (ForkSeq[fork] >= ForkSeq.deneb) {
232
- const denebTxCount = Math.round(2 * Math.random());
239
+ if (ForkSeq[fork] >= ForkSeq.fulu) {
240
+ // if post fulu, add between 0 and 3 data column transactions based on slot with BlobsBundleV2
241
+ const fuluTxCount = executionPayload.blockNumber % 4;
242
+ for (let i = 0; i < fuluTxCount; i++) {
243
+ const blob = generateRandomBlob();
244
+ const commitment = kzg.blobToKzgCommitment(blob);
245
+ const { proofs: cellProofs } = kzg.computeCellsAndKzgProofs(blob);
246
+ executionPayload.transactions.push(transactionForKzgCommitment(commitment));
247
+ commitments.push(commitment);
248
+ blobs.push(blob);
249
+ proofs.push(...cellProofs);
250
+ }
251
+ }
252
+ else if (ForkSeq[fork] >= ForkSeq.deneb && ForkSeq[fork] < ForkSeq.fulu) {
253
+ // if post deneb, add between 0 and 2 blob transactions
254
+ const denebTxCount = executionPayload.blockNumber % 3;
233
255
  for (let i = 0; i < denebTxCount; i++) {
234
256
  const blob = generateRandomBlob();
235
257
  const commitment = kzg.blobToKzgCommitment(blob);
@@ -240,6 +262,9 @@ export class ExecutionEngineMockBackend {
240
262
  proofs.push(proof);
241
263
  }
242
264
  }
265
+ if (ForkSeq[fork] >= ForkSeq.capella) {
266
+ executionPayload.withdrawals = ssz.capella.Withdrawals.defaultValue();
267
+ }
243
268
  this.preparingPayloads.set(payloadId, {
244
269
  executionPayload: serializeExecutionPayload(fork, executionPayload),
245
270
  blobsBundle: serializeBlobsBundle({
@@ -247,6 +272,11 @@ export class ExecutionEngineMockBackend {
247
272
  blobs,
248
273
  proofs,
249
274
  }),
275
+ executionRequests: serializeExecutionRequests({
276
+ deposits: ssz.electra.DepositRequests.defaultValue(),
277
+ withdrawals: ssz.electra.WithdrawalRequests.defaultValue(),
278
+ consolidations: ssz.electra.ConsolidationRequests.defaultValue(),
279
+ }),
250
280
  });
251
281
  // IF the payload is deemed VALID and the build process has begun
252
282
  // {payloadStatus: {status: VALID, latestValidHash: forkchoiceState.headBlockHash, validationError: null}, payloadId: buildProcessId}
@@ -270,7 +300,10 @@ export class ExecutionEngineMockBackend {
270
300
  * 2. The call MUST be responded with 5: Unavailable payload error if the building process identified by the payloadId doesn't exist.
271
301
  * 3. Client software MAY stop the corresponding building process after serving this call.
272
302
  */
273
- getPayload(payloadId) {
303
+ getPayloadV1(payloadId) {
304
+ return this.getPayloadV5(payloadId).executionPayload;
305
+ }
306
+ getPayloadV5(payloadId) {
274
307
  // 1. Given the payloadId client software MUST return the most recent version of the payload that is available in
275
308
  // the corresponding build process at the time of receiving the call.
276
309
  const payloadIdNbr = Number(payloadId);
@@ -290,7 +323,12 @@ export class ExecutionEngineMockBackend {
290
323
  }
291
324
  }
292
325
  this.payloadsForDeletion.set(payloadIdNbr, now);
293
- return payload.executionPayload;
326
+ return {
327
+ executionPayload: payload.executionPayload,
328
+ blockValue: String(1e9),
329
+ blobsBundle: payload.blobsBundle,
330
+ executionRequests: payload.executionRequests,
331
+ };
294
332
  }
295
333
  getClientVersionV1(_clientVersion) {
296
334
  return [{ code: ClientCode.XX, name: "mock", version: "", commit: "" }];
@@ -298,12 +336,17 @@ export class ExecutionEngineMockBackend {
298
336
  getBlobs(versionedHashes) {
299
337
  return versionedHashes.map((_vh) => null);
300
338
  }
339
+ getBlobsV2(_versionedHashes) {
340
+ return null;
341
+ }
301
342
  timestampToFork(timestamp) {
302
- if (timestamp > (this.opts.electraForkTimestamp ?? Infinity))
343
+ if (timestamp >= (this.opts.fuluForkTimestamp ?? Infinity))
344
+ return ForkName.fulu;
345
+ if (timestamp >= (this.opts.electraForkTimestamp ?? Infinity))
303
346
  return ForkName.electra;
304
- if (timestamp > (this.opts.denebForkTimestamp ?? Infinity))
347
+ if (timestamp >= (this.opts.denebForkTimestamp ?? Infinity))
305
348
  return ForkName.deneb;
306
- if (timestamp > (this.opts.capellaForkTimestamp ?? Infinity))
349
+ if (timestamp >= (this.opts.capellaForkTimestamp ?? Infinity))
307
350
  return ForkName.capella;
308
351
  return ForkName.bellatrix;
309
352
  }