@lodestar/beacon-node 1.34.0-dev.745ad69720 → 1.34.0-dev.7b42620eba

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 (163) hide show
  1. package/lib/api/impl/beacon/blocks/index.js +36 -37
  2. package/lib/api/impl/beacon/blocks/index.js.map +1 -1
  3. package/lib/api/impl/beacon/pool/index.js +5 -5
  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 +64 -47
  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 +52 -84
  25. package/lib/chain/chain.js.map +1 -1
  26. package/lib/chain/forkChoice/index.d.ts +2 -1
  27. package/lib/chain/forkChoice/index.js +2 -2
  28. package/lib/chain/forkChoice/index.js.map +1 -1
  29. package/lib/chain/interface.d.ts +3 -10
  30. package/lib/chain/interface.js.map +1 -1
  31. package/lib/chain/opPools/aggregatedAttestationPool.js +13 -3
  32. package/lib/chain/opPools/aggregatedAttestationPool.js.map +1 -1
  33. package/lib/chain/opPools/attestationPool.d.ts +1 -1
  34. package/lib/chain/opPools/attestationPool.js +7 -7
  35. package/lib/chain/prepareNextSlot.js +4 -2
  36. package/lib/chain/prepareNextSlot.js.map +1 -1
  37. package/lib/chain/produceBlock/produceBlockBody.d.ts +30 -18
  38. package/lib/chain/produceBlock/produceBlockBody.js +27 -32
  39. package/lib/chain/produceBlock/produceBlockBody.js.map +1 -1
  40. package/lib/chain/produceBlock/validateBlobsAndKzgCommitments.d.ts +6 -4
  41. package/lib/chain/produceBlock/validateBlobsAndKzgCommitments.js +21 -23
  42. package/lib/chain/produceBlock/validateBlobsAndKzgCommitments.js.map +1 -1
  43. package/lib/chain/validation/aggregateAndProof.d.ts +1 -1
  44. package/lib/chain/validation/aggregateAndProof.js +8 -8
  45. package/lib/chain/validation/aggregateAndProof.js.map +1 -1
  46. package/lib/chain/validation/attestation.d.ts +3 -3
  47. package/lib/chain/validation/attestation.js +10 -10
  48. package/lib/chain/validation/attestation.js.map +1 -1
  49. package/lib/chain/validation/dataColumnSidecar.d.ts +2 -1
  50. package/lib/chain/validation/dataColumnSidecar.js +17 -8
  51. package/lib/chain/validation/dataColumnSidecar.js.map +1 -1
  52. package/lib/db/beacon.d.ts +3 -3
  53. package/lib/db/beacon.js +3 -3
  54. package/lib/db/beacon.js.map +1 -1
  55. package/lib/db/interface.d.ts +3 -3
  56. package/lib/db/repositories/dataColumnSidecar.d.ts +26 -0
  57. package/lib/db/repositories/dataColumnSidecar.js +39 -0
  58. package/lib/db/repositories/dataColumnSidecar.js.map +1 -0
  59. package/lib/db/repositories/dataColumnSidecarArchive.d.ts +24 -0
  60. package/lib/db/repositories/dataColumnSidecarArchive.js +39 -0
  61. package/lib/db/repositories/dataColumnSidecarArchive.js.map +1 -0
  62. package/lib/db/repositories/index.d.ts +2 -2
  63. package/lib/db/repositories/index.js +2 -2
  64. package/lib/db/repositories/index.js.map +1 -1
  65. package/lib/execution/builder/http.d.ts +20 -4
  66. package/lib/execution/builder/http.js +30 -11
  67. package/lib/execution/builder/http.js.map +1 -1
  68. package/lib/execution/builder/interface.d.ts +5 -4
  69. package/lib/execution/engine/http.d.ts +2 -2
  70. package/lib/execution/engine/http.js +10 -5
  71. package/lib/execution/engine/http.js.map +1 -1
  72. package/lib/execution/engine/interface.d.ts +2 -11
  73. package/lib/execution/engine/mock.d.ts +4 -1
  74. package/lib/execution/engine/mock.js +54 -16
  75. package/lib/execution/engine/mock.js.map +1 -1
  76. package/lib/execution/engine/types.d.ts +5 -5
  77. package/lib/execution/engine/types.js +2 -2
  78. package/lib/execution/engine/types.js.map +1 -1
  79. package/lib/metrics/metrics/beacon.d.ts +2 -28
  80. package/lib/metrics/metrics/beacon.js +9 -75
  81. package/lib/metrics/metrics/beacon.js.map +1 -1
  82. package/lib/metrics/metrics/lodestar.d.ts +5 -0
  83. package/lib/metrics/metrics/lodestar.js +14 -0
  84. package/lib/metrics/metrics/lodestar.js.map +1 -1
  85. package/lib/metrics/metrics.d.ts +2 -1
  86. package/lib/metrics/metrics.js +3 -0
  87. package/lib/metrics/metrics.js.map +1 -1
  88. package/lib/network/core/networkCore.js +11 -6
  89. package/lib/network/core/networkCore.js.map +1 -1
  90. package/lib/network/gossip/topic.d.ts +620 -92
  91. package/lib/network/interface.d.ts +3 -3
  92. package/lib/network/network.d.ts +3 -3
  93. package/lib/network/network.js +1 -1
  94. package/lib/network/network.js.map +1 -1
  95. package/lib/network/options.js +2 -2
  96. package/lib/network/peers/discover.js +1 -1
  97. package/lib/network/peers/discover.js.map +1 -1
  98. package/lib/network/peers/peerManager.js +9 -6
  99. package/lib/network/peers/peerManager.js.map +1 -1
  100. package/lib/network/peers/utils/prioritizePeers.d.ts +2 -1
  101. package/lib/network/peers/utils/prioritizePeers.js +5 -5
  102. package/lib/network/peers/utils/prioritizePeers.js.map +1 -1
  103. package/lib/network/processor/gossipHandlers.js +22 -19
  104. package/lib/network/processor/gossipHandlers.js.map +1 -1
  105. package/lib/network/reqresp/beaconBlocksMaybeBlobsByRange.d.ts +6 -3
  106. package/lib/network/reqresp/beaconBlocksMaybeBlobsByRange.js +45 -17
  107. package/lib/network/reqresp/beaconBlocksMaybeBlobsByRange.js.map +1 -1
  108. package/lib/network/reqresp/beaconBlocksMaybeBlobsByRoot.d.ts +7 -2
  109. package/lib/network/reqresp/beaconBlocksMaybeBlobsByRoot.js +7 -7
  110. package/lib/network/reqresp/beaconBlocksMaybeBlobsByRoot.js.map +1 -1
  111. package/lib/network/reqresp/handlers/beaconBlocksByRange.js +3 -3
  112. package/lib/network/reqresp/handlers/beaconBlocksByRange.js.map +1 -1
  113. package/lib/network/reqresp/handlers/beaconBlocksByRoot.d.ts +2 -2
  114. package/lib/network/reqresp/handlers/beaconBlocksByRoot.js.map +1 -1
  115. package/lib/network/reqresp/handlers/blobSidecarsByRange.d.ts +2 -2
  116. package/lib/network/reqresp/handlers/blobSidecarsByRange.js +2 -3
  117. package/lib/network/reqresp/handlers/blobSidecarsByRange.js.map +1 -1
  118. package/lib/network/reqresp/handlers/dataColumnSidecarsByRange.d.ts +3 -3
  119. package/lib/network/reqresp/handlers/dataColumnSidecarsByRange.js +55 -46
  120. package/lib/network/reqresp/handlers/dataColumnSidecarsByRange.js.map +1 -1
  121. package/lib/network/reqresp/handlers/dataColumnSidecarsByRoot.d.ts +2 -2
  122. package/lib/network/reqresp/handlers/dataColumnSidecarsByRoot.js +26 -27
  123. package/lib/network/reqresp/handlers/dataColumnSidecarsByRoot.js.map +1 -1
  124. package/lib/network/reqresp/handlers/index.js +4 -3
  125. package/lib/network/reqresp/handlers/index.js.map +1 -1
  126. package/lib/network/reqresp/rateLimit.js +11 -5
  127. package/lib/network/reqresp/rateLimit.js.map +1 -1
  128. package/lib/network/reqresp/types.d.ts +3 -3
  129. package/lib/network/reqresp/types.js +3 -3
  130. package/lib/network/reqresp/types.js.map +1 -1
  131. package/lib/network/reqresp/utils/dataColumnResponseValidaiton.d.ts +14 -0
  132. package/lib/network/reqresp/utils/dataColumnResponseValidaiton.js +56 -0
  133. package/lib/network/reqresp/utils/dataColumnResponseValidaiton.js.map +1 -0
  134. package/lib/sync/range/chain.d.ts +1 -1
  135. package/lib/sync/range/chain.js +2 -2
  136. package/lib/sync/range/chain.js.map +1 -1
  137. package/lib/sync/range/range.js +2 -2
  138. package/lib/sync/range/range.js.map +1 -1
  139. package/lib/sync/range/utils/peerBalancer.d.ts +3 -1
  140. package/lib/sync/range/utils/peerBalancer.js +20 -1
  141. package/lib/sync/range/utils/peerBalancer.js.map +1 -1
  142. package/lib/sync/unknownBlock.d.ts +46 -4
  143. package/lib/sync/unknownBlock.js +305 -201
  144. package/lib/sync/unknownBlock.js.map +1 -1
  145. package/lib/util/blobs.d.ts +3 -13
  146. package/lib/util/blobs.js +9 -47
  147. package/lib/util/blobs.js.map +1 -1
  148. package/lib/util/dataColumns.d.ts +7 -5
  149. package/lib/util/dataColumns.js +36 -27
  150. package/lib/util/dataColumns.js.map +1 -1
  151. package/lib/util/sszBytes.d.ts +2 -0
  152. package/lib/util/sszBytes.js +23 -0
  153. package/lib/util/sszBytes.js.map +1 -1
  154. package/lib/util/types.d.ts +7 -0
  155. package/lib/util/types.js +3 -0
  156. package/lib/util/types.js.map +1 -1
  157. package/package.json +17 -18
  158. package/lib/db/repositories/dataColumnSidecars.d.ts +0 -47
  159. package/lib/db/repositories/dataColumnSidecars.js +0 -40
  160. package/lib/db/repositories/dataColumnSidecars.js.map +0 -1
  161. package/lib/db/repositories/dataColumnSidecarsArchive.d.ts +0 -15
  162. package/lib/db/repositories/dataColumnSidecarsArchive.js +0 -23
  163. package/lib/db/repositories/dataColumnSidecarsArchive.js.map +0 -1
