@lodestar/beacon-node 1.34.0-dev.27285cdee9 → 1.34.0-dev.2ac5250665

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 (143) hide show
  1. package/lib/api/impl/beacon/blocks/index.js +35 -34
  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.js +2 -2
  8. package/lib/api/impl/debug/index.js.map +1 -1
  9. package/lib/api/impl/validator/index.js +37 -26
  10. package/lib/api/impl/validator/index.js.map +1 -1
  11. package/lib/api/impl/validator/utils.d.ts +3 -3
  12. package/lib/api/impl/validator/utils.js +2 -2
  13. package/lib/api/impl/validator/utils.js.map +1 -1
  14. package/lib/chain/archiveStore/utils/archiveBlocks.js +19 -20
  15. package/lib/chain/archiveStore/utils/archiveBlocks.js.map +1 -1
  16. package/lib/chain/blocks/utils/zebraBanner.d.ts +2 -0
  17. package/lib/chain/blocks/utils/zebraBanner.js +45 -0
  18. package/lib/chain/blocks/utils/zebraBanner.js.map +1 -0
  19. package/lib/chain/blocks/verifyBlock.js +18 -5
  20. package/lib/chain/blocks/verifyBlock.js.map +1 -1
  21. package/lib/chain/blocks/writeBlockInputToDb.js +7 -34
  22. package/lib/chain/blocks/writeBlockInputToDb.js.map +1 -1
  23. package/lib/chain/chain.d.ts +8 -80
  24. package/lib/chain/chain.js +51 -76
  25. package/lib/chain/chain.js.map +1 -1
  26. package/lib/chain/interface.d.ts +3 -10
  27. package/lib/chain/interface.js.map +1 -1
  28. package/lib/chain/opPools/aggregatedAttestationPool.js +13 -3
  29. package/lib/chain/opPools/aggregatedAttestationPool.js.map +1 -1
  30. package/lib/chain/prepareNextSlot.js +2 -1
  31. package/lib/chain/prepareNextSlot.js.map +1 -1
  32. package/lib/chain/produceBlock/produceBlockBody.d.ts +30 -18
  33. package/lib/chain/produceBlock/produceBlockBody.js +27 -32
  34. package/lib/chain/produceBlock/produceBlockBody.js.map +1 -1
  35. package/lib/chain/produceBlock/validateBlobsAndKzgCommitments.d.ts +6 -4
  36. package/lib/chain/produceBlock/validateBlobsAndKzgCommitments.js +21 -23
  37. package/lib/chain/produceBlock/validateBlobsAndKzgCommitments.js.map +1 -1
  38. package/lib/chain/validation/dataColumnSidecar.d.ts +2 -1
  39. package/lib/chain/validation/dataColumnSidecar.js +17 -8
  40. package/lib/chain/validation/dataColumnSidecar.js.map +1 -1
  41. package/lib/db/beacon.d.ts +3 -3
  42. package/lib/db/beacon.js +3 -3
  43. package/lib/db/beacon.js.map +1 -1
  44. package/lib/db/interface.d.ts +3 -3
  45. package/lib/db/repositories/dataColumnSidecar.d.ts +26 -0
  46. package/lib/db/repositories/dataColumnSidecar.js +39 -0
  47. package/lib/db/repositories/dataColumnSidecar.js.map +1 -0
  48. package/lib/db/repositories/dataColumnSidecarArchive.d.ts +24 -0
  49. package/lib/db/repositories/dataColumnSidecarArchive.js +39 -0
  50. package/lib/db/repositories/dataColumnSidecarArchive.js.map +1 -0
  51. package/lib/db/repositories/index.d.ts +2 -2
  52. package/lib/db/repositories/index.js +2 -2
  53. package/lib/db/repositories/index.js.map +1 -1
  54. package/lib/execution/builder/http.d.ts +20 -4
  55. package/lib/execution/builder/http.js +30 -11
  56. package/lib/execution/builder/http.js.map +1 -1
  57. package/lib/execution/builder/interface.d.ts +5 -4
  58. package/lib/execution/engine/http.d.ts +2 -2
  59. package/lib/execution/engine/http.js +10 -5
  60. package/lib/execution/engine/http.js.map +1 -1
  61. package/lib/execution/engine/interface.d.ts +2 -11
  62. package/lib/execution/engine/mock.d.ts +4 -1
  63. package/lib/execution/engine/mock.js +54 -16
  64. package/lib/execution/engine/mock.js.map +1 -1
  65. package/lib/execution/engine/types.d.ts +5 -5
  66. package/lib/execution/engine/types.js +2 -2
  67. package/lib/execution/engine/types.js.map +1 -1
  68. package/lib/metrics/metrics/beacon.d.ts +2 -5
  69. package/lib/metrics/metrics/beacon.js +9 -14
  70. package/lib/metrics/metrics/beacon.js.map +1 -1
  71. package/lib/metrics/metrics/lodestar.d.ts +5 -0
  72. package/lib/metrics/metrics/lodestar.js +14 -0
  73. package/lib/metrics/metrics/lodestar.js.map +1 -1
  74. package/lib/network/core/networkCore.js +11 -6
  75. package/lib/network/core/networkCore.js.map +1 -1
  76. package/lib/network/gossip/topic.d.ts +579 -51
  77. package/lib/network/interface.d.ts +3 -3
  78. package/lib/network/network.d.ts +3 -3
  79. package/lib/network/network.js +1 -1
  80. package/lib/network/network.js.map +1 -1
  81. package/lib/network/options.js +2 -2
  82. package/lib/network/peers/discover.js +1 -1
  83. package/lib/network/peers/discover.js.map +1 -1
  84. package/lib/network/peers/peerManager.js +5 -5
  85. package/lib/network/peers/peerManager.js.map +1 -1
  86. package/lib/network/peers/utils/prioritizePeers.d.ts +2 -1
  87. package/lib/network/peers/utils/prioritizePeers.js +5 -5
  88. package/lib/network/peers/utils/prioritizePeers.js.map +1 -1
  89. package/lib/network/processor/gossipHandlers.js +9 -6
  90. package/lib/network/processor/gossipHandlers.js.map +1 -1
  91. package/lib/network/reqresp/beaconBlocksMaybeBlobsByRange.d.ts +6 -3
  92. package/lib/network/reqresp/beaconBlocksMaybeBlobsByRange.js +45 -17
  93. package/lib/network/reqresp/beaconBlocksMaybeBlobsByRange.js.map +1 -1
  94. package/lib/network/reqresp/beaconBlocksMaybeBlobsByRoot.d.ts +7 -2
  95. package/lib/network/reqresp/beaconBlocksMaybeBlobsByRoot.js +7 -7
  96. package/lib/network/reqresp/beaconBlocksMaybeBlobsByRoot.js.map +1 -1
  97. package/lib/network/reqresp/handlers/beaconBlocksByRange.js +3 -3
  98. package/lib/network/reqresp/handlers/beaconBlocksByRange.js.map +1 -1
  99. package/lib/network/reqresp/handlers/beaconBlocksByRoot.d.ts +2 -2
  100. package/lib/network/reqresp/handlers/beaconBlocksByRoot.js.map +1 -1
  101. package/lib/network/reqresp/handlers/blobSidecarsByRange.d.ts +2 -2
  102. package/lib/network/reqresp/handlers/blobSidecarsByRange.js +2 -3
  103. package/lib/network/reqresp/handlers/blobSidecarsByRange.js.map +1 -1
  104. package/lib/network/reqresp/handlers/dataColumnSidecarsByRange.d.ts +3 -3
  105. package/lib/network/reqresp/handlers/dataColumnSidecarsByRange.js +27 -46
  106. package/lib/network/reqresp/handlers/dataColumnSidecarsByRange.js.map +1 -1
  107. package/lib/network/reqresp/handlers/dataColumnSidecarsByRoot.d.ts +2 -2
  108. package/lib/network/reqresp/handlers/dataColumnSidecarsByRoot.js +7 -21
  109. package/lib/network/reqresp/handlers/dataColumnSidecarsByRoot.js.map +1 -1
  110. package/lib/network/reqresp/handlers/index.js +4 -3
  111. package/lib/network/reqresp/handlers/index.js.map +1 -1
  112. package/lib/network/reqresp/rateLimit.js +11 -5
  113. package/lib/network/reqresp/rateLimit.js.map +1 -1
  114. package/lib/network/reqresp/types.d.ts +3 -3
  115. package/lib/network/reqresp/types.js +3 -3
  116. package/lib/network/reqresp/types.js.map +1 -1
  117. package/lib/sync/range/chain.d.ts +1 -1
  118. package/lib/sync/range/chain.js +2 -2
  119. package/lib/sync/range/chain.js.map +1 -1
  120. package/lib/sync/range/range.js +2 -2
  121. package/lib/sync/range/range.js.map +1 -1
  122. package/lib/sync/range/utils/peerBalancer.d.ts +3 -1
  123. package/lib/sync/range/utils/peerBalancer.js +20 -1
  124. package/lib/sync/range/utils/peerBalancer.js.map +1 -1
  125. package/lib/sync/unknownBlock.d.ts +46 -4
  126. package/lib/sync/unknownBlock.js +305 -201
  127. package/lib/sync/unknownBlock.js.map +1 -1
  128. package/lib/util/blobs.d.ts +3 -13
  129. package/lib/util/blobs.js +9 -47
  130. package/lib/util/blobs.js.map +1 -1
  131. package/lib/util/dataColumns.d.ts +7 -5
  132. package/lib/util/dataColumns.js +36 -27
  133. package/lib/util/dataColumns.js.map +1 -1
  134. package/lib/util/types.d.ts +7 -0
  135. package/lib/util/types.js +3 -0
  136. package/lib/util/types.js.map +1 -1
  137. package/package.json +16 -16
  138. package/lib/db/repositories/dataColumnSidecars.d.ts +0 -47
  139. package/lib/db/repositories/dataColumnSidecars.js +0 -40
  140. package/lib/db/repositories/dataColumnSidecars.js.map +0 -1
  141. package/lib/db/repositories/dataColumnSidecarsArchive.d.ts +0 -15
  142. package/lib/db/repositories/dataColumnSidecarsArchive.js +0 -23
  143. package/lib/db/repositories/dataColumnSidecarsArchive.js.map +0 -1
