@lodestar/beacon-node 1.22.0-dev.6f470f8a35 → 1.22.0-dev.9f4bf50408

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 (148) hide show
  1. package/lib/api/impl/beacon/blocks/index.js +14 -2
  2. package/lib/api/impl/beacon/blocks/index.js.map +1 -1
  3. package/lib/api/impl/beacon/pool/index.js +31 -4
  4. package/lib/api/impl/beacon/pool/index.js.map +1 -1
  5. package/lib/api/impl/config/constants.d.ts +5 -1
  6. package/lib/api/impl/config/constants.js +7 -2
  7. package/lib/api/impl/config/constants.js.map +1 -1
  8. package/lib/api/impl/validator/index.js +26 -4
  9. package/lib/api/impl/validator/index.js.map +1 -1
  10. package/lib/chain/archiver/archiveStates.d.ts +3 -1
  11. package/lib/chain/archiver/archiveStates.js +6 -3
  12. package/lib/chain/archiver/archiveStates.js.map +1 -1
  13. package/lib/chain/archiver/index.js +1 -1
  14. package/lib/chain/archiver/index.js.map +1 -1
  15. package/lib/chain/blocks/importBlock.js +6 -5
  16. package/lib/chain/blocks/importBlock.js.map +1 -1
  17. package/lib/chain/blocks/types.d.ts +2 -2
  18. package/lib/chain/blocks/types.js.map +1 -1
  19. package/lib/chain/chain.d.ts +42 -0
  20. package/lib/chain/chain.js +35 -3
  21. package/lib/chain/chain.js.map +1 -1
  22. package/lib/chain/errors/attestationError.d.ts +13 -1
  23. package/lib/chain/errors/attestationError.js +8 -0
  24. package/lib/chain/errors/attestationError.js.map +1 -1
  25. package/lib/chain/historicalState/worker.js +4 -0
  26. package/lib/chain/historicalState/worker.js.map +1 -1
  27. package/lib/chain/initState.d.ts +3 -3
  28. package/lib/chain/initState.js +7 -6
  29. package/lib/chain/initState.js.map +1 -1
  30. package/lib/chain/interface.d.ts +2 -0
  31. package/lib/chain/interface.js.map +1 -1
  32. package/lib/chain/opPools/aggregatedAttestationPool.d.ts +46 -12
  33. package/lib/chain/opPools/aggregatedAttestationPool.js +226 -59
  34. package/lib/chain/opPools/aggregatedAttestationPool.js.map +1 -1
  35. package/lib/chain/opPools/attestationPool.d.ts +22 -6
  36. package/lib/chain/opPools/attestationPool.js +61 -27
  37. package/lib/chain/opPools/attestationPool.js.map +1 -1
  38. package/lib/chain/opPools/opPool.d.ts +2 -2
  39. package/lib/chain/opPools/opPool.js +7 -5
  40. package/lib/chain/opPools/opPool.js.map +1 -1
  41. package/lib/chain/opPools/utils.d.ts +2 -0
  42. package/lib/chain/opPools/utils.js +3 -0
  43. package/lib/chain/opPools/utils.js.map +1 -1
  44. package/lib/chain/produceBlock/produceBlockBody.js +2 -1
  45. package/lib/chain/produceBlock/produceBlockBody.js.map +1 -1
  46. package/lib/chain/regen/queued.d.ts +6 -1
  47. package/lib/chain/regen/queued.js +38 -0
  48. package/lib/chain/regen/queued.js.map +1 -1
  49. package/lib/chain/regen/regen.d.ts +1 -1
  50. package/lib/chain/regen/regen.js +47 -11
  51. package/lib/chain/regen/regen.js.map +1 -1
  52. package/lib/chain/seenCache/seenAttestationData.d.ts +13 -5
  53. package/lib/chain/seenCache/seenAttestationData.js +5 -3
  54. package/lib/chain/seenCache/seenAttestationData.js.map +1 -1
  55. package/lib/chain/serializeState.d.ts +6 -0
  56. package/lib/chain/serializeState.js +22 -0
  57. package/lib/chain/serializeState.js.map +1 -0
  58. package/lib/chain/stateCache/blockStateCacheImpl.d.ts +1 -0
  59. package/lib/chain/stateCache/blockStateCacheImpl.js +4 -1
  60. package/lib/chain/stateCache/blockStateCacheImpl.js.map +1 -1
  61. package/lib/chain/stateCache/datastore/file.js +5 -4
  62. package/lib/chain/stateCache/datastore/file.js.map +1 -1
  63. package/lib/chain/stateCache/fifoBlockStateCache.d.ts +1 -0
  64. package/lib/chain/stateCache/fifoBlockStateCache.js +3 -0
  65. package/lib/chain/stateCache/fifoBlockStateCache.js.map +1 -1
  66. package/lib/chain/stateCache/inMemoryCheckpointsCache.d.ts +1 -0
  67. package/lib/chain/stateCache/inMemoryCheckpointsCache.js +3 -0
  68. package/lib/chain/stateCache/inMemoryCheckpointsCache.js.map +1 -1
  69. package/lib/chain/stateCache/persistentCheckpointsCache.d.ts +2 -2
  70. package/lib/chain/stateCache/persistentCheckpointsCache.js +27 -51
  71. package/lib/chain/stateCache/persistentCheckpointsCache.js.map +1 -1
  72. package/lib/chain/stateCache/types.d.ts +4 -0
  73. package/lib/chain/stateCache/types.js.map +1 -1
  74. package/lib/chain/validation/aggregateAndProof.d.ts +4 -4
  75. package/lib/chain/validation/aggregateAndProof.js +24 -7
  76. package/lib/chain/validation/aggregateAndProof.js.map +1 -1
  77. package/lib/chain/validation/attestation.d.ts +27 -6
  78. package/lib/chain/validation/attestation.js +109 -31
  79. package/lib/chain/validation/attestation.js.map +1 -1
  80. package/lib/chain/validation/attesterSlashing.js +2 -1
  81. package/lib/chain/validation/attesterSlashing.js.map +1 -1
  82. package/lib/chain/validation/signatureSets/aggregateAndProof.d.ts +4 -3
  83. package/lib/chain/validation/signatureSets/aggregateAndProof.js +3 -2
  84. package/lib/chain/validation/signatureSets/aggregateAndProof.js.map +1 -1
  85. package/lib/eth1/eth1DepositDataTracker.d.ts +5 -2
  86. package/lib/eth1/eth1DepositDataTracker.js +13 -2
  87. package/lib/eth1/eth1DepositDataTracker.js.map +1 -1
  88. package/lib/eth1/index.d.ts +2 -0
  89. package/lib/eth1/index.js +6 -0
  90. package/lib/eth1/index.js.map +1 -1
  91. package/lib/eth1/interface.d.ts +4 -0
  92. package/lib/eth1/provider/eth1Provider.js +2 -3
  93. package/lib/eth1/provider/eth1Provider.js.map +1 -1
  94. package/lib/eth1/provider/utils.js +4 -4
  95. package/lib/eth1/provider/utils.js.map +1 -1
  96. package/lib/eth1/utils/deposits.d.ts +2 -2
  97. package/lib/eth1/utils/deposits.js +6 -5
  98. package/lib/eth1/utils/deposits.js.map +1 -1
  99. package/lib/eth1/utils/eth1Vote.js +0 -1
  100. package/lib/eth1/utils/eth1Vote.js.map +1 -1
  101. package/lib/execution/engine/http.d.ts +2 -2
  102. package/lib/execution/engine/http.js +19 -15
  103. package/lib/execution/engine/http.js.map +1 -1
  104. package/lib/execution/engine/interface.d.ts +4 -4
  105. package/lib/execution/engine/interface.js.map +1 -1
  106. package/lib/execution/engine/mock.d.ts +1 -0
  107. package/lib/execution/engine/mock.js +6 -0
  108. package/lib/execution/engine/mock.js.map +1 -1
  109. package/lib/execution/engine/payloadIdCache.d.ts +17 -0
  110. package/lib/execution/engine/payloadIdCache.js.map +1 -1
  111. package/lib/execution/engine/types.d.ts +29 -3
  112. package/lib/execution/engine/types.js +81 -0
  113. package/lib/execution/engine/types.js.map +1 -1
  114. package/lib/index.d.ts +2 -2
  115. package/lib/index.js +2 -2
  116. package/lib/index.js.map +1 -1
  117. package/lib/metrics/metrics/beacon.d.ts +3 -0
  118. package/lib/metrics/metrics/beacon.js +6 -0
  119. package/lib/metrics/metrics/beacon.js.map +1 -1
  120. package/lib/metrics/metrics/lodestar.d.ts +30 -3
  121. package/lib/metrics/metrics/lodestar.js +63 -4
  122. package/lib/metrics/metrics/lodestar.js.map +1 -1
  123. package/lib/metrics/validatorMonitor.d.ts +1 -1
  124. package/lib/metrics/validatorMonitor.js +6 -1
  125. package/lib/metrics/validatorMonitor.js.map +1 -1
  126. package/lib/network/gossip/interface.d.ts +5 -5
  127. package/lib/network/gossip/interface.js.map +1 -1
  128. package/lib/network/gossip/topic.d.ts +1720 -129
  129. package/lib/network/gossip/topic.js +5 -5
  130. package/lib/network/gossip/topic.js.map +1 -1
  131. package/lib/network/interface.d.ts +2 -2
  132. package/lib/network/network.d.ts +2 -2
  133. package/lib/network/network.js.map +1 -1
  134. package/lib/network/peers/utils/assertPeerRelevance.js +2 -3
  135. package/lib/network/peers/utils/assertPeerRelevance.js.map +1 -1
  136. package/lib/network/processor/gossipHandlers.js +6 -6
  137. package/lib/network/processor/gossipHandlers.js.map +1 -1
  138. package/lib/network/processor/gossipQueues/index.js +5 -2
  139. package/lib/network/processor/gossipQueues/index.js.map +1 -1
  140. package/lib/network/processor/gossipQueues/indexed.js +1 -0
  141. package/lib/network/processor/gossipQueues/indexed.js.map +1 -1
  142. package/lib/util/bufferPool.d.ts +7 -2
  143. package/lib/util/bufferPool.js +13 -7
  144. package/lib/util/bufferPool.js.map +1 -1
  145. package/lib/util/sszBytes.d.ts +31 -8
  146. package/lib/util/sszBytes.js +74 -13
  147. package/lib/util/sszBytes.js.map +1 -1
  148. package/package.json +15 -15