@@ -1,5 +1,5 @@
1
1
  import { ExecutionStatus } from "@lodestar/fork-choice";
2
- import { ForkName } from "@lodestar/params";
2
+ import { ForkName, isForkPostFulu } from "@lodestar/params";
3
3
  import { DataAvailabilityStatus, computeEpochAtSlot, isStateValidatorsNodesPopulated, } from "@lodestar/state-transition";
4
4
  import { toRootHex } from "@lodestar/utils";
5
5
  import { BlockError, BlockErrorCode } from "../errors/index.js";
@@ -9,6 +9,7 @@ import { DENEB_BLOWFISH_BANNER } from "./utils/blowfishBanner.js";
9
9
  import { ELECTRA_GIRAFFE_BANNER } from "./utils/giraffeBanner.js";
10
10
  import { CAPELLA_OWL_BANNER } from "./utils/ownBanner.js";
11
11
  import { POS_PANDA_MERGE_TRANSITION_BANNER } from "./utils/pandaMergeTransitionBanner.js";
12
+ import { FULU_ZEBRA_BANNER } from "./utils/zebraBanner.js";
12
13
  import { verifyBlocksDataAvailability } from "./verifyBlocksDataAvailability.js";
13
14
  import { verifyBlocksExecutionPayload } from "./verifyBlocksExecutionPayloads.js";