@@ -0,0 +1,24 @@
1
+ import { ChainForkConfig } from "@lodestar/config";
2
+ import { Db, PrefixedRepository } from "@lodestar/db";
3
+ import { ColumnIndex, Slot, fulu } from "@lodestar/types";
4
+ /**
5
+ * DataColumnSidecarsRepository
6
+ * Used to store `finalized` DataColumnSidecars
7
+ *
8
+ * Indexed data by `slot` + `columnIndex`
9
+ */
10
+ export declare class DataColumnSidecarArchiveRepository extends PrefixedRepository<Slot, ColumnIndex, fulu.DataColumnSidecar> {
11
+ constructor(config: ChainForkConfig, db: Db);
12
+ /**
13
+ * Id is hashTreeRoot of unsigned BeaconBlock
14
+ */
15
+ getId(value: fulu.DataColumnSidecar): ColumnIndex;
16
+ encodeKeyRaw(prefix: Slot, id: ColumnIndex): Uint8Array;
17
+ decodeKeyRaw(raw: Uint8Array): {
18
+ prefix: Slot;
19
+ id: ColumnIndex;
20
+ };
21
+ getMaxKeyRaw(prefix: Slot): Uint8Array;
22
+ getMinKeyRaw(prefix: Slot): Uint8Array;
23
+ }
24
+ //# sourceMappingURL=dataColumnSidecarArchive.d.ts.map
@@ -0,0 +1,39 @@
1
+ import { PrefixedRepository } from "@lodestar/db";
2
+ import { NUMBER_OF_COLUMNS } from "@lodestar/params";
3
+ import { ssz } from "@lodestar/types";
4
+ import { bytesToInt, intToBytes } from "@lodestar/utils";
5
+ import { Bucket, getBucketNameByValue } from "../buckets.js";
6
+ /**
7
+ * DataColumnSidecarsRepository
8
+ * Used to store `finalized` DataColumnSidecars
9
+ *
10
+ * Indexed data by `slot` + `columnIndex`
11
+ */
12
+ export class DataColumnSidecarArchiveRepository extends PrefixedRepository {
13
+ constructor(config, db) {
14
+ const bucket = Bucket.allForks_dataColumnSidecars;
15
+ super(config, db, bucket, ssz.fulu.DataColumnSidecar, getBucketNameByValue(bucket));
16
+ }
17
+ /**
18
+ * Id is hashTreeRoot of unsigned BeaconBlock
19
+ */
20
+ getId(value) {
21
+ return value.index;
22
+ }
23
+ encodeKeyRaw(prefix, id) {
24
+ return Buffer.concat([intToBytes(prefix, 4), intToBytes(id, 4)]);
25
+ }
26
+ decodeKeyRaw(raw) {
27
+ return {
28
+ prefix: bytesToInt(raw.slice(0, 4)),
29
+ id: bytesToInt(raw.slice(4, 8)),
30
+ };
31
+ }
32
+ getMaxKeyRaw(prefix) {
33
+ return Buffer.concat([intToBytes(prefix, 4), intToBytes(NUMBER_OF_COLUMNS, 4)]);
34
+ }
35
+ getMinKeyRaw(prefix) {
36
+ return Buffer.concat([intToBytes(prefix, 4), intToBytes(0, 4)]);
37
+ }
38
+ }
39
+ //# sourceMappingURL=dataColumnSidecarArchive.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dataColumnSidecarArchive.js","sourceRoot":"","sources":["../../../src/db/repositories/dataColumnSidecarArchive.ts"],"names":[],"mappings":"AACA,OAAO,EAAK,kBAAkB,EAAC,MAAM,cAAc,CAAC;AACpD,OAAO,EAAC,iBAAiB,EAAC,MAAM,kBAAkB,CAAC;AACnD,OAAO,EAA0B,GAAG,EAAC,MAAM,iBAAiB,CAAC;AAC7D,OAAO,EAAC,UAAU,EAAE,UAAU,EAAC,MAAM,iBAAiB,CAAC;AACvD,OAAO,EAAC,MAAM,EAAE,oBAAoB,EAAC,MAAM,eAAe,CAAC;AAE3D;;;;;GAKG;AACH,MAAM,OAAO,kCAAmC,SAAQ,kBAA6D;IACnH,YAAY,MAAuB,EAAE,EAAM;QACzC,MAAM,MAAM,GAAG,MAAM,CAAC,2BAA2B,CAAC;QAClD,KAAK,CAAC,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,GAAG,CAAC,IAAI,CAAC,iBAAiB,EAAE,oBAAoB,CAAC,MAAM,CAAC,CAAC,CAAC;IACtF,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,KAA6B;QACjC,OAAO,KAAK,CAAC,KAAK,CAAC;IACrB,CAAC;IAED,YAAY,CAAC,MAAY,EAAE,EAAe;QACxC,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,UAAU,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IACnE,CAAC;IAED,YAAY,CAAC,GAAe;QAC1B,OAAO;YACL,MAAM,EAAE,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAS;YAC3C,EAAE,EAAE,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAgB;SAC/C,CAAC;IACJ,CAAC;IAED,YAAY,CAAC,MAAY;QACvB,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,UAAU,CAAC,iBAAiB,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IAClF,CAAC;IAED,YAAY,CAAC,MAAY;QACvB,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IAClE,CAAC;CACF"}
@@ -1,7 +1,7 @@
1
1
  export { BlobSidecarsRepository } from "./blobSidecars.js";