@@ -7,7 +7,7 @@ import { Metrics } from "../metrics/index.js";
7
7
  import { Eth1Options } from "../eth1/options.js";
8
8
  import { GenesisResult } from "./genesis/interface.js";
9
9
  export declare function persistGenesisResult(db: IBeaconDb, genesisResult: GenesisResult, genesisBlock: SignedBeaconBlock): Promise<void>;
10
- export declare function persistAnchorState(config: ChainForkConfig, db: IBeaconDb, anchorState: BeaconStateAllForks): Promise<void>;
10
+ export declare function persistAnchorState(config: ChainForkConfig, db: IBeaconDb, anchorState: BeaconStateAllForks, anchorStateBytes: Uint8Array): Promise<void>;
11
11
  export declare function createGenesisBlock(config: ChainForkConfig, genesisState: BeaconStateAllForks): SignedBeaconBlock;
12
12
  /**
13
13
  * Initialize and persist a genesis state and related data
@@ -26,10 +26,10 @@ export declare function initStateFromDb(config: ChainForkConfig, db: IBeaconDb,
26
26
  /**
27
27
  * Initialize and persist an anchor state (either weak subjectivity or genesis)
28
28
  */
29
- export declare function initStateFromAnchorState(config: ChainForkConfig, db: IBeaconDb, logger: Logger, anchorState: BeaconStateAllForks, { isWithinWeakSubjectivityPeriod, isCheckpointState, }: {
29
+ export declare function checkAndPersistAnchorState(config: ChainForkConfig, db: IBeaconDb, logger: Logger, anchorState: BeaconStateAllForks, anchorStateBytes: Uint8Array, { isWithinWeakSubjectivityPeriod, isCheckpointState, }: {
30
30
  isWithinWeakSubjectivityPeriod: boolean;
31
31
  isCheckpointState: boolean;
32
- }): Promise<BeaconStateAllForks>;
32
+ }): Promise<void>;
33
33
  export declare function initBeaconMetrics(metrics: Metrics, state: BeaconStateAllForks): void;