14
15
  import { verifyBlocksSignatures } from "./verifyBlocksSignatures.js";
@@ -97,11 +98,11 @@ export async function verifyBlocksInEpoch(parentBlock, blocksInput, opts) {
97
98
  // TODO: Will this banner be logged during syncing?
98
99
  logOnPowBlock(this.logger, this.config, segmentExecStatus.mergeBlockFound);
99
100
  }
100
- const fromFork = this.config.getForkName(parentBlock.slot);
101
- const toFork = this.config.getForkName(lastBlock.message.slot);
101
+ const fromForkBoundary = this.config.getForkBoundaryAtEpoch(computeEpochAtSlot(parentBlock.slot));
102
+ const toForkBoundary = this.config.getForkBoundaryAtEpoch(computeEpochAtSlot(lastBlock.message.slot));
102
103
  // If transition through toFork, note won't happen if ${toFork}_EPOCH = 0, will log double on re-org
103
- if (toFork !== fromFork) {
104
- switch (toFork) {
104
+ if (toForkBoundary.fork !== fromForkBoundary.fork) {
105
+ switch (toForkBoundary.fork) {
105
106
  case ForkName.capella:
106
107
  this.logger.info(CAPELLA_OWL_BANNER);
107
108
  this.logger.info("Activating withdrawals", { epoch: this.config.CAPELLA_FORK_EPOCH });
@@ -114,9 +115,21 @@ export async function verifyBlocksInEpoch(parentBlock, blocksInput, opts) {
114
115
  this.logger.info(ELECTRA_GIRAFFE_BANNER);
115
116
  this.logger.info("Activating maxEB", { epoch: this.config.ELECTRA_FORK_EPOCH });
116
117
  break;
118
+ case ForkName.fulu:
119
+ this.logger.info(FULU_ZEBRA_BANNER);
120
+ this.logger.info("Activating peerDAS", { epoch: this.config.FULU_FORK_EPOCH });
121
+ break;
117
122
  default:
118
123
  }
119
124
  }
125
+ if (isForkPostFulu(fromForkBoundary.fork)) {
126
+ const fromBlobParameters = this.config.getBlobParameters(fromForkBoundary.epoch);
127
+ const toBlobParameters = this.config.getBlobParameters(toForkBoundary.epoch);
128
+ if (toBlobParameters.epoch !== fromBlobParameters.epoch) {
129
+ const { epoch, maxBlobsPerBlock } = toBlobParameters;
130
+ this.logger.info("Activating BPO fork", { epoch, maxBlobsPerBlock });
131
+ }
132
+ }
120
133
  }
121
134
  if (segmentExecStatus.execAborted === null) {
122
135
  const { executionStatuses, executionTime } = segmentExecStatus;
@@ -1 +1 @@
1
- {"version":3,"file":"verifyBlock.js","sourceRoot":"","sources":["../../../src/chain/blocks/verifyBlock.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"verifyBlock.js","sourceRoot":"","sources":["../../../src/chain/blocks/verifyBlock.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,5 @@
1
- import { ForkName, NUMBER_OF_COLUMNS, isForkPostDeneb, isForkPostFulu } from "@lodestar/params";
2
- import { ssz } from "@lodestar/types";
3
- import { toRootHex } from "@lodestar/utils";
4
- import { toHex } from "@lodestar/utils";
1
+ import { ForkName, isForkPostDeneb, isForkPostFulu } from "@lodestar/params";
2
+ import { toHex, toRootHex } from "@lodestar/utils";
5
3
  import { BlockInputType } from "./types.js";
6
4
  /**
7
5
  * Persists block input data to DB. This operation must be eventually completed if a block is imported to the fork-choice.
@@ -38,38 +36,22 @@ export async function writeBlockInputToDb(blocksInput) {
38
36
  // NOTE: Old data is pruned on archive
39
37
  if (isForkPostFulu(blockData.fork)) {
40
38
  const { custodyConfig } = this;
41
- const { custodyColumnsIndex, custodyColumns } = custodyConfig;
39
+ const { custodyColumns } = custodyConfig;
42
40
  const blobsLen = block.message.body.blobKzgCommitments.length;
43
41
  let dataColumnsLen;
44
- let dataColumnsIndex;
45
42
  if (blobsLen === 0) {
46
43
  dataColumnsLen = 0;
47
- dataColumnsIndex = new Uint8Array(NUMBER_OF_COLUMNS);
48
44
  }
49
45
  else {
50
46
  dataColumnsLen = custodyColumns.length;
51
- dataColumnsIndex = custodyColumnsIndex;
52
47
  }
53
48
  const blockDataColumns = blockData.dataColumns;
54
49
  const dataColumnSidecars = blockDataColumns.filter((dataColumnSidecar) => custodyColumns.includes(dataColumnSidecar.index));
55
50
  if (dataColumnSidecars.length !== dataColumnsLen) {
56
51
  throw Error(`Invalid dataColumnSidecars=${dataColumnSidecars.length} for custody expected custodyColumnsLen=${dataColumnsLen}`);
57
52
  }
58
- const dataColumnsSize = ssz.fulu.DataColumnSidecar.minSize +
59
- blobsLen * (ssz.fulu.Cell.fixedSize + ssz.deneb.KZGCommitment.fixedSize + ssz.deneb.KZGProof.fixedSize);
60
- const slot = block.message.slot;
61
- const writeData = {
62
- blockRoot,
63
- slot,
64
- dataColumnsLen,
65
- dataColumnsSize,
66
- dataColumnsIndex,
67
- dataColumnSidecars,
68
- };
69
- fnPromises.push(this.db.dataColumnSidecars.add(writeData));
53
+ fnPromises.push(this.db.dataColumnSidecar.putMany(blockRoot, dataColumnSidecars));
70
54
  this.logger.debug("Persisted dataColumnSidecars to hot DB", {
71
- dataColumnsSize,
72
- dataColumnsLen,
73
55
  dataColumnSidecars: dataColumnSidecars.length,
74
56
  slot: block.message.slot,
75
57
  root: blockRootHex,
@@ -114,22 +96,13 @@ export async function removeEagerlyPersistedBlockInputs(blockInputs) {
114
96
  }
115
97
  else {
116
98
  const { custodyConfig } = this;
117
- const { custodyColumnsIndex: dataColumnsIndex, custodyColumns } = custodyConfig;
99
+ const { custodyColumns } = custodyConfig;
118
100
  const dataColumnsLen = custodyColumns.length;
119
101
  const dataColumnSidecars = blockData.dataColumns.filter((dataColumnSidecar) => custodyColumns.includes(dataColumnSidecar.index));
120
102
  if (dataColumnSidecars.length !== dataColumnsLen) {
121
103
  throw Error(`Invalid dataColumnSidecars=${dataColumnSidecars.length} for custody expected custodyColumnsLen=${dataColumnsLen}`);
122
104
  }
123
- const blobsLen = block.message.body.blobKzgCommitments.length;
124
- const dataColumnsSize = ssz.fulu.Cell.fixedSize * blobsLen;
125
- dataColumnsToRemove.push({
126
- blockRoot,
127
- slot,
128
- dataColumnsLen,
129
- dataColumnsSize,
130
- dataColumnsIndex,
131
- dataColumnSidecars,
132
- });
105
+ dataColumnsToRemove.push(blockRoot);
133
106
  }
134
107
  }
135
108
  }
@@ -138,7 +111,7 @@ export async function removeEagerlyPersistedBlockInputs(blockInputs) {
138
111
  // TODO: Batch DB operations not with Promise.all but with level db ops
139
112
  this.db.block.batchRemove(blockToRemove),
140
113
  this.db.blobSidecars.batchRemove(blobsToRemove),
141
- this.db.dataColumnSidecars.batchRemove(dataColumnsToRemove),
114
+ this.db.dataColumnSidecar.deleteMany(dataColumnsToRemove),
142
115
  ]);
143
116
  }
144
117
  //# sourceMappingURL=writeBlockInputToDb.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"writeBlockInputToDb.js","sourceRoot":"","sources":["../../../src/chain/blocks/writeBlockInputToDb.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"writeBlockInputToDb.js","sourceRoot":"","sources":["../../../src/chain/blocks/writeBlockInputToDb.ts"],"names":[],"mappings":"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"}
@@ -3,7 +3,7 @@ import { CompositeTypeAny, TreeView, Type } from "@chainsafe/ssz";
3
3
  import { BeaconConfig } from "@lodestar/config";
4
4
  import { CheckpointWithHex, IForkChoice, ProtoBlock } from "@lodestar/fork-choice";
5
5
  import { BeaconStateAllForks, CachedBeaconStateAllForks, EpochShuffling, Index2PubkeyCache } from "@lodestar/state-transition";
6
- import { BeaconBlock, BlindedBeaconBlock, Epoch, Root, RootHex, SignedBeaconBlock, Slot, Status, UintNum64, ValidatorIndex, Wei, deneb, fulu } from "@lodestar/types";
6
+ import { BeaconBlock, BlindedBeaconBlock, Epoch, Root, RootHex, SignedBeaconBlock, Slot, Status, UintNum64, ValidatorIndex, Wei } from "@lodestar/types";
7
7
  import { Logger } from "@lodestar/utils";
8
8
  import { ProcessShutdownCallback } from "@lodestar/validator";
9
9
  import { PrivateKey } from "@libp2p/interface";
@@ -27,7 +27,7 @@ import { CommonBlockBody, IBeaconChain, ProposerPreparationData, StateGetOpts }
27
27
  import { LightClientServer } from "./lightClient/index.js";
28
28
  import { AggregatedAttestationPool, AttestationPool, OpPool, SyncCommitteeMessagePool, SyncContributionAndProofPool } from "./opPools/index.js";
29
29
  import { IChainOptions } from "./options.js";
30
- import { AssembledBlockType, BlockType } from "./produceBlock/index.js";
30
+ import { AssembledBlockType, BlockType, ProduceResult } from "./produceBlock/index.js";
31
31
  import { BlockAttributes } from "./produceBlock/produceBlockBody.js";
32
32
  import { QueuedStateRegenerator, RegenCaller } from "./regen/index.js";
33
33
  import { ReprocessController } from "./reprocess.js";
@@ -83,71 +83,12 @@ export declare class BeaconChain implements IBeaconChain {
83
83
  readonly beaconProposerCache: BeaconProposerCache;
84
84
  readonly checkpointBalancesCache: CheckpointBalancesCache;
85
85
  readonly shufflingCache: ShufflingCache;
86
- /** Map keyed by executionPayload.blockHash of the block for those blobs */
87
- readonly producedContentsCache: Map<string, deneb.Contents & {
88
- cells?: fulu.Cell[][];
89
- }>;
90
- readonly producedBlockRoot: Map<string, import("@chainsafe/ssz").ValueOfFields<{
91
- transactions: import("@chainsafe/ssz").ListCompositeType<import("@chainsafe/ssz").ByteListType>;
92
- parentHash: import("@chainsafe/ssz").ByteVectorType;
93
- feeRecipient: import("@lodestar/types/lib/utils/executionAddress.js").ExecutionAddressType;
94
- stateRoot: import("@chainsafe/ssz").ByteVectorType;
95
- receiptsRoot: import("@chainsafe/ssz").ByteVectorType;
96
- logsBloom: import("@chainsafe/ssz").ByteVectorType;
97
- prevRandao: import("@chainsafe/ssz").ByteVectorType;
98
- blockNumber: import("@chainsafe/ssz").UintNumberType;
99
- gasLimit: import("@chainsafe/ssz").UintNumberType;
100
- gasUsed: import("@chainsafe/ssz").UintNumberType;
101
- timestamp: import("@chainsafe/ssz").UintNumberType;
102
- extraData: import("@chainsafe/ssz").ByteListType;
103
- baseFeePerGas: import("@chainsafe/ssz").UintBigintType;
104
- blockHash: import("@chainsafe/ssz").ByteVectorType;
105
- }> | import("@chainsafe/ssz").ValueOfFields<{
106
- withdrawals: import("@chainsafe/ssz").ListCompositeType<import("@chainsafe/ssz").ContainerType<{
107
- index: import("@chainsafe/ssz").UintNumberType;
108
- validatorIndex: import("@chainsafe/ssz").UintNumberType;
109
- address: import("@lodestar/types/lib/utils/executionAddress.js").ExecutionAddressType;
110
- amount: import("@chainsafe/ssz").UintBigintType;
111
- }>>;
112
- transactions: import("@chainsafe/ssz").ListCompositeType<import("@chainsafe/ssz").ByteListType>;
113
- parentHash: import("@chainsafe/ssz").ByteVectorType;
114
- feeRecipient: import("@lodestar/types/lib/utils/executionAddress.js").ExecutionAddressType;
115
- stateRoot: import("@chainsafe/ssz").ByteVectorType;
116
- receiptsRoot: import("@chainsafe/ssz").ByteVectorType;
117
- logsBloom: import("@chainsafe/ssz").ByteVectorType;
118
- prevRandao: import("@chainsafe/ssz").ByteVectorType;
119
- blockNumber: import("@chainsafe/ssz").UintNumberType;
120
- gasLimit: import("@chainsafe/ssz").UintNumberType;
121
- gasUsed: import("@chainsafe/ssz").UintNumberType;
122
- timestamp: import("@chainsafe/ssz").UintNumberType;
123
- extraData: import("@chainsafe/ssz").ByteListType;
124
- baseFeePerGas: import("@chainsafe/ssz").UintBigintType;
125
- blockHash: import("@chainsafe/ssz").ByteVectorType;
126
- }> | import("@chainsafe/ssz").ValueOfFields<{
127
- blobGasUsed: import("@chainsafe/ssz").UintBigintType;
128
- excessBlobGas: import("@chainsafe/ssz").UintBigintType;
129
- withdrawals: import("@chainsafe/ssz").ListCompositeType<import("@chainsafe/ssz").ContainerType<{
130
- index: import("@chainsafe/ssz").UintNumberType;
131
- validatorIndex: import("@chainsafe/ssz").UintNumberType;
132
- address: import("@lodestar/types/lib/utils/executionAddress.js").ExecutionAddressType;
133
- amount: import("@chainsafe/ssz").UintBigintType;
134
- }>>;
135
- transactions: import("@chainsafe/ssz").ListCompositeType<import("@chainsafe/ssz").ByteListType>;
136
- parentHash: import("@chainsafe/ssz").ByteVectorType;
137
- feeRecipient: import("@lodestar/types/lib/utils/executionAddress.js").ExecutionAddressType;
138
- stateRoot: import("@chainsafe/ssz").ByteVectorType;
139
- receiptsRoot: import("@chainsafe/ssz").ByteVectorType;
140
- logsBloom: import("@chainsafe/ssz").ByteVectorType;
141
- prevRandao: import("@chainsafe/ssz").ByteVectorType;
142
- blockNumber: import("@chainsafe/ssz").UintNumberType;
143
- gasLimit: import("@chainsafe/ssz").UintNumberType;
144
- gasUsed: import("@chainsafe/ssz").UintNumberType;
145
- timestamp: import("@chainsafe/ssz").UintNumberType;
146
- extraData: import("@chainsafe/ssz").ByteListType;
147
- baseFeePerGas: import("@chainsafe/ssz").UintBigintType;
148
- blockHash: import("@chainsafe/ssz").ByteVectorType;
149
- }> | null>;
150
- readonly producedBlindedBlockRoot: Set<string>;
86
+ /**
87
+ * Cache produced results (ExecutionPayload, DA Data) from the local execution so that we can send
88
+ * and get signed/published blinded versions which beacon node can
89
+ * assemble into full blocks before publishing to the network.
90
+ */
91
+ readonly blockProductionCache: Map<string, ProduceResult>;
151
92
  readonly blacklistedBlocks: Map<RootHex, Slot | null>;
152
93
  readonly serializedCache: SerializedCache;
153
94
  readonly opts: IChainOptions;
@@ -247,19 +188,6 @@ export declare class BeaconChain implements IBeaconChain {
247
188
  consensusBlockValue: Wei;
248
189
  shouldOverrideBuilder?: boolean;
249
190
  }>;
250
- /**
251
- * https://github.com/ethereum/consensus-specs/blob/dev/specs/eip4844/validator.md#sidecar
252
- * def get_blobs_sidecar(block: BeaconBlock, blobs: Sequence[Blob]) -> BlobSidecars:
253
- * return BlobSidecars(
254
- * beacon_block_root=hash_tree_root(block),
255
- * beacon_block_slot=block.slot,
256
- * blobs=blobs,
257
- * kzg_aggregated_proof=compute_proof_from_blobs(blobs),
258
- * )
259
- */
260
- getContents(beaconBlock: deneb.BeaconBlock): deneb.Contents & {
261
- cells?: fulu.Cell[][];
262
- };
263
191
  processBlock(block: BlockInput, opts?: ImportBlockOpts): Promise<void>;
264
192
  processChainSegment(blocks: BlockInput[], opts?: ImportBlockOpts): Promise<void>;
265
193
  getStatus(): Status;
@@ -1,12 +1,12 @@
1
1
  import path from "node:path";
2
2
  import { PubkeyIndexMap } from "@chainsafe/pubkey-index-map";
3
3
  import { ExecutionStatus, UpdateHeadOpt } from "@lodestar/fork-choice";
4
- import { ForkSeq, GENESIS_SLOT, NUMBER_OF_CUSTODY_GROUPS, SLOTS_PER_EPOCH, isForkPostElectra } from "@lodestar/params";
5
- import { computeAnchorCheckpoint, computeEndSlotAtEpoch, computeEpochAtSlot, computeStartSlotAtEpoch, createCachedBeaconState, getEffectiveBalanceIncrementsZeroInactive, isCachedBeaconState, processSlots, } from "@lodestar/state-transition";
4
+ import { EFFECTIVE_BALANCE_INCREMENT, GENESIS_SLOT, SLOTS_PER_EPOCH, isForkPostElectra } from "@lodestar/params";
5
+ import { computeAnchorCheckpoint, computeEndSlotAtEpoch, computeEpochAtSlot, computeStartSlotAtEpoch, createCachedBeaconState, getEffectiveBalanceIncrementsZeroInactive, getEffectiveBalancesFromStateBytes, isCachedBeaconState, processSlots, } from "@lodestar/state-transition";
6
6
  import { isBlindedBeaconBlock, } from "@lodestar/types";
7
7
  import { fromHex, gweiToWei, isErrorAborted, pruneSetToMax, sleep, toRootHex } from "@lodestar/utils";
8
- import { getEffectiveBalancesFromStateBytes } from "@lodestar/state-transition";
9
8
  import { GENESIS_EPOCH, ZERO_HASH } from "../constants/index.js";
9
+ import { BuilderStatus } from "../execution/builder/http.js";
10
10
  import { computeNodeIdFromPrivateKey } from "../network/subnets/interface.js";
11
11
  import { BufferPool } from "../util/bufferPool.js";
12
12
  import { Clock, ClockEvent } from "../util/clock.js";
@@ -21,12 +21,12 @@ import { BlockProcessor } from "./blocks/index.js";
21
21
  import { BlsMultiThreadWorkerPool, BlsSingleThreadVerifier } from "./bls/index.js";
22
22
  import { ChainEvent, ChainEventEmitter } from "./emitter.js";
23
23
  import { initializeForkChoice } from "./forkChoice/index.js";
24
- import { FindHeadFnName, } from "./interface.js";
24
+ import { FindHeadFnName } from "./interface.js";
25
25
  import { LightClientServer } from "./lightClient/index.js";
26
26
  import { AggregatedAttestationPool, AttestationPool, OpPool, SyncCommitteeMessagePool, SyncContributionAndProofPool, } from "./opPools/index.js";
27
27
  import { PrepareNextSlotScheduler } from "./prepareNextSlot.js";
28
28
  import { computeNewStateRoot } from "./produceBlock/computeNewStateRoot.js";
29
- import { BlobsResultType, BlockType } from "./produceBlock/index.js";
29
+ import { BlockType } from "./produceBlock/index.js";
30
30
  import { produceBlockBody, produceCommonBlockBody } from "./produceBlock/produceBlockBody.js";
31
31
  import { QueuedStateRegenerator, RegenCaller } from "./regen/index.js";
32
32
  import { ReprocessController } from "./reprocess.js";
@@ -47,11 +47,13 @@ import { FIFOBlockStateCache } from "./stateCache/fifoBlockStateCache.js";
47
47
  import { InMemoryCheckpointStateCache } from "./stateCache/inMemoryCheckpointsCache.js";
48
48
  import { PersistentCheckpointStateCache } from "./stateCache/persistentCheckpointsCache.js";
49
49
  /**
50
- * Arbitrary constants, blobs and payloads should be consumed immediately in the same slot
50
+ * The maximum number of cached produced results to keep in memory.
51
+ *
52
+ * Arbitrary constant. Blobs and payloads should be consumed immediately in the same slot
51
53
  * they are produced. A value of 1 would probably be sufficient. However it's sensible to
52
54
  * allow some margin if the node overloads.
53
55
  */
54
- const DEFAULT_MAX_CACHED_PRODUCED_ROOTS = 4;
56
+ const DEFAULT_MAX_CACHED_PRODUCED_RESULTS = 4;
55
57
  export class BeaconChain {
56
58
  get earliestAvailableSlot() {
57
59
  return this._earliestAvailableSlot;
@@ -71,13 +73,12 @@ export class BeaconChain {
71
73
  this.seenSyncCommitteeMessages = new SeenSyncCommitteeMessages();
72
74
  // Seen cache for liveness checks
73
75
  this.seenBlockAttesters = new SeenBlockAttesters();
74
- /** Map keyed by executionPayload.blockHash of the block for those blobs */
75
- this.producedContentsCache = new Map();
76
- // Cache payloads from the local execution so that we can send
77
- // and get signed/published blinded versions which beacon node can
78
- // assemble into full blocks before publishing to the network.
79
- this.producedBlockRoot = new Map();
80
- this.producedBlindedBlockRoot = new Set();
76
+ /**
77
+ * Cache produced results (ExecutionPayload, DA Data) from the local execution so that we can send
78
+ * and get signed/published blinded versions which beacon node can
79
+ * assemble into full blocks before publishing to the network.
80
+ */
81
+ this.blockProductionCache = new Map();
81
82
  this.abortController = new AbortController();
82
83
  this.opts = opts;
83
84
  this.config = config;
@@ -110,7 +111,7 @@ export class BeaconChain {
110
111
  this.seenContributionAndProof = new SeenContributionAndProof(metrics);
111
112
  this.seenAttestationDatas = new SeenAttestationDatas(metrics, this.opts?.attDataCacheSlotDistance);
112
113
  const nodeId = computeNodeIdFromPrivateKey(privateKey);
113
- const initialCustodyGroupCount = opts.initialCustodyGroupCount ?? (opts.supernode ? NUMBER_OF_CUSTODY_GROUPS : config.CUSTODY_REQUIREMENT);
114
+ const initialCustodyGroupCount = opts.initialCustodyGroupCount ?? (opts.supernode ? config.NUMBER_OF_CUSTODY_GROUPS : config.CUSTODY_REQUIREMENT);
114
115
  this.metrics?.peerDas.targetCustodyGroupCount.set(initialCustodyGroupCount);
115
116
  this.custodyConfig = new CustodyConfig({
116
117
  nodeId,
@@ -183,7 +184,7 @@ export class BeaconChain {
183
184
  blockStateCache.add(cachedState);
184
185
  blockStateCache.setHeadState(cachedState);
185
186
  checkpointStateCache.add(checkpoint, cachedState);
186
- const forkChoice = initializeForkChoice(config, emitter, clock.currentSlot, cachedState, opts, this.justifiedBalancesGetter.bind(this), logger);
187
+ const forkChoice = initializeForkChoice(config, emitter, clock.currentSlot, cachedState, opts, this.justifiedBalancesGetter.bind(this), metrics, logger);
187
188
  const regen = new QueuedStateRegenerator({
188
189
  config,
189
190
  forkChoice,
@@ -437,7 +438,7 @@ export class BeaconChain {
437
438
  const state = await this.regen.getBlockSlotState(toRootHex(parentBlockRoot), slot, { dontTransferCache: true }, RegenCaller.produceBlock);
438
439
  const proposerIndex = state.epochCtx.getBeaconProposer(slot);
439
440
  const proposerPubKey = state.epochCtx.index2pubkey[proposerIndex].toBytes();
440
- const { body, blobs, executionPayloadValue, shouldOverrideBuilder } = await produceBlockBody.call(this, blockType, state, {
441
+ const { body, produceResult, executionPayloadValue, shouldOverrideBuilder } = await produceBlockBody.call(this, blockType, state, {
441
442
  randaoReveal,
442
443
  graffiti,
443
444
  slot,
@@ -449,7 +450,7 @@ export class BeaconChain {
449
450
  commonBlockBodyPromise,
450
451
  });
451
452
  // The hashtree root computed here for debug log will get cached and hence won't introduce additional delays
452
- const bodyRoot = blockType === BlockType.Full
453
+ const bodyRoot = produceResult.type === BlockType.Full
453
454
  ? this.config.getForkTypes(slot).BeaconBlockBody.hashTreeRoot(body)
454
455
  : this.config
455
456
  .getPostBellatrixForkTypes(slot)
@@ -468,51 +469,15 @@ export class BeaconChain {
468
469
  };
469
470
  const { newStateRoot, proposerReward } = computeNewStateRoot(this.metrics, state, block);
470
471
  block.stateRoot = newStateRoot;
471
- const blockRoot = blockType === BlockType.Full
472
+ const blockRoot = produceResult.type === BlockType.Full
472
473
  ? this.config.getForkTypes(slot).BeaconBlock.hashTreeRoot(block)
473
474
  : this.config.getPostBellatrixForkTypes(slot).BlindedBeaconBlock.hashTreeRoot(block);
474
475
  const blockRootHex = toRootHex(blockRoot);
475
- // track the produced block for consensus broadcast validations
476
- if (blockType === BlockType.Full) {
477
- this.logger.debug("Setting executionPayload cache for produced block", { blockRootHex, slot, blockType });
478
- this.producedBlockRoot.set(blockRootHex, block.body.executionPayload ?? null);
479
- this.metrics?.blockProductionCaches.producedBlockRoot.set(this.producedBlockRoot.size);
480
- }
481
- else {
482
- this.logger.debug("Tracking the produced blinded block", { blockRootHex, slot, blockType });
483
- this.producedBlindedBlockRoot.add(blockRootHex);
484
- this.metrics?.blockProductionCaches.producedBlindedBlockRoot.set(this.producedBlindedBlockRoot.size);
485
- }
486
- // Cache for latter broadcasting
487
- //
488
- // blinded blobs will be fetched and added to this cache later before finally
489
- // publishing the blinded block's full version
490
- if (blobs.type === BlobsResultType.produced) {
491
- // body is of full type here
492
- const { blockHash, contents } = blobs;
493
- this.producedContentsCache.set(blockHash, contents);
494
- this.metrics?.blockProductionCaches.producedContentsCache.set(this.producedContentsCache.size);
495
- }
476
+ // Track the produced block for consensus broadcast validations, later validation, etc.
477
+ this.blockProductionCache.set(blockRootHex, produceResult);
478
+ this.metrics?.blockProductionCacheSize.set(this.blockProductionCache.size);
496
479
  return { block, executionPayloadValue, consensusBlockValue: gweiToWei(proposerReward), shouldOverrideBuilder };
497
480
  }
498
- /**
499
- * https://github.com/ethereum/consensus-specs/blob/dev/specs/eip4844/validator.md#sidecar
500
- * def get_blobs_sidecar(block: BeaconBlock, blobs: Sequence[Blob]) -> BlobSidecars:
501
- * return BlobSidecars(
502
- * beacon_block_root=hash_tree_root(block),
503
- * beacon_block_slot=block.slot,
504
- * blobs=blobs,
505
- * kzg_aggregated_proof=compute_proof_from_blobs(blobs),
506
- * )
507
- */
508
- getContents(beaconBlock) {
509
- const blockHash = toRootHex(beaconBlock.body.executionPayload.blockHash);
510
- const contents = this.producedContentsCache.get(blockHash);
511
- if (!contents) {
512
- throw Error(`No contents for executionPayload.blockHash ${blockHash}`);
513
- }
514
- return contents;
515
- }
516
481
  async processBlock(block, opts) {
517
482
  return this.blockProcessor.processBlocksJob([block], opts);
518
483
  }
@@ -766,13 +731,6 @@ export class BeaconChain {
766
731
  // syncContributionAndProofPool tracks metrics on its own
767
732
  metrics.opPool.blsToExecutionChangePoolSize.set(this.opPool.blsToExecutionChangeSize);
768
733
  metrics.chain.blacklistedBlocks.set(this.blacklistedBlocks.size);
769
- const forkChoiceMetrics = this.forkChoice.getMetrics();
770
- metrics.forkChoice.votes.set(forkChoiceMetrics.votes);
771
- metrics.forkChoice.queuedAttestations.set(forkChoiceMetrics.queuedAttestations);
772
- metrics.forkChoice.validatedAttestationDatas.set(forkChoiceMetrics.validatedAttestationDatas);
773
- metrics.forkChoice.balancesLength.set(forkChoiceMetrics.balancesLength);
774
- metrics.forkChoice.nodes.set(forkChoiceMetrics.nodes);
775
- metrics.forkChoice.indices.set(forkChoiceMetrics.indices);
776
734
  const headState = this.getHeadState();
777
735
  const fork = this.config.getForkName(headState.slot);
778
736
  if (isForkPostElectra(fork)) {
@@ -797,14 +755,8 @@ export class BeaconChain {
797
755
  this.seenAttestationDatas.onSlot(slot);
798
756
  this.reprocessController.onSlot(slot);
799
757
  // Prune old cached block production artifacts, those are only useful on their slot
800
- pruneSetToMax(this.producedBlockRoot, this.opts.maxCachedProducedRoots ?? DEFAULT_MAX_CACHED_PRODUCED_ROOTS);
801
- this.metrics?.blockProductionCaches.producedBlockRoot.set(this.producedBlockRoot.size);
802
- pruneSetToMax(this.producedBlindedBlockRoot, this.opts.maxCachedProducedRoots ?? DEFAULT_MAX_CACHED_PRODUCED_ROOTS);
803
- this.metrics?.blockProductionCaches.producedBlindedBlockRoot.set(this.producedBlindedBlockRoot.size);
804
- if (this.config.getForkSeq(slot) >= ForkSeq.deneb) {
805
- pruneSetToMax(this.producedContentsCache, this.opts.maxCachedProducedRoots ?? DEFAULT_MAX_CACHED_PRODUCED_ROOTS);
806
- this.metrics?.blockProductionCaches.producedContentsCache.set(this.producedContentsCache.size);
807
- }
758
+ pruneSetToMax(this.blockProductionCache, this.opts.maxCachedProducedRoots ?? DEFAULT_MAX_CACHED_PRODUCED_RESULTS);
759
+ this.metrics?.blockProductionCacheSize.set(this.blockProductionCache.size);
808
760
  const metrics = this.metrics;
809
761
  if (metrics && (slot + 1) % SLOTS_PER_EPOCH === 0) {
810
762
  // On the last slot of the epoch
@@ -878,19 +830,35 @@ export class BeaconChain {
878
830
  // of all custody groups regardless of validator effective balances
879
831
  return;
880
832
  }
881
- // Update custody requirement based on finalized state
882
- const stateOrBytes = (await this.getStateOrBytesByCheckpoint(finalizedCheckpoint))?.state;
883
- if (!stateOrBytes) {
884
- throw Error(`No finalized state for epoch ${finalizedCheckpoint.epoch} and root ${finalizedCheckpoint.rootHex} to update target custody group count`);
885
- }
886
833
  // Validators attached to the node
887
834
  const validatorIndices = this.beaconProposerCache.getValidatorIndices();
835
+ // Update custody requirement based on finalized state
888
836
  let effectiveBalances;
889
- if (stateOrBytes instanceof Uint8Array) {
890
- effectiveBalances = getEffectiveBalancesFromStateBytes(this.config, stateOrBytes, validatorIndices);
837
+ const effectiveBalanceIncrements = this.checkpointBalancesCache.get(finalizedCheckpoint);
838
+ if (effectiveBalanceIncrements) {
839
+ effectiveBalances = validatorIndices.map((index) => (effectiveBalanceIncrements[index] ?? 0) * EFFECTIVE_BALANCE_INCREMENT);
891
840
  }
892
841
  else {
893
- effectiveBalances = validatorIndices.map((index) => stateOrBytes.validators.get(index).effectiveBalance);
842
+ // If there's no cached effective balances, get the state from disk and parse them out
843
+ this.logger.debug("No cached finalized effective balances to update target custody group count", {
844
+ finalizedEpoch: finalizedCheckpoint.epoch,
845
+ finalizedRoot: finalizedCheckpoint.rootHex,
846
+ });
847
+ const stateOrBytes = (await this.getStateOrBytesByCheckpoint(finalizedCheckpoint))?.state;
848
+ if (!stateOrBytes) {
849
+ // If even the state is not available, we cannot update the custody group count
850
+ this.logger.debug("No finalized state or bytes available to update target custody group count", {
851
+ finalizedEpoch: finalizedCheckpoint.epoch,
852
+ finalizedRoot: finalizedCheckpoint.rootHex,
853
+ });
854
+ return;
855
+ }
856
+ if (stateOrBytes instanceof Uint8Array) {
857
+ effectiveBalances = getEffectiveBalancesFromStateBytes(this.config, stateOrBytes, validatorIndices);
858
+ }
859
+ else {
860
+ effectiveBalances = validatorIndices.map((index) => stateOrBytes.validators.get(index).effectiveBalance ?? 0);
861
+ }
894
862
  }
895
863
  const targetCustodyGroupCount = getValidatorsCustodyRequirement(this.config, effectiveBalances);
896
864
  // Only update if target is increased
@@ -912,7 +880,7 @@ export class BeaconChain {
912
880
  const slotsPresent = this.forkChoice.getSlotsPresent(clockSlot - faultInspectionWindow);
913
881
  const previousStatus = executionBuilder.status;
914
882
  const shouldEnable = slotsPresent >= Math.min(faultInspectionWindow - allowedFaults, clockSlot);
915
- executionBuilder.updateStatus(shouldEnable);
883
+ executionBuilder.updateStatus(shouldEnable ? BuilderStatus.enabled : BuilderStatus.circuitBreaker);
916
884
  // The status changed we should log
917
885
  const status = executionBuilder.status;
918
886
  const builderLog = {
@@ -922,10 +890,10 @@ export class BeaconChain {
922
890
  allowedFaults,
923
891
  };
924
892
  if (status !== previousStatus) {
925
- this.logger.info("Execution builder status updated", builderLog);
893
+ this.logger.info("External builder status updated", builderLog);
926
894
  }
927
895
  else {
928
- this.logger.verbose("Execution builder status", builderLog);
896
+ this.logger.verbose("External builder status", builderLog);
929
897
  }
930
898
  }
931
899
  }