2
2
  export { BlobSidecarsArchiveRepository } from "./blobSidecarsArchive.js";
3
- export { DataColumnSidecarsRepository } from "./dataColumnSidecars.js";
4
- export { DataColumnSidecarsArchiveRepository } from "./dataColumnSidecarsArchive.js";
3
+ export { DataColumnSidecarRepository } from "./dataColumnSidecar.js";
4
+ export { DataColumnSidecarArchiveRepository } from "./dataColumnSidecarArchive.js";
5
5
  export { BlockRepository } from "./block.js";
6
6
  export { BlockArchiveRepository } from "./blockArchive.js";
7
7
  export type { BlockArchiveBatchPutBinaryItem, BlockFilterOptions } from "./blockArchive.js";
@@ -1,7 +1,7 @@
1
1
  export { BlobSidecarsRepository } from "./blobSidecars.js";
2
2
  export { BlobSidecarsArchiveRepository } from "./blobSidecarsArchive.js";
3
- export { DataColumnSidecarsRepository } from "./dataColumnSidecars.js";
4
- export { DataColumnSidecarsArchiveRepository } from "./dataColumnSidecarsArchive.js";
3
+ export { DataColumnSidecarRepository } from "./dataColumnSidecar.js";
4
+ export { DataColumnSidecarArchiveRepository } from "./dataColumnSidecarArchive.js";
5
5
  export { BlockRepository } from "./block.js";
