@lodestar/beacon-node 1.39.0-dev.95389042f8 → 1.39.0-dev.ad129ced66

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 (133) hide show
  1. package/lib/api/impl/beacon/state/utils.d.ts +2 -7
  2. package/lib/api/impl/beacon/state/utils.d.ts.map +1 -1
  3. package/lib/api/impl/beacon/state/utils.js +0 -12
  4. package/lib/api/impl/beacon/state/utils.js.map +1 -1
  5. package/lib/api/impl/lodestar/index.js +1 -1
  6. package/lib/api/impl/lodestar/index.js.map +1 -1
  7. package/lib/api/impl/proof/index.d.ts.map +1 -1
  8. package/lib/api/impl/proof/index.js +1 -2
  9. package/lib/api/impl/proof/index.js.map +1 -1
  10. package/lib/api/impl/validator/index.d.ts.map +1 -1
  11. package/lib/api/impl/validator/index.js +1 -3
  12. package/lib/api/impl/validator/index.js.map +1 -1
  13. package/lib/chain/blocks/importBlock.d.ts.map +1 -1
  14. package/lib/chain/blocks/importBlock.js +8 -2
  15. package/lib/chain/blocks/importBlock.js.map +1 -1
  16. package/lib/chain/blocks/verifyBlocksStateTransitionOnly.d.ts.map +1 -1
  17. package/lib/chain/blocks/verifyBlocksStateTransitionOnly.js +1 -0
  18. package/lib/chain/blocks/verifyBlocksStateTransitionOnly.js.map +1 -1
  19. package/lib/chain/chain.d.ts +3 -2
  20. package/lib/chain/chain.d.ts.map +1 -1
  21. package/lib/chain/chain.js +16 -6
  22. package/lib/chain/chain.js.map +1 -1
  23. package/lib/chain/interface.d.ts +2 -2
  24. package/lib/chain/interface.d.ts.map +1 -1
  25. package/lib/chain/lightClient/proofs.d.ts.map +1 -1
  26. package/lib/chain/lightClient/proofs.js +0 -2
  27. package/lib/chain/lightClient/proofs.js.map +1 -1
  28. package/lib/chain/opPools/aggregatedAttestationPool.d.ts +2 -3
  29. package/lib/chain/opPools/aggregatedAttestationPool.d.ts.map +1 -1
  30. package/lib/chain/opPools/aggregatedAttestationPool.js +5 -130
  31. package/lib/chain/opPools/aggregatedAttestationPool.js.map +1 -1
  32. package/lib/chain/prepareNextSlot.d.ts.map +1 -1
  33. package/lib/chain/prepareNextSlot.js +4 -7
  34. package/lib/chain/prepareNextSlot.js.map +1 -1
  35. package/lib/chain/regen/interface.d.ts +1 -5
  36. package/lib/chain/regen/interface.d.ts.map +1 -1
  37. package/lib/chain/regen/queued.d.ts +4 -7
  38. package/lib/chain/regen/queued.d.ts.map +1 -1
  39. package/lib/chain/regen/queued.js +15 -25
  40. package/lib/chain/regen/queued.js.map +1 -1
  41. package/lib/chain/regen/regen.d.ts +1 -1
  42. package/lib/chain/regen/regen.d.ts.map +1 -1
  43. package/lib/chain/regen/regen.js +13 -17
  44. package/lib/chain/regen/regen.js.map +1 -1
  45. package/lib/chain/shufflingCache.d.ts +5 -12
  46. package/lib/chain/shufflingCache.d.ts.map +1 -1
  47. package/lib/chain/shufflingCache.js +12 -50
  48. package/lib/chain/shufflingCache.js.map +1 -1
  49. package/lib/chain/stateCache/blockStateCacheImpl.d.ts +1 -2
  50. package/lib/chain/stateCache/blockStateCacheImpl.d.ts.map +1 -1
  51. package/lib/chain/stateCache/blockStateCacheImpl.js +2 -2
  52. package/lib/chain/stateCache/blockStateCacheImpl.js.map +1 -1
  53. package/lib/chain/stateCache/fifoBlockStateCache.d.ts +1 -2
  54. package/lib/chain/stateCache/fifoBlockStateCache.d.ts.map +1 -1
  55. package/lib/chain/stateCache/fifoBlockStateCache.js +4 -4
  56. package/lib/chain/stateCache/fifoBlockStateCache.js.map +1 -1
  57. package/lib/chain/stateCache/inMemoryCheckpointsCache.d.ts +4 -5
  58. package/lib/chain/stateCache/inMemoryCheckpointsCache.d.ts.map +1 -1
  59. package/lib/chain/stateCache/inMemoryCheckpointsCache.js +9 -10
  60. package/lib/chain/stateCache/inMemoryCheckpointsCache.js.map +1 -1
  61. package/lib/chain/stateCache/persistentCheckpointsCache.d.ts +5 -6
  62. package/lib/chain/stateCache/persistentCheckpointsCache.d.ts.map +1 -1
  63. package/lib/chain/stateCache/persistentCheckpointsCache.js +17 -17
  64. package/lib/chain/stateCache/persistentCheckpointsCache.js.map +1 -1
  65. package/lib/chain/stateCache/types.d.ts +5 -6
  66. package/lib/chain/stateCache/types.d.ts.map +1 -1
  67. package/lib/chain/stateCache/types.js.map +1 -1
  68. package/lib/chain/validation/attesterSlashing.d.ts.map +1 -1
  69. package/lib/chain/validation/attesterSlashing.js +1 -1
  70. package/lib/chain/validation/attesterSlashing.js.map +1 -1
  71. package/lib/chain/validation/blsToExecutionChange.d.ts.map +1 -1
  72. package/lib/chain/validation/blsToExecutionChange.js +9 -2
  73. package/lib/chain/validation/blsToExecutionChange.js.map +1 -1
  74. package/lib/chain/validation/proposerSlashing.js +2 -1
  75. package/lib/chain/validation/proposerSlashing.js.map +1 -1
  76. package/lib/db/repositories/stateArchive.d.ts +1 -1
  77. package/lib/db/repositories/stateArchive.d.ts.map +1 -1
  78. package/lib/db/repositories/stateArchive.js +2 -2
  79. package/lib/db/repositories/stateArchive.js.map +1 -1
  80. package/lib/execution/engine/mock.d.ts +9 -6
  81. package/lib/execution/engine/mock.d.ts.map +1 -1
  82. package/lib/execution/engine/mock.js +34 -7
  83. package/lib/execution/engine/mock.js.map +1 -1
  84. package/lib/metrics/metrics/lodestar.d.ts +1 -6
  85. package/lib/metrics/metrics/lodestar.d.ts.map +1 -1
  86. package/lib/metrics/metrics/lodestar.js +3 -17
  87. package/lib/metrics/metrics/lodestar.js.map +1 -1
  88. package/lib/network/reqresp/utils/dataColumnResponseValidation.js +1 -1
  89. package/lib/network/reqresp/utils/dataColumnResponseValidation.js.map +1 -1
  90. package/lib/node/nodejs.d.ts.map +1 -1
  91. package/lib/node/nodejs.js +17 -2
  92. package/lib/node/nodejs.js.map +1 -1
  93. package/lib/sync/backfill/backfill.d.ts.map +1 -1
  94. package/lib/sync/backfill/backfill.js +2 -2
  95. package/lib/sync/backfill/backfill.js.map +1 -1
  96. package/lib/sync/backfill/verify.d.ts +2 -2
  97. package/lib/sync/backfill/verify.d.ts.map +1 -1
  98. package/lib/sync/backfill/verify.js +2 -2
  99. package/lib/sync/backfill/verify.js.map +1 -1
  100. package/lib/util/sszBytes.js +1 -1
  101. package/lib/util/sszBytes.js.map +1 -1
  102. package/package.json +15 -15
  103. package/src/api/impl/beacon/state/utils.ts +2 -22
  104. package/src/api/impl/lodestar/index.ts +1 -1
  105. package/src/api/impl/proof/index.ts +1 -2
  106. package/src/api/impl/validator/index.ts +1 -3
  107. package/src/chain/blocks/importBlock.ts +9 -2
  108. package/src/chain/blocks/verifyBlocksStateTransitionOnly.ts +1 -0
  109. package/src/chain/chain.ts +20 -9
  110. package/src/chain/interface.ts +2 -2
  111. package/src/chain/lightClient/proofs.ts +0 -2
  112. package/src/chain/opPools/aggregatedAttestationPool.ts +6 -181
  113. package/src/chain/prepareNextSlot.ts +2 -6
  114. package/src/chain/regen/interface.ts +1 -5
  115. package/src/chain/regen/queued.ts +15 -34
  116. package/src/chain/regen/regen.ts +12 -18
  117. package/src/chain/shufflingCache.ts +15 -61
  118. package/src/chain/stateCache/blockStateCacheImpl.ts +2 -3
  119. package/src/chain/stateCache/fifoBlockStateCache.ts +4 -5
  120. package/src/chain/stateCache/inMemoryCheckpointsCache.ts +9 -15
  121. package/src/chain/stateCache/persistentCheckpointsCache.ts +17 -25
  122. package/src/chain/stateCache/types.ts +5 -10
  123. package/src/chain/validation/attesterSlashing.ts +8 -1
  124. package/src/chain/validation/blsToExecutionChange.ts +9 -7
  125. package/src/chain/validation/proposerSlashing.ts +2 -1
  126. package/src/db/repositories/stateArchive.ts +2 -2
  127. package/src/execution/engine/mock.ts +40 -13
  128. package/src/metrics/metrics/lodestar.ts +3 -17
  129. package/src/network/reqresp/utils/dataColumnResponseValidation.ts +1 -1
  130. package/src/node/nodejs.ts +18 -3
  131. package/src/sync/backfill/backfill.ts +2 -14
  132. package/src/sync/backfill/verify.ts +1 -7
  133. package/src/util/sszBytes.ts +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"sszBytes.js","sourceRoot":"","sources":["../../src/util/sszBytes.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sszBytes.js","sourceRoot":"","sources":["../../src/util/sszBytes.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -11,7 +11,7 @@
11
11
  "bugs": {
12
12
  "url": "https://github.com/ChainSafe/lodestar/issues"
13
13
  },
14
- "version": "1.39.0-dev.95389042f8",
14
+ "version": "1.39.0-dev.ad129ced66",
15
15
  "type": "module",
16
16
  "exports": {
17
17
  ".": {
@@ -134,18 +134,18 @@
134
134
  "@libp2p/peer-id": "^5.1.0",
135
135
  "@libp2p/prometheus-metrics": "^4.3.15",
136
136
  "@libp2p/tcp": "^10.1.8",
137
- "@lodestar/api": "^1.39.0-dev.95389042f8",
138
- "@lodestar/config": "^1.39.0-dev.95389042f8",
139
- "@lodestar/db": "^1.39.0-dev.95389042f8",
140
- "@lodestar/fork-choice": "^1.39.0-dev.95389042f8",
141
- "@lodestar/light-client": "^1.39.0-dev.95389042f8",
142
- "@lodestar/logger": "^1.39.0-dev.95389042f8",
143
- "@lodestar/params": "^1.39.0-dev.95389042f8",
144
- "@lodestar/reqresp": "^1.39.0-dev.95389042f8",
145
- "@lodestar/state-transition": "^1.39.0-dev.95389042f8",
146
- "@lodestar/types": "^1.39.0-dev.95389042f8",
147
- "@lodestar/utils": "^1.39.0-dev.95389042f8",
148
- "@lodestar/validator": "^1.39.0-dev.95389042f8",
137
+ "@lodestar/api": "^1.39.0-dev.ad129ced66",
138
+ "@lodestar/config": "^1.39.0-dev.ad129ced66",
139
+ "@lodestar/db": "^1.39.0-dev.ad129ced66",
140
+ "@lodestar/fork-choice": "^1.39.0-dev.ad129ced66",
141
+ "@lodestar/light-client": "^1.39.0-dev.ad129ced66",
142
+ "@lodestar/logger": "^1.39.0-dev.ad129ced66",
143
+ "@lodestar/params": "^1.39.0-dev.ad129ced66",
144
+ "@lodestar/reqresp": "^1.39.0-dev.ad129ced66",
145
+ "@lodestar/state-transition": "^1.39.0-dev.ad129ced66",
146
+ "@lodestar/types": "^1.39.0-dev.ad129ced66",
147
+ "@lodestar/utils": "^1.39.0-dev.ad129ced66",
148
+ "@lodestar/validator": "^1.39.0-dev.ad129ced66",
149
149
  "@multiformats/multiaddr": "^12.1.3",
150
150
  "datastore-core": "^10.0.2",
151
151
  "datastore-fs": "^10.0.6",
@@ -169,7 +169,7 @@
169
169
  "@chainsafe/swap-or-not-shuffle": "^1.2.1",
170
170
  "@libp2p/interface-internal": "^2.3.18",
171
171
  "@libp2p/logger": "^5.1.21",
172
- "@lodestar/spec-test-util": "^1.39.0-dev.95389042f8",
172
+ "@lodestar/spec-test-util": "^1.39.0-dev.ad129ced66",
173
173
  "@types/js-yaml": "^4.0.5",
174
174
  "@types/qs": "^6.9.7",
175
175
  "@types/tmp": "^0.2.3",
@@ -188,5 +188,5 @@
188
188
  "beacon",
189
189
  "blockchain"
190
190
  ],
191
- "gitHead": "91cd15e1cf60dd7d4fca43db6d92caf78ab64b17"
191
+ "gitHead": "530782824aadb2d9875d1fa8cbae5428a131e117"
192
192
  }
@@ -2,7 +2,7 @@ import {PubkeyIndexMap} from "@chainsafe/pubkey-index-map";
2
2
  import {routes} from "@lodestar/api";
3
3
  import {CheckpointWithHex, IForkChoice} from "@lodestar/fork-choice";
4
4
  import {GENESIS_SLOT} from "@lodestar/params";
5
- import {BeaconStateAllForks} from "@lodestar/state-transition";
5
+ import {BeaconStateAllForks, CachedBeaconStateAllForks} from "@lodestar/state-transition";
6
6
  import {BLSPubkey, Epoch, RootHex, Slot, ValidatorIndex, getValidatorStatus, phase0} from "@lodestar/types";
7
7
  import {fromHex} from "@lodestar/utils";
8
8
  import {IBeaconChain} from "../../../../chain/index.js";
@@ -41,30 +41,10 @@ export function resolveStateId(
41
41
  return blockSlot;
42
42
  }
43
43
 
44
- export async function getStateResponse(
45
- chain: IBeaconChain,
46
- inStateId: routes.beacon.StateId
47
- ): Promise<{state: BeaconStateAllForks; executionOptimistic: boolean; finalized: boolean}> {
48
- const stateId = resolveStateId(chain.forkChoice, inStateId);
49
-
50
- const res =
51
- typeof stateId === "string"
52
- ? await chain.getStateByStateRoot(stateId)
53
- : typeof stateId === "number"
54
- ? await chain.getStateBySlot(stateId)
55
- : chain.getStateByCheckpoint(stateId);
56
-
57
- if (!res) {
58
- throw new ApiError(404, `State not found for id '${inStateId}'`);
59
- }
60
-
61
- return res;
62
- }
63
-
64
44
  export async function getStateResponseWithRegen(
65
45
  chain: IBeaconChain,
66
46
  inStateId: routes.beacon.StateId
67
- ): Promise<{state: BeaconStateAllForks | Uint8Array; executionOptimistic: boolean; finalized: boolean}> {
47
+ ): Promise<{state: CachedBeaconStateAllForks | Uint8Array; executionOptimistic: boolean; finalized: boolean}> {
68
48
  const stateId = resolveStateId(chain.forkChoice, inStateId);
69
49
 
70
50
  const res =
@@ -198,7 +198,7 @@ export function getLodestarApi({
198
198
  const {state, executionOptimistic, finalized} = await getStateResponseWithRegen(chain, stateId);
199
199
 
200
200
  const stateView = (
201
- state instanceof Uint8Array ? loadState(config, chain.getHeadState(), state).state : state.clone()
201
+ state instanceof Uint8Array ? loadState(config, chain.getHeadState(), state).state : state
202
202
  ) as BeaconStateCapella;
203
203
 
204
204
  const fork = config.getForkName(stateView.slot);
@@ -27,8 +27,7 @@ export function getProofApi(
27
27
  const state =
28
28
  res.state instanceof Uint8Array ? loadState(config, chain.getHeadState(), res.state).state : res.state;
29
29
 
30
- // Commit any changes before computing the state root. In normal cases the state should have no changes here
31
- state.commit();
30
+ // there should be no state changes in beacon-node so no need to commit() here
32
31
  const stateNode = state.node;
33
32
 
34
33
  const proof = createProof(stateNode, {type: ProofType.compactMulti, descriptor});
@@ -1040,9 +1040,7 @@ export function getValidatorApi(
1040
1040
  const res = await getStateResponseWithRegen(chain, startSlot);
1041
1041
 
1042
1042
  const stateViewDU =
1043
- res.state instanceof Uint8Array
1044
- ? loadState(config, chain.getHeadState(), res.state).state
1045
- : res.state.clone();
1043
+ res.state instanceof Uint8Array ? loadState(config, chain.getHeadState(), res.state).state : res.state;
1046
1044
 
1047
1045
  state = createCachedBeaconState(
1048
1046
  stateViewDU,
@@ -418,13 +418,20 @@ export async function importBlock(
418
418
  this.logger.verbose("After importBlock caching postState without SSZ cache", {slot: postState.slot});
419
419
  }
420
420
 
421
+ // Cache shufflings when crossing an epoch boundary
422
+ const parentEpoch = computeEpochAtSlot(parentBlockSlot);
423
+ if (parentEpoch < blockEpoch) {
424
+ this.shufflingCache.processState(postState);
425
+ this.logger.verbose("Processed shuffling for next epoch", {parentEpoch, blockEpoch, slot: blockSlot});
426
+ }
427
+
421
428
  if (blockSlot % SLOTS_PER_EPOCH === 0) {
422
429
  // Cache state to preserve epoch transition work
423
430
  const checkpointState = postState;
424
431
  const cp = getCheckpointFromState(checkpointState);
425
432
  this.regen.addCheckpointState(cp, checkpointState);
426
- // consumers should not mutate or get the transfered cache
427
- this.emitter.emit(ChainEvent.checkpoint, cp, checkpointState.clone(true));
433
+ // consumers should not mutate state ever
434
+ this.emitter.emit(ChainEvent.checkpoint, cp, checkpointState);
428
435
 
429
436
  // Note: in-lined code from previos handler of ChainEvent.checkpoint
430
437
  this.logger.verbose("Checkpoint processed", toCheckpointHex(cp));
@@ -59,6 +59,7 @@ export async function verifyBlocksStateTransitionOnly(
59
59
  // if block is trusted don't verify proposer or op signature
60
60
  verifyProposer: !useBlsBatchVerify && !validSignatures && !validProposerSignature,
61
61
  verifySignatures: !useBlsBatchVerify && !validSignatures,
62
+ dontTransferCache: false,
62
63
  },
63
64
  {metrics, validatorMonitor}
64
65
  );
@@ -52,6 +52,7 @@ import {computeNodeIdFromPrivateKey} from "../network/subnets/interface.js";
52
52
  import {BufferPool} from "../util/bufferPool.js";
53
53
  import {Clock, ClockEvent, IClock} from "../util/clock.js";
54
54
  import {CustodyConfig, getValidatorsCustodyRequirement} from "../util/dataColumns.js";
55
+ import {callInNextEventLoop} from "../util/eventLoop.js";
55
56
  import {ensureDir, writeIfNotExist} from "../util/file.js";
56
57
  import {isOptimisticBlock} from "../util/forkChoice.js";
57
58
  import {SerializedCache} from "../util/serializedCache.js";
@@ -291,7 +292,8 @@ export class BeaconChain implements IBeaconChain {
291
292
  });
292
293
 
293
294
  this._earliestAvailableSlot = anchorState.slot;
294
- this.shufflingCache = anchorState.epochCtx.shufflingCache = new ShufflingCache(metrics, logger, this.opts, [
295
+
296
+ this.shufflingCache = new ShufflingCache(metrics, logger, this.opts, [
295
297
  {
296
298
  shuffling: anchorState.epochCtx.previousShuffling,
297
299
  decisionRoot: anchorState.epochCtx.previousDecisionRoot,
@@ -417,6 +419,7 @@ export class BeaconChain implements IBeaconChain {
417
419
  clock.addListener(ClockEvent.epoch, this.onClockEpoch.bind(this));
418
420
  emitter.addListener(ChainEvent.forkChoiceFinalized, this.onForkChoiceFinalized.bind(this));
419
421
  emitter.addListener(ChainEvent.forkChoiceJustified, this.onForkChoiceJustified.bind(this));
422
+ emitter.addListener(ChainEvent.checkpoint, this.onCheckpoint.bind(this));
420
423
  }
421
424
 
422
425
  async init(): Promise<void> {
@@ -504,7 +507,7 @@ export class BeaconChain implements IBeaconChain {
504
507
  async getStateBySlot(
505
508
  slot: Slot,
506
509
  opts?: StateGetOpts
507
- ): Promise<{state: BeaconStateAllForks; executionOptimistic: boolean; finalized: boolean} | null> {
510
+ ): Promise<{state: CachedBeaconStateAllForks; executionOptimistic: boolean; finalized: boolean} | null> {
508
511
  const finalizedBlock = this.forkChoice.getFinalizedBlock();
509
512
 
510
513
  if (slot < finalizedBlock.slot) {
@@ -559,7 +562,7 @@ export class BeaconChain implements IBeaconChain {
559
562
  async getStateByStateRoot(
560
563
  stateRoot: RootHex,
561
564
  opts?: StateGetOpts
562
- ): Promise<{state: BeaconStateAllForks; executionOptimistic: boolean; finalized: boolean} | null> {
565
+ ): Promise<{state: CachedBeaconStateAllForks | Uint8Array; executionOptimistic: boolean; finalized: boolean} | null> {
563
566
  if (opts?.allowRegen) {
564
567
  const state = await this.regen.getState(stateRoot, RegenCaller.restApi);
565
568
  const block = this.forkChoice.getBlock(state.latestBlockHeader.hashTreeRoot());
@@ -587,7 +590,8 @@ export class BeaconChain implements IBeaconChain {
587
590
  };
588
591
  }
589
592
 
590
- const data = await this.db.stateArchive.getByRoot(fromHex(stateRoot));
593
+ // this is mostly useful for a node with `--chain.archiveStateEpochFrequency 1`
594
+ const data = await this.db.stateArchive.getBinaryByRoot(fromHex(stateRoot));
591
595
  return data && {state: data, executionOptimistic: false, finalized: true};
592
596
  }
593
597
 
@@ -980,8 +984,8 @@ export class BeaconChain implements IBeaconChain {
980
984
  this.metrics?.gossipAttestation.useHeadBlockState.inc({caller: regenCaller});
981
985
  state = await this.regen.getState(attHeadBlock.stateRoot, regenCaller);
982
986
  }
983
-
984
- // should always be the current epoch of the active context so no need to await a result from the ShufflingCache
987
+ // resolve the promise to unblock other calls of the same epoch and dependent root
988
+ this.shufflingCache.processState(state);
985
989
  return state.epochCtx.getShufflingAtEpoch(attEpoch);
986
990
  }
987
991
 
@@ -1165,6 +1169,13 @@ export class BeaconChain implements IBeaconChain {
1165
1169
  this.logger.verbose("Fork choice justified", {epoch: cp.epoch, root: cp.rootHex});
1166
1170
  }
1167
1171
 
1172
+ private onCheckpoint(this: BeaconChain, _checkpoint: phase0.Checkpoint, state: CachedBeaconStateAllForks): void {
1173
+ // Defer to not block other checkpoint event handlers, which can cause lightclient update delays
1174
+ callInNextEventLoop(() => {
1175
+ this.shufflingCache.processState(state);
1176
+ });
1177
+ }
1178
+
1168
1179
  private async onForkChoiceFinalized(this: BeaconChain, cp: CheckpointWithHex): Promise<void> {
1169
1180
  this.logger.verbose("Fork choice finalized", {epoch: cp.epoch, root: cp.rootHex});
1170
1181
  this.seenBlockProposers.prune(computeStartSlotAtEpoch(cp.epoch));
@@ -1295,9 +1306,9 @@ export class BeaconChain implements IBeaconChain {
1295
1306
 
1296
1307
  preState = processSlots(preState, block.slot); // Dial preState's slot to block.slot
1297
1308
 
1298
- const postState = this.regen.getStateSync(toRootHex(block.stateRoot)) ?? undefined;
1309
+ const proposerRewards = this.regen.getStateSync(toRootHex(block.stateRoot))?.proposerRewards ?? undefined;
1299
1310
 
1300
- return computeBlockRewards(this.config, block, preState.clone(), postState?.clone());
1311
+ return computeBlockRewards(this.config, block, preState, proposerRewards);
1301
1312
  }
1302
1313
 
1303
1314
  async getAttestationsRewards(
@@ -1338,6 +1349,6 @@ export class BeaconChain implements IBeaconChain {
1338
1349
 
1339
1350
  preState = processSlots(preState, block.slot); // Dial preState's slot to block.slot
1340
1351
 
1341
- return computeSyncCommitteeRewards(this.config, this.index2pubkey, block, preState.clone(), validatorIds);
1352
+ return computeSyncCommitteeRewards(this.config, this.index2pubkey, block, preState, validatorIds);
1342
1353
  }
1343
1354
  }
@@ -168,12 +168,12 @@ export interface IBeaconChain {
168
168
  getStateBySlot(
169
169
  slot: Slot,
170
170
  opts?: StateGetOpts
171
- ): Promise<{state: BeaconStateAllForks; executionOptimistic: boolean; finalized: boolean} | null>;
171
+ ): Promise<{state: CachedBeaconStateAllForks; executionOptimistic: boolean; finalized: boolean} | null>;
172
172
  /** Returns a local state by state root */
173
173
  getStateByStateRoot(
174
174
  stateRoot: RootHex,
175
175
  opts?: StateGetOpts
176
- ): Promise<{state: BeaconStateAllForks; executionOptimistic: boolean; finalized: boolean} | null>;
176
+ ): Promise<{state: CachedBeaconStateAllForks | Uint8Array; executionOptimistic: boolean; finalized: boolean} | null>;
177
177
  /** Return serialized bytes of a persisted checkpoint state */
178
178
  getPersistedCheckpointState(checkpoint?: phase0.Checkpoint): Promise<Uint8Array | null>;
179
179
  /** Returns a cached state by checkpoint */
@@ -12,7 +12,6 @@ import {BeaconBlockBody, SSZTypesFor, ssz} from "@lodestar/types";
12
12
  import {SyncCommitteeWitness} from "./types.js";
13
13
 
14
14
  export function getSyncCommitteesWitness(fork: ForkName, state: BeaconStateAllForks): SyncCommitteeWitness {
15
- state.commit();
16
15
  const n1 = state.node;
17
16
  let witness: Uint8Array[];
18
17
  let currentSyncCommitteeRoot: Uint8Array;
@@ -71,7 +70,6 @@ export function getCurrentSyncCommitteeBranch(syncCommitteesWitness: SyncCommitt
71
70
  }
72
71
 
73
72
  export function getFinalizedRootProof(state: CachedBeaconStateAllForks): Uint8Array[] {
74
- state.commit();
75
73
  const finalizedRootGindex = state.epochCtx.isPostElectra() ? FINALIZED_ROOT_GINDEX_ELECTRA : FINALIZED_ROOT_GINDEX;
76
74
  return new Tree(state.node).getSingleProof(BigInt(finalizedRootGindex));
77
75
  }
@@ -5,7 +5,6 @@ import {IForkChoice} from "@lodestar/fork-choice";
5
5
  import {
6
6
  ForkName,
7
7
  ForkSeq,
8
- MAX_ATTESTATIONS,
9
8
  MAX_ATTESTATIONS_ELECTRA,
10
9
  MAX_COMMITTEES_PER_SLOT,
11
10
  MIN_ATTESTATION_INCLUSION_DELAY,
@@ -23,7 +22,6 @@ import {
23
22
  CachedBeaconStateAllForks,
24
23
  CachedBeaconStateAltair,
25
24
  CachedBeaconStateGloas,
26
- CachedBeaconStatePhase0,
27
25
  EffectiveBalanceIncrements,
28
26
  RootCache,
29
27
  computeEpochAtSlot,
@@ -32,17 +30,7 @@ import {
32
30
  getAttestationParticipationStatus,
33
31
  getBlockRootAtSlot,
34
32
  } from "@lodestar/state-transition";
35
- import {
36
- Attestation,
37
- Epoch,
38
- RootHex,
39
- Slot,
40
- ValidatorIndex,
41
- electra,
42
- isElectraAttestation,
43
- phase0,
44
- ssz,
45
- } from "@lodestar/types";
33
+ import {Attestation, Epoch, RootHex, Slot, electra, isElectraAttestation, phase0, ssz} from "@lodestar/types";
46
34
  import {MapDef, assert, toRootHex} from "@lodestar/utils";
47
35
  import {Metrics} from "../../metrics/metrics.js";
48
36
  import {IntersectResult, intersectUint8Arrays} from "../../util/bitArray.js";
@@ -54,8 +42,6 @@ type DataRootHex = string;
54
42
 
55
43
  type CommitteeIndex = number;
56
44
 
57
- // for pre-electra
58
- type AttestationWithScore = {attestation: Attestation; score: number};
59
45
  /**
60
46
  * for electra, this is to consolidate aggregated attestations of the same attestation data into a single attestation to be included in block
61
47
  * note that this is local definition in this file and it's NOT validator consolidation
@@ -110,15 +96,6 @@ const MAX_RETAINED_ATTESTATIONS_PER_GROUP = 4;
110
96
  */
111
97
  const MAX_RETAINED_ATTESTATIONS_PER_GROUP_ELECTRA = 8;
112
98
 
113
- /**
114
- * Pre-electra, each slot has 64 committees, and each block has 128 attestations max so in average
115
- * we get 2 attestation per groups.
116
- * Starting from Jan 2024, we have a performance issue getting attestations for a block. Based on the
117
- * fact that lot of groups will have only 1 full participation attestation, increase this number
118
- * a bit higher than average. This also help decrease number of slots to search for attestations.
119
- */
120
- const MAX_ATTESTATIONS_PER_GROUP = 3;
121
-
122
99
  /**
123
100
  * For electra, there is on chain aggregation of attestations across committees, so we can just pick up to 8
124
101
  * attestations per group, sort by scores to get first 8.
@@ -241,112 +218,11 @@ export class AggregatedAttestationPool {
241
218
  * Get attestations to be included in a block pre-electra. Returns up to $MAX_ATTESTATIONS items
242
219
  */
243
220
  getAttestationsForBlockPreElectra(
244
- fork: ForkName,
245
- forkChoice: IForkChoice,
246
- state: CachedBeaconStateAllForks
221
+ _fork: ForkName,
222
+ _forkChoice: IForkChoice,
223
+ _state: CachedBeaconStateAllForks
247
224
  ): phase0.Attestation[] {
248
- const stateSlot = state.slot;
249
- const stateEpoch = state.epochCtx.epoch;
250
- const statePrevEpoch = stateEpoch - 1;
251
-
252
- const notSeenValidatorsFn = getNotSeenValidatorsFn(this.config, state);
253
- const validateAttestationDataFn = getValidateAttestationDataFn(forkChoice, state);
254
-
255
- const attestationsByScore: AttestationWithScore[] = [];
256
-
257
- const slots = Array.from(this.attestationGroupByIndexByDataHexBySlot.keys()).sort((a, b) => b - a);
258
- let minScore = Number.MAX_SAFE_INTEGER;
259
- let slotCount = 0;
260
- slot: for (const slot of slots) {
261
- slotCount++;
262
- const attestationGroupByIndexByDataHash = this.attestationGroupByIndexByDataHexBySlot.get(slot);
263
- // should not happen
264
- if (!attestationGroupByIndexByDataHash) {
265
- throw Error(`No aggregated attestation pool for slot=${slot}`);
266
- }
267
-
268
- const epoch = computeEpochAtSlot(slot);
269
- // validateAttestation condition: Attestation target epoch not in previous or current epoch
270
- if (!(epoch === stateEpoch || epoch === statePrevEpoch)) {
271
- continue; // Invalid attestations
272
- }
273
- // validateAttestation condition: Attestation slot not within inclusion window
274
- if (
275
- !(
276
- slot + MIN_ATTESTATION_INCLUSION_DELAY <= stateSlot &&
277
- // Post deneb, attestations are valid for current and previous epoch
278
- (ForkSeq[fork] >= ForkSeq.deneb || stateSlot <= slot + SLOTS_PER_EPOCH)
279
- )
280
- ) {
281
- continue; // Invalid attestations
282
- }
283
-
284
- const inclusionDistance = stateSlot - slot;
285
- for (const attestationGroupByIndex of attestationGroupByIndexByDataHash.values()) {
286
- for (const [committeeIndex, attestationGroup] of attestationGroupByIndex.entries()) {
287
- const notSeenCommitteeMembers = notSeenValidatorsFn(epoch, slot, committeeIndex);
288
- if (notSeenCommitteeMembers === null || notSeenCommitteeMembers.size === 0) {
289
- continue;
290
- }
291
-
292
- if (
293
- slotCount > 2 &&
294
- attestationsByScore.length >= MAX_ATTESTATIONS &&
295
- notSeenCommitteeMembers.size / inclusionDistance < minScore
296
- ) {
297
- // after 2 slots, there are a good chance that we have 2 * MAX_ATTESTATIONS attestations and break the for loop early
298
- // if not, we may have to scan all slots in the pool
299
- // if we have enough attestations and the max possible score is lower than scores of `attestationsByScore`, we should skip
300
- // otherwise it takes time to check attestation, add it and remove it later after the sort by score
301
- continue;
302
- }
303
-
304
- if (validateAttestationDataFn(attestationGroup.data) !== null) {
305
- continue;
306
- }
307
-
308
- // TODO: Is it necessary to validateAttestation for:
309
- // - Attestation committee index not within current committee count
310
- // - Attestation aggregation bits length does not match committee length
311
- //
312
- // These properties should not change after being validate in gossip
313
- // IF they have to be validated, do it only with one attestation per group since same data
314
- // The committeeCountPerSlot can be precomputed once per slot
315
- const getAttestationsResult = attestationGroup.getAttestationsForBlock(
316
- fork,
317
- state.epochCtx.effectiveBalanceIncrements,
318
- notSeenCommitteeMembers,
319
- MAX_ATTESTATIONS_PER_GROUP
320
- );
321
- for (const {attestation, newSeenEffectiveBalance} of getAttestationsResult.result) {
322
- const score = newSeenEffectiveBalance / inclusionDistance;
323
- if (score < minScore) {
324
- minScore = score;
325
- }
326
- attestationsByScore.push({
327
- attestation,
328
- score,
329
- });
330
- }
331
-
332
- // Stop accumulating attestations there are enough that may have good scoring
333
- if (attestationsByScore.length >= MAX_ATTESTATIONS * 2) {
334
- break slot;
335
- }
336
- }
337
- }
338
- }
339
-
340
- const sortedAttestationsByScore = attestationsByScore.sort((a, b) => b.score - a.score);
341
- const attestationsForBlock: phase0.Attestation[] = [];
342
- for (const [i, attestationWithScore] of sortedAttestationsByScore.entries()) {
343
- if (i >= MAX_ATTESTATIONS) {
344
- break;
345
- }
346
- // attestations could be modified in this op pool, so we need to clone for block
347
- attestationsForBlock.push(ssz.phase0.Attestation.clone(attestationWithScore.attestation));
348
- }
349
- return attestationsForBlock;
225
+ throw new Error("Does not support producing blocks for pre-electra forks anymore");
350
226
  }
351
227
 
352
228
  /**
@@ -867,38 +743,7 @@ export function aggregateConsolidation({byCommittee, attData}: AttestationsConso
867
743
  export function getNotSeenValidatorsFn(config: BeaconConfig, state: CachedBeaconStateAllForks): GetNotSeenValidatorsFn {
868
744
  const stateSlot = state.slot;
869
745
  if (config.getForkName(stateSlot) === ForkName.phase0) {
870
- // Get attestations to be included in a phase0 block.
871
- // As we are close to altair, this is not really important, it's mainly for e2e.
872
- // The performance is not great due to the different BeaconState data structure to altair.
873
- // check for phase0 block already
874
- const phase0State = state as CachedBeaconStatePhase0;
875
- const stateEpoch = computeEpochAtSlot(stateSlot);
876
-
877
- const previousEpochParticipants = extractParticipationPhase0(
878
- phase0State.previousEpochAttestations.getAllReadonly(),
879
- state
880
- );
881
- const currentEpochParticipants = extractParticipationPhase0(
882
- phase0State.currentEpochAttestations.getAllReadonly(),
883
- state
884
- );
885
-
886
- return (epoch: Epoch, slot: Slot, committeeIndex: number) => {
887
- const participants =
888
- epoch === stateEpoch ? currentEpochParticipants : epoch === stateEpoch - 1 ? previousEpochParticipants : null;
889
- if (participants === null) {
890
- return null;
891
- }
892
- const committee = state.epochCtx.getBeaconCommittee(slot, committeeIndex);
893
-
894
- const notSeenCommitteeMembers = new Set<number>();
895
- for (const [i, validatorIndex] of committee.entries()) {
896
- if (!participants.has(validatorIndex)) {
897
- notSeenCommitteeMembers.add(i);
898
- }
899
- }
900
- return notSeenCommitteeMembers.size === 0 ? null : notSeenCommitteeMembers;
901
- };
746
+ throw new Error("getNotSeenValidatorsFn is not supported phase0 state");
902
747
  }
903
748
 
904
749
  // altair and future forks
@@ -942,26 +787,6 @@ export function getNotSeenValidatorsFn(config: BeaconConfig, state: CachedBeacon
942
787
  };
943
788
  }
944
789
 
945
- export function extractParticipationPhase0(
946
- attestations: phase0.PendingAttestation[],
947
- state: CachedBeaconStateAllForks
948
- ): Set<ValidatorIndex> {
949
- const {epochCtx} = state;
950
- const allParticipants = new Set<ValidatorIndex>();
951
- for (const att of attestations) {
952
- const aggregationBits = att.aggregationBits;
953
- const attData = att.data;
954
- const attSlot = attData.slot;
955
- const committeeIndex = attData.index;
956
- const committee = epochCtx.getBeaconCommittee(attSlot, committeeIndex);
957
- const participants = aggregationBits.intersectValues(committee);
958
- for (const participant of participants) {
959
- allParticipants.add(participant);
960
- }
961
- }
962
- return allParticipants;
963
- }
964
-
965
790
  /**
966
791
  * This returns a function to validate if an attestation data is compatible to a state.
967
792
  *
@@ -117,12 +117,7 @@ export class PrepareNextSlotScheduler {
117
117
  // the slot 0 of next epoch will likely use this Previous Root Checkpoint state for state transition so we transfer cache here
118
118
  // the resulting state with cache will be cached in Checkpoint State Cache which is used for the upcoming block processing
119
119
  // for other slots dontTransferCached=true because we don't run state transition on this state
120
- //
121
- // Shuffling calculation will be done asynchronously when passing asyncShufflingCalculation=true. Shuffling will be queued in
122
- // beforeProcessEpoch and should theoretically be ready immediately after the synchronous epoch transition finished and the
123
- // event loop is free. In long periods of non-finality too many forks will cause the shufflingCache to throw an error for
124
- // too many queued shufflings so only run async during normal epoch transition. See issue ChainSafe/lodestar#7244
125
- {dontTransferCache: !isEpochTransition, asyncShufflingCalculation: true},
120
+ {dontTransferCache: !isEpochTransition},
126
121
  RegenCaller.precomputeEpoch
127
122
  );
128
123
 
@@ -148,6 +143,7 @@ export class PrepareNextSlotScheduler {
148
143
  updatedPrepareState = (await this.chain.regen.getBlockSlotState(
149
144
  proposerHeadRoot,
150
145
  prepareSlot,
146
+ // only transfer cache if epoch transition because that's the state we will use to stateTransition() the 1st block of epoch
151
147
  {dontTransferCache: !isEpochTransition},
152
148
  RegenCaller.predictProposerHead
153
149
  )) as CachedBeaconStateExecutions;
@@ -31,10 +31,6 @@ export enum RegenFnName {
31
31
 
32
32
  export type StateRegenerationOpts = {
33
33
  dontTransferCache: boolean;
34
- /**
35
- * Do not queue shuffling calculation async. Forces sync JIT calculation in afterProcessEpoch if not passed as `true`
36
- */
37
- asyncShufflingCalculation?: boolean;
38
34
  };
39
35
 
40
36
  export interface IStateRegenerator extends IStateRegeneratorInternal {
@@ -90,5 +86,5 @@ export interface IStateRegeneratorInternal {
90
86
  /**
91
87
  * Return the exact state with `stateRoot`
92
88
  */
93
- getState(stateRoot: RootHex, rCaller: RegenCaller, opts?: StateRegenerationOpts): Promise<CachedBeaconStateAllForks>;
89
+ getState(stateRoot: RootHex, rCaller: RegenCaller): Promise<CachedBeaconStateAllForks>;
94
90
  }