34
34
  export declare function computeAnchorCheckpoint(config: ChainForkConfig, anchorState: BeaconStateAllForks): {
35
35
  checkpoint: phase0.Checkpoint;
@@ -16,17 +16,17 @@ export async function persistGenesisResult(db, genesisResult, genesisBlock) {
16
16
  }),
17
17
  ]);
18
18
  }
19
- export async function persistAnchorState(config, db, anchorState) {
19
+ export async function persistAnchorState(config, db, anchorState, anchorStateBytes) {
20
20
  if (anchorState.slot === GENESIS_SLOT) {
21
21
  const genesisBlock = createGenesisBlock(config, anchorState);
22
22
  await Promise.all([
23
23
  db.blockArchive.add(genesisBlock),
24
24
  db.block.add(genesisBlock),
25
- db.stateArchive.add(anchorState),
25
+ db.stateArchive.putBinary(anchorState.slot, anchorStateBytes),
26
26
  ]);
27
27
  }
28
28
  else {
29
- await db.stateArchive.add(anchorState);
29
+ await db.stateArchive.putBinary(anchorState.slot, anchorStateBytes);
30
30
  }
31
31
  }
32
32
  export function createGenesisBlock(config, genesisState) {
@@ -101,7 +101,7 @@ export async function initStateFromDb(config, db, logger) {
101
101
  /**
102
102
  * Initialize and persist an anchor state (either weak subjectivity or genesis)
103
103
  */
104
- export async function initStateFromAnchorState(config, db, logger, anchorState, { isWithinWeakSubjectivityPeriod, isCheckpointState, }) {
104
+ export async function checkAndPersistAnchorState(config, db, logger, anchorState, anchorStateBytes, { isWithinWeakSubjectivityPeriod, isCheckpointState, }) {
105
105
  const expectedFork = config.getForkInfo(computeStartSlotAtEpoch(anchorState.fork.epoch));
106
106
  const expectedForkVersion = toHex(expectedFork.version);
107
107
  const stateFork = toHex(anchorState.fork.currentVersion);
@@ -126,8 +126,9 @@ export async function initStateFromAnchorState(config, db, logger, anchorState,
126
126
  });
127
127
  logger.warn("Checkpoint sync recommended, please use --help to see checkpoint sync options");
128
128
  }
129
- await persistAnchorState(config, db, anchorState);
130
- return anchorState;
129
+ if (isCheckpointState || anchorState.slot === GENESIS_SLOT) {
130
+ await persistAnchorState(config, db, anchorState, anchorStateBytes);
131
+ }
131
132
  }
132
133
  export function initBeaconMetrics(metrics, state) {
133
134
  metrics.headSlot.set(state.slot);
@@ -1 +1 @@
1
- {"version":3,"file":"initState.js","sourceRoot":"","sources":["../../src/chain/initState.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"initState.js","sourceRoot":"","sources":["../../src/chain/initState.ts"],"names":[],"mappings":"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"}
@@ -8,6 +8,7 @@ import { IEth1ForBlockProduction } from "../eth1/index.js";
8
8
  import { IExecutionEngine, IExecutionBuilder } from "../execution/index.js";
9
9
  import { Metrics } from "../metrics/metrics.js";
10
10
  import { IClock } from "../util/clock.js";
11
+ import { BufferPool } from "../util/bufferPool.js";
11
12
  import { ChainEventEmitter } from "./emitter.js";
12
13
  import { IStateRegenerator, RegenCaller } from "./regen/index.js";
13
14
  import { IBlsVerifier } from "./bls/index.js";
@@ -53,6 +54,7 @@ export interface IBeaconChain {
53
54
  readonly config: BeaconConfig;
54
55
  readonly logger: Logger;
55
56
  readonly metrics: Metrics | null;
57
+ readonly bufferPool: BufferPool | null;
56
58
  /** The initial slot that the chain is started with */
57
59
  readonly anchorStateLatestBlockSlot: Slot;
58
60
  readonly bls: IBlsVerifier;
@@ -1 +1 @@
1
- {"version":3,"file":"interface.js","sourceRoot":"","sources":["../../src/chain/interface.ts"],"names":[],"mappings":"AAoDA,OAAO,EAAsC,SAAS,EAAC,MAAM,oCAAoC,CAAC;AAQlG,OAAO,EAAC,SAAS,EAA0B,CAAC;AAQ5C,MAAM,CAAN,IAAY,cAIX;AAJD,WAAY,cAAc;IACxB,qEAAmD,CAAA;IACnD,6DAA2C,CAAA;IAC3C,qDAAmC,CAAA;AACrC,CAAC,EAJW,cAAc,KAAd,cAAc,QAIzB"}
1
+ {"version":3,"file":"interface.js","sourceRoot":"","sources":["../../src/chain/interface.ts"],"names":[],"mappings":"AAqDA,OAAO,EAAsC,SAAS,EAAC,MAAM,oCAAoC,CAAC;AAQlG,OAAO,EAAC,SAAS,EAA0B,CAAC;AAQ5C,MAAM,CAAN,IAAY,cAIX;AAJD,WAAY,cAAc;IACxB,qEAAmD,CAAA;IACnD,6DAA2C,CAAA;IAC3C,qDAAmC,CAAA;AACrC,CAAC,EAJW,cAAc,KAAd,cAAc,QAIzB"}
@@ -1,13 +1,25 @@
1
1
  import { ForkName } from "@lodestar/params";
2
- import { phase0, Epoch, Slot, ValidatorIndex, RootHex } from "@lodestar/types";
2
+ import { phase0, Epoch, Slot, ValidatorIndex, RootHex, electra, Attestation } from "@lodestar/types";
3
3
  import { CachedBeaconStateAllForks } from "@lodestar/state-transition";
4
4
  import { IForkChoice } from "@lodestar/fork-choice";
5
+ import { ChainForkConfig } from "@lodestar/config";
5
6
  import { InsertOutcome } from "./types.js";
7
+ type CommitteeIndex = number;
6
8
  /**
7
- * This function returns not seen participation for a given epoch and committee.
9
+ * for electra, this is to consolidate aggregated attestations of the same attestation data into a single attestation to be included in block
10
+ * note that this is local definition in this file and it's NOT validator consolidation
11
+ */
12
+ export type AttestationsConsolidation = {
13
+ byCommittee: Map<CommitteeIndex, AttestationNonParticipant>;
14
+ attData: phase0.AttestationData;
15
+ totalNotSeenCount: number;
16
+ score: number;
17
+ };
18
+ /**
19
+ * This function returns not seen participation for a given epoch and slot and committe index.
8
20
  * Return null if all validators are seen or no info to check.
9
21
  */
10
- type GetNotSeenValidatorsFn = (epoch: Epoch, committee: Uint32Array) => Set<number> | null;
22
+ type GetNotSeenValidatorsFn = (epoch: Epoch, slot: Slot, committeeIndex: number) => Set<number> | null;
11
23
  type ValidateAttestationDataFn = (attData: phase0.AttestationData) => boolean;
12
24
  /**
13
25
  * Maintain a pool of aggregated attestations. Attestations can be retrieved for inclusion in a block
@@ -16,32 +28,48 @@ type ValidateAttestationDataFn = (attData: phase0.AttestationData) => boolean;
16
28
  * Note that we want to remove attestations with attesters that were included in the chain.
17
29
  */
18
30
  export declare class AggregatedAttestationPool {
19
- private readonly attestationGroupByDataHashByIndexBySlot;
31
+ private readonly config;
32
+ /**
33
+ * post electra, different committees could have the same AttData and we have to consolidate attestations of the same
34
+ * data to be included in block, so we should group by data before index
35
+ * // TODO: make sure it does not affect performance for pre electra forks
36
+ */
37
+ private readonly attestationGroupByIndexByDataHexBySlot;
20
38
  private lowestPermissibleSlot;
39
+ constructor(config: ChainForkConfig);
21
40
  /** For metrics to track size of the pool */
22
41
  getAttestationCount(): {
23
42
  attestationCount: number;
24
43
  attestationDataCount: number;
25
44
  };
26
- add(attestation: phase0.Attestation, dataRootHex: RootHex, attestingIndicesCount: number, committee: Uint32Array): InsertOutcome;
45
+ add(attestation: Attestation, dataRootHex: RootHex, attestingIndicesCount: number, committee: Uint32Array): InsertOutcome;
27
46
  /** Remove attestations which are too old to be included in a block. */
28
47
  prune(clockSlot: Slot): void;
48
+ getAttestationsForBlock(fork: ForkName, forkChoice: IForkChoice, state: CachedBeaconStateAllForks): Attestation[];
29
49
  /**
30
- * Get attestations to be included in a block. Returns $MAX_ATTESTATIONS items
50
+ * Get attestations to be included in a block pre-electra. Returns up to $MAX_ATTESTATIONS items
31
51
  */
32
- getAttestationsForBlock(fork: ForkName, forkChoice: IForkChoice, state: CachedBeaconStateAllForks): phase0.Attestation[];
52
+ getAttestationsForBlockPreElectra(fork: ForkName, forkChoice: IForkChoice, state: CachedBeaconStateAllForks): phase0.Attestation[];
53
+ /**
54
+ * Get attestations to be included in an electra block. Returns up to $MAX_ATTESTATIONS_ELECTRA items
55
+ */
56
+ getAttestationsForBlockElectra(fork: ForkName, forkChoice: IForkChoice, state: CachedBeaconStateAllForks): electra.Attestation[];
33
57
  /**
34
58
  * Get all attestations optionally filtered by `attestation.data.slot`
59
+ * Note this function is not fork aware and can potentially return a mix
60
+ * of phase0.Attestations and electra.Attestations.
61
+ * Caller of this function is expected to filtered result if they desire
62
+ * a homogenous array.
35
63
  * @param bySlot slot to filter, `bySlot === attestation.data.slot`
36
64
  */
37
- getAll(bySlot?: Slot): phase0.Attestation[];
65
+ getAll(bySlot?: Slot): Attestation[];
38
66
  }
39
67
  interface AttestationWithIndex {
40
- attestation: phase0.Attestation;
68
+ attestation: Attestation;
41
69
  trueBitsCount: number;
42
70
  }
43
71
  type AttestationNonParticipant = {
44
- attestation: phase0.Attestation;
72
+ attestation: Attestation;
45
73
  notSeenAttesterCount: number;
46
74
  };
47
75
  /**
@@ -68,11 +96,17 @@ export declare class MatchingDataAttestationGroup {
68
96
  * @param notSeenAttestingIndices not seen attestting indices, i.e. indices in the same committee
69
97
  * @returns an array of AttestationNonParticipant
70
98
  */
71
- getAttestationsForBlock(notSeenAttestingIndices: Set<number>): AttestationNonParticipant[];
99
+ getAttestationsForBlock(fork: ForkName, notSeenAttestingIndices: Set<number>): AttestationNonParticipant[];
72
100
  /** Get attestations for API. */
73
- getAttestations(): phase0.Attestation[];
101
+ getAttestations(): Attestation[];
74
102
  }
75
103
  export declare function aggregateInto(attestation1: AttestationWithIndex, attestation2: AttestationWithIndex): void;
104
+ /**
105
+ * Electra and after: Block proposer consolidates attestations with the same
106
+ * attestation data from different committee into a single attestation
107
+ * https://github.com/ethereum/consensus-specs/blob/aba6345776aa876dad368cab27fbbb23fae20455/specs/_features/eip7549/validator.md?plain=1#L39
108
+ */
109
+ export declare function aggregateConsolidation({ byCommittee, attData }: AttestationsConsolidation): electra.Attestation;
76
110
  /**
77
111
  * Pre-compute participation from a CachedBeaconStateAllForks, for use to check if an attestation's committee
78
112
  * has already attested or not.