6
6
  export { BlockArchiveRepository } from "./blockArchive.js";
7
7
  export { StateArchiveRepository } from "./stateArchive.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/db/repositories/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,sBAAsB,EAAC,MAAM,mBAAmB,CAAC;AACzD,OAAO,EAAC,6BAA6B,EAAC,MAAM,0BAA0B,CAAC;AACvE,OAAO,EAAC,4BAA4B,EAAC,MAAM,yBAAyB,CAAC;AACrE,OAAO,EAAC,mCAAmC,EAAC,MAAM,gCAAgC,CAAC;AAEnF,OAAO,EAAC,eAAe,EAAC,MAAM,YAAY,CAAC;AAC3C,OAAO,EAAC,sBAAsB,EAAC,MAAM,mBAAmB,CAAC;AAEzD,OAAO,EAAC,sBAAsB,EAAC,MAAM,mBAAmB,CAAC;AAEzD,OAAO,EAAC,0BAA0B,EAAC,MAAM,uBAAuB,CAAC;AACjE,OAAO,EAAC,0BAA0B,EAAC,MAAM,uBAAuB,CAAC;AACjE,OAAO,EAAC,uBAAuB,EAAC,MAAM,oBAAoB,CAAC;AAC3D,OAAO,EAAC,sBAAsB,EAAC,MAAM,mBAAmB,CAAC;AAEzD,OAAO,EAAC,yBAAyB,EAAC,MAAM,sBAAsB,CAAC;AAC/D,OAAO,EAAC,kBAAkB,EAAC,MAAM,eAAe,CAAC;AAEjD,OAAO,EAAC,+BAA+B,EAAC,MAAM,4BAA4B,CAAC;AAC3E,OAAO,EAAC,0BAA0B,EAAC,MAAM,kCAAkC,CAAC;AAC5E,OAAO,EAAC,uBAAuB,EAAC,MAAM,+BAA+B,CAAC;AACtE,OAAO,EAAC,8BAA8B,EAAC,MAAM,sCAAsC,CAAC;AACpF,OAAO,EAAC,gBAAgB,EAAC,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAC,8BAA8B,EAAC,MAAM,2BAA2B,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/db/repositories/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,sBAAsB,EAAC,MAAM,mBAAmB,CAAC;AACzD,OAAO,EAAC,6BAA6B,EAAC,MAAM,0BAA0B,CAAC;AACvE,OAAO,EAAC,2BAA2B,EAAC,MAAM,wBAAwB,CAAC;AACnE,OAAO,EAAC,kCAAkC,EAAC,MAAM,+BAA+B,CAAC;AAEjF,OAAO,EAAC,eAAe,EAAC,MAAM,YAAY,CAAC;AAC3C,OAAO,EAAC,sBAAsB,EAAC,MAAM,mBAAmB,CAAC;AAEzD,OAAO,EAAC,sBAAsB,EAAC,MAAM,mBAAmB,CAAC;AAEzD,OAAO,EAAC,0BAA0B,EAAC,MAAM,uBAAuB,CAAC;AACjE,OAAO,EAAC,0BAA0B,EAAC,MAAM,uBAAuB,CAAC;AACjE,OAAO,EAAC,uBAAuB,EAAC,MAAM,oBAAoB,CAAC;AAC3D,OAAO,EAAC,sBAAsB,EAAC,MAAM,mBAAmB,CAAC;AAEzD,OAAO,EAAC,yBAAyB,EAAC,MAAM,sBAAsB,CAAC;AAC/D,OAAO,EAAC,kBAAkB,EAAC,MAAM,eAAe,CAAC;AAEjD,OAAO,EAAC,+BAA+B,EAAC,MAAM,4BAA4B,CAAC;AAC3E,OAAO,EAAC,0BAA0B,EAAC,MAAM,kCAAkC,CAAC;AAC5E,OAAO,EAAC,uBAAuB,EAAC,MAAM,+BAA+B,CAAC;AACtE,OAAO,EAAC,8BAA8B,EAAC,MAAM,sCAAsC,CAAC;AACpF,OAAO,EAAC,gBAAgB,EAAC,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAC,8BAA8B,EAAC,MAAM,2BAA2B,CAAC"}
@@ -2,7 +2,7 @@ import { ApiClient as BuilderApi } from "@lodestar/api/builder";
2
2
  import { ChainForkConfig } from "@lodestar/config";
3
3
  import { Logger } from "@lodestar/logger";
4
4
  import { ForkPostBellatrix } from "@lodestar/params";
5
- import { BLSPubkey, Epoch, ExecutionPayloadHeader, Root, SignedBeaconBlockOrContents, SignedBlindedBeaconBlock, Slot, Wei, WithOptionalBytes, bellatrix, deneb, electra } from "@lodestar/types";
5
+ import { BLSPubkey, Epoch, ExecutionPayloadHeader, Root, SignedBlindedBeaconBlock, SignedBlockContents, Slot, Wei, WithOptionalBytes, bellatrix, deneb, electra } from "@lodestar/types";
6
6
  import { Metrics } from "../../metrics/metrics.js";
7
7
  import { ValidatorRegistration, ValidatorRegistrationCache } from "./cache.js";
8
8
  import { IExecutionBuilder } from "./interface.js";
@@ -16,6 +16,22 @@ export type ExecutionBuilderHttpOpts = {
16
16
  userAgent?: string;
17
17
  };
18
18
  export declare const defaultExecutionBuilderHttpOpts: ExecutionBuilderHttpOpts;
19
+ export declare enum BuilderStatus {
20
+ /**
21
+ * Builder is enabled and operational
22
+ */
23
+ enabled = "enabled",
24
+ /**
25
+ * Builder is disabled due to failed status check
26
+ */
27
+ disabled = "disabled",
28
+ /**
29
+ * Circuit breaker condition that is triggered when the node determines the chain is unhealthy.
30
+ * When the circuit breaker is fired, proposers **MUST** not utilize the external builder
31
+ * network and exclusively build locally.
32
+ */
33
+ circuitBreaker = "circuit_breaker"
34
+ }
19
35
  /**
20
36
  * Expected error if builder does not provide a bid. Most of the time, this
21
37
  * is due to `min-bid` setting on the mev-boost side but in rare cases could
@@ -29,7 +45,7 @@ export declare class ExecutionBuilderHttp implements IExecutionBuilder {
29
45
  readonly config: ChainForkConfig;
30
46
  readonly registrations: ValidatorRegistrationCache;
31
47
  readonly issueLocalFcUWithFeeRecipient?: string;
32
- status: boolean;
48
+ status: BuilderStatus;
33
49
  faultInspectionWindow: number;
34
50
  allowedFaults: number;
35
51
  /**
@@ -39,7 +55,7 @@ export declare class ExecutionBuilderHttp implements IExecutionBuilder {
39
55
  */
40
56
  private sszSupported;
41
57
  constructor(opts: ExecutionBuilderHttpOpts, config: ChainForkConfig, metrics?: Metrics | null, logger?: Logger);
42
- updateStatus(shouldEnable: boolean): void;
58
+ updateStatus(status: BuilderStatus): void;
43
59
  checkStatus(): Promise<void>;
44
60
  registerValidator(epoch: Epoch, registrations: bellatrix.SignedValidatorRegistrationV1[]): Promise<void>;
45
61
  getValidatorRegistration(pubkey: BLSPubkey): ValidatorRegistration | undefined;
@@ -49,7 +65,7 @@ export declare class ExecutionBuilderHttp implements IExecutionBuilder {
49
65
  blobKzgCommitments?: deneb.BlobKzgCommitments;
50
66
  executionRequests?: electra.ExecutionRequests;
51
67
  }>;
52
- submitBlindedBlock(signedBlindedBlock: WithOptionalBytes<SignedBlindedBeaconBlock>): Promise<SignedBeaconBlockOrContents>;
68
+ submitBlindedBlock(signedBlindedBlock: WithOptionalBytes<SignedBlindedBeaconBlock>): Promise<SignedBlockContents>;
53
69
  submitBlindedBlockNoResponse(signedBlindedBlock: WithOptionalBytes<SignedBlindedBeaconBlock>): Promise<void>;
54
70
  }
55
71
  //# sourceMappingURL=http.d.ts.map
@@ -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,11 +1,11 @@
1
1
  import { Logger } from "@lodestar/logger";
2
2
  import { ForkName, ForkPostFulu, ForkPreFulu } from "@lodestar/params";
3
- import { ExecutionPayload, ExecutionRequests, Root, RootHex, Wei } from "@lodestar/types";
3
+ import { BlobsBundle, ExecutionPayload, ExecutionRequests, Root, RootHex, Wei } from "@lodestar/types";
4
4
  import { BlobAndProof } from "@lodestar/types/deneb";
5
5
  import { BlobAndProofV2 } from "@lodestar/types/fulu";
6
6
  import { IJsonRpcHttpClient } from "../../eth1/provider/jsonRpcHttpClient.js";
7
7
  import { Metrics } from "../../metrics/index.js";
8
- import { BlobsBundle, ClientVersion, ExecutePayloadResponse, ExecutionEngineState, IExecutionEngine, PayloadAttributes, PayloadId, VersionedHashes } from "./interface.js";
8
+ import { ClientVersion, ExecutePayloadResponse, ExecutionEngineState, IExecutionEngine, PayloadAttributes, PayloadId, VersionedHashes } from "./interface.js";
9
9
  import { PayloadIdCache } from "./payloadIdCache.js";
10
10
  import { ExecutionPayloadBody } from "./types.js";
11
11
  export type ExecutionEngineModules = {
@@ -35,6 +35,11 @@ const MAX_VERSIONED_HASHES = 128;
35
35
  const notifyNewPayloadOpts = { routeId: "notifyNewPayload" };
36
36
  const forkchoiceUpdatedV1Opts = { routeId: "forkchoiceUpdated" };
37
37
  const getPayloadOpts = { routeId: "getPayload" };
38
+ const getPayloadBodiesByHashOpts = { routeId: "getPayloadBodiesByHash" };
39
+ const getPayloadBodiesByRangeOpts = { routeId: "getPayloadBodiesByRange" };
40
+ const getBlobsV1Opts = { routeId: "getBlobsV1" };
41
+ const getBlobsV2Opts = { routeId: "getBlobsV2" };
42
+ const getClientVersionOpts = { routeId: "getClientVersion" };
38
43
  /**
39
44
  * based on Ethereum JSON-RPC API and inherits the following properties of this standard:
40
45
  * - Supported communication protocols (HTTP and WebSocket)
@@ -294,7 +299,7 @@ export class ExecutionEngineHttp {
294
299
  async getPayloadBodiesByHash(_fork, blockHashes) {
295
300
  const method = "engine_getPayloadBodiesByHashV1";
296
301
  assertReqSizeLimit(blockHashes.length, 32);
297
- const response = await this.rpc.fetchWithRetries({ method, params: [blockHashes] });
302
+ const response = await this.rpc.fetchWithRetries({ method, params: [blockHashes] }, getPayloadBodiesByHashOpts);
298
303
  return response.map(deserializeExecutionPayloadBody);
299
304
  }
300
305
  async getPayloadBodiesByRange(_fork, startBlockNumber, blockCount) {
@@ -302,7 +307,7 @@ export class ExecutionEngineHttp {
302
307
  assertReqSizeLimit(blockCount, 32);
303
308
  const start = numToQuantity(startBlockNumber);
304
309
  const count = numToQuantity(blockCount);
305
- const response = await this.rpc.fetchWithRetries({ method, params: [start, count] });
310
+ const response = await this.rpc.fetchWithRetries({ method, params: [start, count] }, getPayloadBodiesByRangeOpts);
306
311
  return response.map(deserializeExecutionPayloadBody);
307
312
  }
308
313
  async getBlobs(fork, versionedHashes) {
@@ -317,7 +322,7 @@ export class ExecutionEngineHttp {
317
322
  const response = await this.rpc.fetchWithRetries({
318
323
  method: "engine_getBlobsV1",
319
324
  params: [versionedHashesHex],
320
- });
325
+ }, getBlobsV1Opts);
321
326
  const invalidLength = response.length !== versionedHashesHex.length;
322
327
  if (invalidLength) {
323
328
  const error = `Invalid engine_getBlobsV1 response length=${response.length} versionedHashes=${versionedHashesHex.length}`;
@@ -330,7 +335,7 @@ export class ExecutionEngineHttp {
330
335
  const response = await this.rpc.fetchWithRetries({
331
336
  method: "engine_getBlobsV2",
332
337
  params: [versionedHashesHex],
333
- });
338
+ }, getBlobsV2Opts);
334
339
  // engine_getBlobsV2 does not return partial responses. It returns null if any blob is not found
335
340
  const invalidLength = !!response && response.length !== versionedHashesHex.length;
336
341
  if (invalidLength) {
@@ -342,7 +347,7 @@ export class ExecutionEngineHttp {
342
347
  }
343
348
  async getClientVersion(clientVersion) {
344
349
  const method = "engine_getClientVersionV1";
345
- const response = await this.rpc.fetchWithRetries({ method, params: [{ ...clientVersion, commit: `0x${clientVersion.commit}` }] });
350
+ const response = await this.rpc.fetchWithRetries({ method, params: [{ ...clientVersion, commit: `0x${clientVersion.commit}` }] }, getClientVersionOpts);
346
351
  const clientVersions = response.map((cv) => {
347
352
  const code = cv.code in ClientCode ? ClientCode[cv.code] : ClientCode.XX;
348
353
  return { code, name: cv.name, version: cv.version, commit: strip0xPrefix(cv.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,6 @@
1
1
  import { CONSOLIDATION_REQUEST_TYPE, DEPOSIT_REQUEST_TYPE, ForkName, ForkPostFulu, ForkPreFulu, 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";
2
+ import { BlobsBundle, ExecutionPayload, ExecutionRequests, Root, RootHex, Wei, capella } from "@lodestar/types";
3
+ import { BlobAndProof } from "@lodestar/types/deneb";
4
4
  import { BlobAndProofV2 } from "@lodestar/types/fulu";
5
5
  import { DATA } from "../../eth1/provider/utils.js";
6
6
  import { PayloadId, PayloadIdCache, WithdrawalV1 } from "./payloadIdCache.js";
@@ -80,15 +80,6 @@ export type PayloadAttributes = {
80
80
  withdrawals?: capella.Withdrawal[];
81
81
  parentBeaconBlockRoot?: Uint8Array;
82
82
  };
83
- export type BlobsBundle = {
84
- /**
85
- * Execution payload `blockHash` for the caller to sanity-check the consistency with the `engine_getPayload` call
86
- * https://github.com/protolambda/execution-apis/blob/bf44a8d08ab34b861ef97fa9ef5c5e7806194547/src/engine/blob-extension.md?plain=1#L49
87
- */
88
- commitments: KZGCommitment[];
89
- blobs: Blob[];
90
- proofs: KZGProof[];
91
- };
92
83
  export type ClientVersion = {
93
84
  code: ClientCode;
94
85
  name: string;
@@ -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,7 +56,8 @@ 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;
60
63
  private getBlobsV2;
@@ -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,11 +51,11 @@ 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),
50
- engine_getPayloadV5: 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),
51
59
  engine_getPayloadBodiesByHashV1: this.getPayloadBodiesByHash.bind(this),
52
60
  engine_getPayloadBodiesByRangeV1: this.getPayloadBodiesByRange.bind(this),
53
61
  engine_getClientVersionV1: this.getClientVersionV1.bind(this),
@@ -174,7 +182,6 @@ export class ExecutionEngineMockBackend {
174
182
  // IF references an unknown payload or a payload that can't be validated because requisite data is missing
175
183
  // RETURN {payloadStatus: {status: SYNCING, latestValidHash: null, validationError: null}, payloadId: null}
176
184
  //
177
- // > TODO: Implement
178
185
  return {
179
186
  payloadStatus: { status: ExecutionPayloadStatus.SYNCING, latestValidHash: null, validationError: null },
180
187
  payloadId: null,
@@ -229,9 +236,22 @@ export class ExecutionEngineMockBackend {
229
236
  const commitments = [];
230
237
  const blobs = [];
231
238
  const proofs = [];
232
- // if post deneb, add between 0 and 2 blob transactions
233
- if (ForkSeq[fork] >= ForkSeq.deneb) {
234
- 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;
235
255
  for (let i = 0; i < denebTxCount; i++) {
236
256
  const blob = generateRandomBlob();
237
257
  const commitment = kzg.blobToKzgCommitment(blob);
@@ -242,6 +262,9 @@ export class ExecutionEngineMockBackend {
242
262
  proofs.push(proof);
243
263
  }
244
264
  }
265
+ if (ForkSeq[fork] >= ForkSeq.capella) {
266
+ executionPayload.withdrawals = ssz.capella.Withdrawals.defaultValue();
267
+ }
245
268
  this.preparingPayloads.set(payloadId, {
246
269
  executionPayload: serializeExecutionPayload(fork, executionPayload),
247
270
  blobsBundle: serializeBlobsBundle({
@@ -249,6 +272,11 @@ export class ExecutionEngineMockBackend {
249
272
  blobs,
250
273
  proofs,
251
274
  }),
275
+ executionRequests: serializeExecutionRequests({
276
+ deposits: ssz.electra.DepositRequests.defaultValue(),
277
+ withdrawals: ssz.electra.WithdrawalRequests.defaultValue(),
278
+ consolidations: ssz.electra.ConsolidationRequests.defaultValue(),
279
+ }),
252
280
  });
253
281
  // IF the payload is deemed VALID and the build process has begun
254
282
  // {payloadStatus: {status: VALID, latestValidHash: forkchoiceState.headBlockHash, validationError: null}, payloadId: buildProcessId}
@@ -272,7 +300,10 @@ export class ExecutionEngineMockBackend {
272
300
  * 2. The call MUST be responded with 5: Unavailable payload error if the building process identified by the payloadId doesn't exist.
273
301
  * 3. Client software MAY stop the corresponding building process after serving this call.
274
302
  */
275
- getPayload(payloadId) {
303
+ getPayloadV1(payloadId) {
304
+ return this.getPayloadV5(payloadId).executionPayload;
305
+ }
306
+ getPayloadV5(payloadId) {
276
307
  // 1. Given the payloadId client software MUST return the most recent version of the payload that is available in
277
308
  // the corresponding build process at the time of receiving the call.
278
309
  const payloadIdNbr = Number(payloadId);
@@ -292,7 +323,12 @@ export class ExecutionEngineMockBackend {
292
323
  }
293
324
  }
294
325
  this.payloadsForDeletion.set(payloadIdNbr, now);
295
- return payload.executionPayload;
326
+ return {
327
+ executionPayload: payload.executionPayload,
328
+ blockValue: String(1e9),
329
+ blobsBundle: payload.blobsBundle,
330
+ executionRequests: payload.executionRequests,
331
+ };
296
332
  }
297
333
  getClientVersionV1(_clientVersion) {
298
334
  return [{ code: ClientCode.XX, name: "mock", version: "", commit: "" }];
@@ -304,11 +340,13 @@ export class ExecutionEngineMockBackend {
304
340
  return null;
305
341
  }
306
342
  timestampToFork(timestamp) {
307
- if (timestamp > (this.opts.electraForkTimestamp ?? Infinity))
343
+ if (timestamp >= (this.opts.fuluForkTimestamp ?? Infinity))
344
+ return ForkName.fulu;
345
+ if (timestamp >= (this.opts.electraForkTimestamp ?? Infinity))
308
346
  return ForkName.electra;
309
- if (timestamp > (this.opts.denebForkTimestamp ?? Infinity))
347
+ if (timestamp >= (this.opts.denebForkTimestamp ?? Infinity))
310
348
  return ForkName.deneb;
311
- if (timestamp > (this.opts.capellaForkTimestamp ?? Infinity))
349
+ if (timestamp >= (this.opts.capellaForkTimestamp ?? Infinity))
312
350
  return ForkName.capella;
313
351
  return ForkName.bellatrix;
314
352
  }