@lodestar/beacon-node 1.22.0-dev.ba80aa345a → 1.22.0-dev.ef99ed7114
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.
- package/lib/api/impl/beacon/blocks/index.js +22 -10
- package/lib/api/impl/beacon/blocks/index.js.map +1 -1
- package/lib/api/impl/beacon/pool/index.js +31 -4
- package/lib/api/impl/beacon/pool/index.js.map +1 -1
- package/lib/api/impl/config/constants.d.ts +5 -1
- package/lib/api/impl/config/constants.js +7 -2
- package/lib/api/impl/config/constants.js.map +1 -1
- package/lib/api/impl/lodestar/index.js +2 -2
- package/lib/api/impl/lodestar/index.js.map +1 -1
- package/lib/api/impl/validator/index.js +37 -14
- package/lib/api/impl/validator/index.js.map +1 -1
- package/lib/chain/archiver/archiveBlocks.js +3 -3
- package/lib/chain/archiver/archiveBlocks.js.map +1 -1
- package/lib/chain/balancesCache.js +2 -2
- package/lib/chain/balancesCache.js.map +1 -1
- package/lib/chain/blocks/importBlock.js +8 -6
- package/lib/chain/blocks/importBlock.js.map +1 -1
- package/lib/chain/blocks/index.js +2 -2
- package/lib/chain/blocks/index.js.map +1 -1
- package/lib/chain/blocks/types.d.ts +2 -2
- package/lib/chain/blocks/types.js.map +1 -1
- package/lib/chain/blocks/verifyBlock.js +4 -4
- package/lib/chain/blocks/verifyBlock.js.map +1 -1
- package/lib/chain/blocks/verifyBlocksExecutionPayloads.js +5 -6
- package/lib/chain/blocks/verifyBlocksExecutionPayloads.js.map +1 -1
- package/lib/chain/blocks/verifyBlocksSanityChecks.js +3 -3
- package/lib/chain/blocks/verifyBlocksSanityChecks.js.map +1 -1
- package/lib/chain/blocks/writeBlockInputToDb.js +3 -3
- package/lib/chain/blocks/writeBlockInputToDb.js.map +1 -1
- package/lib/chain/chain.d.ts +40 -0
- package/lib/chain/chain.js +44 -15
- package/lib/chain/chain.js.map +1 -1
- package/lib/chain/errors/attestationError.d.ts +13 -1
- package/lib/chain/errors/attestationError.js +10 -2
- package/lib/chain/errors/attestationError.js.map +1 -1
- package/lib/chain/errors/blockError.js +3 -4
- package/lib/chain/errors/blockError.js.map +1 -1
- package/lib/chain/forkChoice/index.js +9 -9
- package/lib/chain/forkChoice/index.js.map +1 -1
- package/lib/chain/historicalState/worker.js +4 -0
- package/lib/chain/historicalState/worker.js.map +1 -1
- package/lib/chain/initState.js +6 -7
- package/lib/chain/initState.js.map +1 -1
- package/lib/chain/lightClient/index.js +9 -10
- package/lib/chain/lightClient/index.js.map +1 -1
- package/lib/chain/opPools/aggregatedAttestationPool.d.ts +46 -12
- package/lib/chain/opPools/aggregatedAttestationPool.js +229 -63
- package/lib/chain/opPools/aggregatedAttestationPool.js.map +1 -1
- package/lib/chain/opPools/attestationPool.d.ts +22 -6
- package/lib/chain/opPools/attestationPool.js +61 -27
- package/lib/chain/opPools/attestationPool.js.map +1 -1
- package/lib/chain/opPools/opPool.d.ts +2 -2
- package/lib/chain/opPools/opPool.js +6 -3
- package/lib/chain/opPools/opPool.js.map +1 -1
- package/lib/chain/opPools/syncCommitteeMessagePool.js +4 -4
- package/lib/chain/opPools/syncCommitteeMessagePool.js.map +1 -1
- package/lib/chain/opPools/syncContributionAndProofPool.js +4 -4
- package/lib/chain/opPools/syncContributionAndProofPool.js.map +1 -1
- package/lib/chain/opPools/utils.d.ts +2 -0
- package/lib/chain/opPools/utils.js +3 -0
- package/lib/chain/opPools/utils.js.map +1 -1
- package/lib/chain/produceBlock/produceBlockBody.js +7 -6
- package/lib/chain/produceBlock/produceBlockBody.js.map +1 -1
- package/lib/chain/regen/queued.d.ts +6 -1
- package/lib/chain/regen/queued.js +41 -3
- package/lib/chain/regen/queued.js.map +1 -1
- package/lib/chain/regen/regen.js +4 -3
- package/lib/chain/regen/regen.js.map +1 -1
- package/lib/chain/seenCache/seenAttestationData.d.ts +13 -5
- package/lib/chain/seenCache/seenAttestationData.js +5 -3
- package/lib/chain/seenCache/seenAttestationData.js.map +1 -1
- package/lib/chain/seenCache/seenCommitteeContribution.js +2 -3
- package/lib/chain/seenCache/seenCommitteeContribution.js.map +1 -1
- package/lib/chain/seenCache/seenGossipBlockInput.js +3 -4
- package/lib/chain/seenCache/seenGossipBlockInput.js.map +1 -1
- package/lib/chain/shufflingCache.js +2 -3
- package/lib/chain/shufflingCache.js.map +1 -1
- package/lib/chain/stateCache/blockStateCacheImpl.d.ts +1 -0
- package/lib/chain/stateCache/blockStateCacheImpl.js +8 -5
- package/lib/chain/stateCache/blockStateCacheImpl.js.map +1 -1
- package/lib/chain/stateCache/fifoBlockStateCache.d.ts +1 -0
- package/lib/chain/stateCache/fifoBlockStateCache.js +6 -3
- package/lib/chain/stateCache/fifoBlockStateCache.js.map +1 -1
- package/lib/chain/stateCache/inMemoryCheckpointsCache.d.ts +1 -0
- package/lib/chain/stateCache/inMemoryCheckpointsCache.js +7 -5
- package/lib/chain/stateCache/inMemoryCheckpointsCache.js.map +1 -1
- package/lib/chain/stateCache/persistentCheckpointsCache.d.ts +1 -0
- package/lib/chain/stateCache/persistentCheckpointsCache.js +14 -8
- package/lib/chain/stateCache/persistentCheckpointsCache.js.map +1 -1
- package/lib/chain/stateCache/types.d.ts +4 -0
- package/lib/chain/stateCache/types.js.map +1 -1
- package/lib/chain/validation/aggregateAndProof.d.ts +4 -4
- package/lib/chain/validation/aggregateAndProof.js +26 -9
- package/lib/chain/validation/aggregateAndProof.js.map +1 -1
- package/lib/chain/validation/attestation.d.ts +27 -6
- package/lib/chain/validation/attestation.js +115 -37
- package/lib/chain/validation/attestation.js.map +1 -1
- package/lib/chain/validation/attesterSlashing.js +2 -1
- package/lib/chain/validation/attesterSlashing.js.map +1 -1
- package/lib/chain/validation/blobSidecar.js +4 -4
- package/lib/chain/validation/blobSidecar.js.map +1 -1
- package/lib/chain/validation/block.js +3 -4
- package/lib/chain/validation/block.js.map +1 -1
- package/lib/chain/validation/signatureSets/aggregateAndProof.d.ts +4 -3
- package/lib/chain/validation/signatureSets/aggregateAndProof.js +3 -2
- package/lib/chain/validation/signatureSets/aggregateAndProof.js.map +1 -1
- package/lib/chain/validation/syncCommittee.js +2 -2
- package/lib/chain/validation/syncCommittee.js.map +1 -1
- package/lib/eth1/eth1DepositDataTracker.d.ts +5 -2
- package/lib/eth1/eth1DepositDataTracker.js +13 -2
- package/lib/eth1/eth1DepositDataTracker.js.map +1 -1
- package/lib/eth1/eth1MergeBlockTracker.js +2 -3
- package/lib/eth1/eth1MergeBlockTracker.js.map +1 -1
- package/lib/eth1/index.d.ts +2 -0
- package/lib/eth1/index.js +6 -0
- package/lib/eth1/index.js.map +1 -1
- package/lib/eth1/interface.d.ts +4 -0
- package/lib/eth1/utils/deposits.d.ts +2 -2
- package/lib/eth1/utils/deposits.js +8 -7
- package/lib/eth1/utils/deposits.js.map +1 -1
- package/lib/eth1/utils/eth1Vote.js +2 -2
- package/lib/eth1/utils/eth1Vote.js.map +1 -1
- package/lib/execution/engine/http.d.ts +2 -2
- package/lib/execution/engine/http.js +19 -15
- package/lib/execution/engine/http.js.map +1 -1
- package/lib/execution/engine/interface.d.ts +4 -4
- package/lib/execution/engine/interface.js.map +1 -1
- package/lib/execution/engine/mock.d.ts +1 -0
- package/lib/execution/engine/mock.js +6 -0
- package/lib/execution/engine/mock.js.map +1 -1
- package/lib/execution/engine/payloadIdCache.d.ts +17 -0
- package/lib/execution/engine/payloadIdCache.js.map +1 -1
- package/lib/execution/engine/types.d.ts +29 -3
- package/lib/execution/engine/types.js +81 -0
- package/lib/execution/engine/types.js.map +1 -1
- package/lib/metrics/metrics/beacon.d.ts +3 -0
- package/lib/metrics/metrics/beacon.js +6 -0
- package/lib/metrics/metrics/beacon.js.map +1 -1
- package/lib/metrics/metrics/lodestar.d.ts +9 -0
- package/lib/metrics/metrics/lodestar.js +34 -0
- package/lib/metrics/metrics/lodestar.js.map +1 -1
- package/lib/metrics/validatorMonitor.d.ts +1 -1
- package/lib/metrics/validatorMonitor.js +15 -10
- package/lib/metrics/validatorMonitor.js.map +1 -1
- package/lib/network/gossip/encoding.js +6 -2
- package/lib/network/gossip/encoding.js.map +1 -1
- package/lib/network/gossip/interface.d.ts +5 -5
- package/lib/network/gossip/interface.js.map +1 -1
- package/lib/network/gossip/topic.d.ts +1720 -129
- package/lib/network/gossip/topic.js +5 -5
- package/lib/network/gossip/topic.js.map +1 -1
- package/lib/network/interface.d.ts +2 -2
- package/lib/network/network.d.ts +2 -2
- package/lib/network/network.js.map +1 -1
- package/lib/network/peers/utils/assertPeerRelevance.js +2 -1
- package/lib/network/peers/utils/assertPeerRelevance.js.map +1 -1
- package/lib/network/processor/gossipHandlers.js +10 -11
- package/lib/network/processor/gossipHandlers.js.map +1 -1
- package/lib/network/processor/gossipQueues/index.js +5 -2
- package/lib/network/processor/gossipQueues/index.js.map +1 -1
- package/lib/network/processor/gossipQueues/indexed.js +1 -0
- package/lib/network/processor/gossipQueues/indexed.js.map +1 -1
- package/lib/network/reqresp/handlers/beaconBlocksByRoot.js +2 -2
- package/lib/network/reqresp/handlers/beaconBlocksByRoot.js.map +1 -1
- package/lib/network/reqresp/handlers/blobSidecarsByRoot.js +2 -2
- package/lib/network/reqresp/handlers/blobSidecarsByRoot.js.map +1 -1
- package/lib/sync/backfill/backfill.js +16 -17
- package/lib/sync/backfill/backfill.js.map +1 -1
- package/lib/sync/range/chain.js +2 -3
- package/lib/sync/range/chain.js.map +1 -1
- package/lib/sync/range/range.js +4 -4
- package/lib/sync/range/range.js.map +1 -1
- package/lib/sync/range/utils/chainTarget.js +2 -2
- package/lib/sync/range/utils/chainTarget.js.map +1 -1
- package/lib/sync/range/utils/hashBlocks.js +4 -4
- package/lib/sync/range/utils/hashBlocks.js.map +1 -1
- package/lib/sync/unknownBlock.js +12 -12
- package/lib/sync/unknownBlock.js.map +1 -1
- package/lib/util/sszBytes.d.ts +31 -8
- package/lib/util/sszBytes.js +85 -21
- package/lib/util/sszBytes.js.map +1 -1
- package/package.json +15 -15
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { toHexString } from "@chainsafe/ssz";
|
|
2
1
|
import { computeEpochAtSlot } from "@lodestar/state-transition";
|
|
2
|
+
import { toRootHex } from "@lodestar/utils";
|
|
3
3
|
import { toCheckpointHex } from "../stateCache/index.js";
|
|
4
4
|
import { JobItemQueue } from "../../util/queue/index.js";
|
|
5
5
|
import { RegenCaller, RegenFnName } from "./interface.js";
|
|
@@ -79,7 +79,7 @@ export class QueuedStateRegenerator {
|
|
|
79
79
|
* which is usually the gossip block.
|
|
80
80
|
*/
|
|
81
81
|
getPreStateSync(block, opts = { dontTransferCache: true }) {
|
|
82
|
-
const parentRoot =
|
|
82
|
+
const parentRoot = toRootHex(block.parentRoot);
|
|
83
83
|
const parentBlock = this.forkChoice.getBlockHex(parentRoot);
|
|
84
84
|
if (!parentBlock) {
|
|
85
85
|
throw new RegenError({
|
|
@@ -143,7 +143,7 @@ export class QueuedStateRegenerator {
|
|
|
143
143
|
}
|
|
144
144
|
updateHeadState(newHead, maybeHeadState) {
|
|
145
145
|
const { stateRoot: newHeadStateRoot, blockRoot: newHeadBlockRoot, slot: newHeadSlot } = newHead;
|
|
146
|
-
const maybeHeadStateRoot =
|
|
146
|
+
const maybeHeadStateRoot = toRootHex(maybeHeadState.hashTreeRoot());
|
|
147
147
|
const logCtx = {
|
|
148
148
|
newHeadSlot,
|
|
149
149
|
newHeadBlockRoot,
|
|
@@ -176,6 +176,44 @@ export class QueuedStateRegenerator {
|
|
|
176
176
|
updatePreComputedCheckpoint(rootHex, epoch) {
|
|
177
177
|
return this.checkpointStateCache.updatePreComputedCheckpoint(rootHex, epoch);
|
|
178
178
|
}
|
|
179
|
+
/**
|
|
180
|
+
* Remove `validators` from all unfinalized cache's epochCtx.UnfinalizedPubkey2Index,
|
|
181
|
+
* and add them to epochCtx.pubkey2index and epochCtx.index2pubkey
|
|
182
|
+
*/
|
|
183
|
+
updateUnfinalizedPubkeys(validators) {
|
|
184
|
+
let numStatesUpdated = 0;
|
|
185
|
+
const states = this.blockStateCache.getStates();
|
|
186
|
+
const cpStates = this.checkpointStateCache.getStates();
|
|
187
|
+
// Add finalized pubkeys to all states.
|
|
188
|
+
const addTimer = this.metrics?.regenFnAddPubkeyTime.startTimer();
|
|
189
|
+
// We only need to add pubkeys to any one of the states since the finalized caches is shared globally across all states
|
|
190
|
+
const firstState = (states.next().value ?? cpStates.next().value);
|
|
191
|
+
if (firstState !== undefined) {
|
|
192
|
+
firstState.epochCtx.addFinalizedPubkeys(validators, this.metrics?.epochCache ?? undefined);
|
|
193
|
+
}
|
|
194
|
+
else {
|
|
195
|
+
this.logger.warn("Attempt to delete finalized pubkey from unfinalized pubkey cache. But no state is available");
|
|
196
|
+
}
|
|
197
|
+
addTimer?.();
|
|
198
|
+
// Delete finalized pubkeys from unfinalized pubkey cache for all states
|
|
199
|
+
const deleteTimer = this.metrics?.regenFnDeletePubkeyTime.startTimer();
|
|
200
|
+
const pubkeysToDelete = Array.from(validators.keys());
|
|
201
|
+
for (const s of states) {
|
|
202
|
+
s.epochCtx.deleteUnfinalizedPubkeys(pubkeysToDelete);
|
|
203
|
+
numStatesUpdated++;
|
|
204
|
+
}
|
|
205
|
+
for (const s of cpStates) {
|
|
206
|
+
s.epochCtx.deleteUnfinalizedPubkeys(pubkeysToDelete);
|
|
207
|
+
numStatesUpdated++;
|
|
208
|
+
}
|
|
209
|
+
// Since first state is consumed from the iterator. Will need to perform delete explicitly
|
|
210
|
+
if (firstState !== undefined) {
|
|
211
|
+
firstState?.epochCtx.deleteUnfinalizedPubkeys(pubkeysToDelete);
|
|
212
|
+
numStatesUpdated++;
|
|
213
|
+
}
|
|
214
|
+
deleteTimer?.();
|
|
215
|
+
this.metrics?.regenFnNumStatesUpdated.observe(numStatesUpdated);
|
|
216
|
+
}
|
|
179
217
|
/**
|
|
180
218
|
* Get the state to run with `block`.
|
|
181
219
|
* - State after `block.parentRoot` dialed forward to block.slot
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"queued.js","sourceRoot":"","sources":["../../../src/chain/regen/queued.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"queued.js","sourceRoot":"","sources":["../../../src/chain/regen/queued.ts"],"names":[],"mappings":"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"}
|
package/lib/chain/regen/regen.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
import { fromHexString
|
|
1
|
+
import { fromHexString } from "@chainsafe/ssz";
|
|
2
2
|
import { computeEpochAtSlot, computeStartSlotAtEpoch, ExecutionPayloadStatus, DataAvailableStatus, processSlots, stateTransition, } from "@lodestar/state-transition";
|
|
3
|
+
import { toRootHex } from "@lodestar/utils";
|
|
3
4
|
import { SLOTS_PER_EPOCH } from "@lodestar/params";
|
|
4
5
|
import { getCheckpointFromState } from "../blocks/utils/checkpoint.js";
|
|
5
6
|
import { ChainEvent } from "../emitter.js";
|
|
@@ -49,7 +50,7 @@ export class StateRegenerator {
|
|
|
49
50
|
*/
|
|
50
51
|
async getCheckpointState(cp, opts, regenCaller, allowDiskReload = false) {
|
|
51
52
|
const checkpointStartSlot = computeStartSlotAtEpoch(cp.epoch);
|
|
52
|
-
return this.getBlockSlotState(
|
|
53
|
+
return this.getBlockSlotState(toRootHex(cp.root), checkpointStartSlot, opts, regenCaller, allowDiskReload);
|
|
53
54
|
}
|
|
54
55
|
/**
|
|
55
56
|
* Get state after block `blockRoot` dialed forward to `slot`
|
|
@@ -156,7 +157,7 @@ export class StateRegenerator {
|
|
|
156
157
|
verifyProposer: false,
|
|
157
158
|
verifySignatures: false,
|
|
158
159
|
}, this.modules.metrics);
|
|
159
|
-
const stateRoot =
|
|
160
|
+
const stateRoot = toRootHex(state.hashTreeRoot());
|
|
160
161
|
if (b.stateRoot !== stateRoot) {
|
|
161
162
|
throw new RegenError({
|
|
162
163
|
slot: b.slot,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"regen.js","sourceRoot":"","sources":["../../../src/chain/regen/regen.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,aAAa,
|
|
1
|
+
{"version":3,"file":"regen.js","sourceRoot":"","sources":["../../../src/chain/regen/regen.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,9 +1,14 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { BitArray } from "@chainsafe/ssz";
|
|
2
|
+
import { CommitteeIndex, phase0, RootHex, Slot } from "@lodestar/types";
|
|
2
3
|
import { Metrics } from "../../metrics/metrics.js";
|
|
3
|
-
import { AttDataBase64 } from "../../util/sszBytes.js";
|
|
4
4
|
import { InsertOutcome } from "../opPools/types.js";
|
|
5
|
+
export type SeenAttDataKey = AttDataBase64 | AttDataCommitteeBitsBase64;
|
|
6
|
+
type AttDataBase64 = string;
|
|
7
|
+
type AttDataCommitteeBitsBase64 = string;
|
|
5
8
|
export type AttestationDataCacheEntry = {
|
|
6
|
-
|
|
9
|
+
committeeValidatorIndices: Uint32Array;
|
|
10
|
+
committeeBits?: BitArray;
|
|
11
|
+
committeeIndex: CommitteeIndex;
|
|
7
12
|
signingRoot: Uint8Array;
|
|
8
13
|
attDataRootHex: RootHex;
|
|
9
14
|
attestationData: phase0.AttestationData;
|
|
@@ -15,6 +20,8 @@ export declare enum RejectReason {
|
|
|
15
20
|
already_known = "already_known"
|
|
16
21
|
}
|
|
17
22
|
/**
|
|
23
|
+
* Cached seen AttestationData to improve gossip validation. For Electra, this still take into account attestationIndex
|
|
24
|
+
* even through it is moved outside of AttestationData.
|
|
18
25
|
* As of April 2023, validating gossip attestation takes ~12% of cpu time for a node subscribing to all subnets on mainnet.
|
|
19
26
|
* Having this cache help saves a lot of cpu time since most of the gossip attestations are on the same slot.
|
|
20
27
|
*/
|
|
@@ -25,9 +32,10 @@ export declare class SeenAttestationDatas {
|
|
|
25
32
|
private cacheEntryByAttDataBase64BySlot;
|
|
26
33
|
private lowestPermissibleSlot;
|
|
27
34
|
constructor(metrics: Metrics | null, cacheSlotDistance?: number, maxCacheSizePerSlot?: number);
|
|
28
|
-
add(slot: Slot,
|
|
29
|
-
get(slot: Slot, attDataBase64:
|
|
35
|
+
add(slot: Slot, attDataKey: SeenAttDataKey, cacheEntry: AttestationDataCacheEntry): InsertOutcome;
|
|
36
|
+
get(slot: Slot, attDataBase64: SeenAttDataKey): AttestationDataCacheEntry | null;
|
|
30
37
|
onSlot(clockSlot: Slot): void;
|
|
31
38
|
private onScrapeLodestarMetrics;
|
|
32
39
|
}
|
|
40
|
+
export {};
|
|
33
41
|
//# sourceMappingURL=seenAttestationData.d.ts.map
|
|
@@ -19,6 +19,8 @@ const DEFAULT_MAX_CACHE_SIZE_PER_SLOT = 200;
|
|
|
19
19
|
*/
|
|
20
20
|
const DEFAULT_CACHE_SLOT_DISTANCE = 2;
|
|
21
21
|
/**
|
|
22
|
+
* Cached seen AttestationData to improve gossip validation. For Electra, this still take into account attestationIndex
|
|
23
|
+
* even through it is moved outside of AttestationData.
|
|
22
24
|
* As of April 2023, validating gossip attestation takes ~12% of cpu time for a node subscribing to all subnets on mainnet.
|
|
23
25
|
* Having this cache help saves a lot of cpu time since most of the gossip attestations are on the same slot.
|
|
24
26
|
*/
|
|
@@ -34,13 +36,13 @@ export class SeenAttestationDatas {
|
|
|
34
36
|
metrics?.seenCache.attestationData.totalSlot.addCollect(() => this.onScrapeLodestarMetrics(metrics));
|
|
35
37
|
}
|
|
36
38
|
// TODO: Move InsertOutcome type definition to a common place
|
|
37
|
-
add(slot,
|
|
39
|
+
add(slot, attDataKey, cacheEntry) {
|
|
38
40
|
if (slot < this.lowestPermissibleSlot) {
|
|
39
41
|
this.metrics?.seenCache.attestationData.reject.inc({ reason: RejectReason.too_old });
|
|
40
42
|
return InsertOutcome.Old;
|
|
41
43
|
}
|
|
42
44
|
const cacheEntryByAttDataBase64 = this.cacheEntryByAttDataBase64BySlot.getOrDefault(slot);
|
|
43
|
-
if (cacheEntryByAttDataBase64.has(
|
|
45
|
+
if (cacheEntryByAttDataBase64.has(attDataKey)) {
|
|
44
46
|
this.metrics?.seenCache.attestationData.reject.inc({ reason: RejectReason.already_known });
|
|
45
47
|
return InsertOutcome.AlreadyKnown;
|
|
46
48
|
}
|
|
@@ -48,7 +50,7 @@ export class SeenAttestationDatas {
|
|
|
48
50
|
this.metrics?.seenCache.attestationData.reject.inc({ reason: RejectReason.reached_limit });
|
|
49
51
|
return InsertOutcome.ReachLimit;
|
|
50
52
|
}
|
|
51
|
-
cacheEntryByAttDataBase64.set(
|
|
53
|
+
cacheEntryByAttDataBase64.set(attDataKey, cacheEntry);
|
|
52
54
|
return InsertOutcome.NewData;
|
|
53
55
|
}
|
|
54
56
|
get(slot, attDataBase64) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"seenAttestationData.js","sourceRoot":"","sources":["../../../src/chain/seenCache/seenAttestationData.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"seenAttestationData.js","sourceRoot":"","sources":["../../../src/chain/seenCache/seenAttestationData.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { MapDef } from "@lodestar/utils";
|
|
1
|
+
import { MapDef, toRootHex } from "@lodestar/utils";
|
|
3
2
|
import { isSuperSetOrEqual } from "../../util/bitArray.js";
|
|
4
3
|
import { insertDesc } from "./seenAggregateAndProof.js";
|
|
5
4
|
/**
|
|
@@ -75,6 +74,6 @@ function seenAggregatorKey(subcommitteeIndex, aggregatorIndex) {
|
|
|
75
74
|
}
|
|
76
75
|
function toContributionDataKey(contribution) {
|
|
77
76
|
const { slot, beaconBlockRoot, subcommitteeIndex } = contribution;
|
|
78
|
-
return `${slot} - ${
|
|
77
|
+
return `${slot} - ${toRootHex(beaconBlockRoot)} - ${subcommitteeIndex}`;
|
|
79
78
|
}
|
|
80
79
|
//# sourceMappingURL=seenCommitteeContribution.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"seenCommitteeContribution.js","sourceRoot":"","sources":["../../../src/chain/seenCache/seenCommitteeContribution.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"seenCommitteeContribution.js","sourceRoot":"","sources":["../../../src/chain/seenCache/seenCommitteeContribution.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,5 @@
|
|
|
1
|
-
import { toHexString } from "@chainsafe/ssz";
|
|
2
1
|
import { ssz } from "@lodestar/types";
|
|
3
|
-
import { pruneSetToMax } from "@lodestar/utils";
|
|
2
|
+
import { pruneSetToMax, toRootHex } from "@lodestar/utils";
|
|
4
3
|
import { BLOBSIDECAR_FIXED_SIZE, isForkBlobs } from "@lodestar/params";
|
|
5
4
|
import { getBlockInput, BlockSource, GossipedInputType, getBlockInputBlobs, BlobsSource, } from "../blocks/types.js";
|
|
6
5
|
export var BlockInputAvailabilitySource;
|
|
@@ -37,7 +36,7 @@ export class SeenGossipBlockInput {
|
|
|
37
36
|
if (gossipedInput.type === GossipedInputType.block) {
|
|
38
37
|
const { signedBlock, blockBytes } = gossipedInput;
|
|
39
38
|
fork = config.getForkName(signedBlock.message.slot);
|
|
40
|
-
blockHex =
|
|
39
|
+
blockHex = toRootHex(config.getForkTypes(signedBlock.message.slot).BeaconBlock.hashTreeRoot(signedBlock.message));
|
|
41
40
|
blockCache = this.blockInputCache.get(blockHex) ?? getEmptyBlockInputCacheEntry(fork);
|
|
42
41
|
blockCache.block = signedBlock;
|
|
43
42
|
blockCache.blockBytes = blockBytes;
|
|
@@ -46,7 +45,7 @@ export class SeenGossipBlockInput {
|
|
|
46
45
|
const { blobSidecar, blobBytes } = gossipedInput;
|
|
47
46
|
const blockRoot = ssz.phase0.BeaconBlockHeader.hashTreeRoot(blobSidecar.signedBlockHeader.message);
|
|
48
47
|
fork = config.getForkName(blobSidecar.signedBlockHeader.message.slot);
|
|
49
|
-
blockHex =
|
|
48
|
+
blockHex = toRootHex(blockRoot);
|
|
50
49
|
blockCache = this.blockInputCache.get(blockHex) ?? getEmptyBlockInputCacheEntry(fork);
|
|
51
50
|
// TODO: freetheblobs check if its the same blob or a duplicate and throw/take actions
|
|
52
51
|
blockCache.cachedData?.blobsCache.set(blobSidecar.index, {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"seenGossipBlockInput.js","sourceRoot":"","sources":["../../../src/chain/seenCache/seenGossipBlockInput.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"seenGossipBlockInput.js","sourceRoot":"","sources":["../../../src/chain/seenCache/seenGossipBlockInput.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,6 @@
|
|
|
1
|
-
import { toHexString } from "@chainsafe/ssz";
|
|
2
1
|
import { getShufflingDecisionBlock } from "@lodestar/state-transition";
|
|
3
2
|
import { ssz } from "@lodestar/types";
|
|
4
|
-
import { MapDef, pruneSetToMax } from "@lodestar/utils";
|
|
3
|
+
import { MapDef, pruneSetToMax, toRootHex } from "@lodestar/utils";
|
|
5
4
|
import { GENESIS_SLOT } from "@lodestar/params";
|
|
6
5
|
import { computeAnchorCheckpoint } from "./initState.js";
|
|
7
6
|
/**
|
|
@@ -160,6 +159,6 @@ function isPromiseCacheItem(item) {
|
|
|
160
159
|
function getDecisionBlock(state, epoch) {
|
|
161
160
|
return state.slot > GENESIS_SLOT
|
|
162
161
|
? getShufflingDecisionBlock(state, epoch)
|
|
163
|
-
:
|
|
162
|
+
: toRootHex(ssz.phase0.BeaconBlockHeader.hashTreeRoot(computeAnchorCheckpoint(state.config, state).blockHeader));
|
|
164
163
|
}
|
|
165
164
|
//# sourceMappingURL=shufflingCache.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shufflingCache.js","sourceRoot":"","sources":["../../src/chain/shufflingCache.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"shufflingCache.js","sourceRoot":"","sources":["../../src/chain/shufflingCache.ts"],"names":[],"mappings":"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"}
|
|
@@ -49,6 +49,7 @@ export declare class BlockStateCacheImpl implements BlockStateCache {
|
|
|
49
49
|
deleteAllBeforeEpoch(finalizedEpoch: Epoch): void;
|
|
50
50
|
/** ONLY FOR DEBUGGING PURPOSES. For lodestar debug API */
|
|
51
51
|
dumpSummary(): routes.lodestar.StateCacheItem[];
|
|
52
|
+
getStates(): IterableIterator<CachedBeaconStateAllForks>;
|
|
52
53
|
private deleteAllEpochItems;
|
|
53
54
|
}
|
|
54
55
|
//# sourceMappingURL=blockStateCacheImpl.d.ts.map
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { toRootHex } from "@lodestar/utils";
|
|
2
2
|
import { MapTracker } from "./mapMetrics.js";
|
|
3
3
|
const MAX_STATES = 3 * 32;
|
|
4
4
|
/**
|
|
@@ -18,7 +18,7 @@ export class BlockStateCacheImpl {
|
|
|
18
18
|
this.maxStates = maxStates;
|
|
19
19
|
this.cache = new MapTracker(metrics?.stateCache);
|
|
20
20
|
if (metrics) {
|
|
21
|
-
this.metrics = metrics.stateCache;
|
|
21
|
+
this.metrics = { ...metrics.stateCache, ...metrics.epochCache };
|
|
22
22
|
metrics.stateCache.size.addCollect(() => metrics.stateCache.size.set(this.cache.size));
|
|
23
23
|
}
|
|
24
24
|
}
|
|
@@ -33,7 +33,7 @@ export class BlockStateCacheImpl {
|
|
|
33
33
|
return item.clone(opts?.dontTransferCache);
|
|
34
34
|
}
|
|
35
35
|
add(item) {
|
|
36
|
-
const key =
|
|
36
|
+
const key = toRootHex(item.hashTreeRoot());
|
|
37
37
|
if (this.cache.get(key)) {
|
|
38
38
|
return;
|
|
39
39
|
}
|
|
@@ -50,7 +50,7 @@ export class BlockStateCacheImpl {
|
|
|
50
50
|
}
|
|
51
51
|
setHeadState(item) {
|
|
52
52
|
if (item) {
|
|
53
|
-
const key =
|
|
53
|
+
const key = toRootHex(item.hashTreeRoot());
|
|
54
54
|
this.head = { state: item, stateRoot: key };
|
|
55
55
|
}
|
|
56
56
|
else {
|
|
@@ -105,12 +105,15 @@ export class BlockStateCacheImpl {
|
|
|
105
105
|
dumpSummary() {
|
|
106
106
|
return Array.from(this.cache.entries()).map(([key, state]) => ({
|
|
107
107
|
slot: state.slot,
|
|
108
|
-
root:
|
|
108
|
+
root: toRootHex(state.hashTreeRoot()),
|
|
109
109
|
reads: this.cache.readCount.get(key) ?? 0,
|
|
110
110
|
lastRead: this.cache.lastRead.get(key) ?? 0,
|
|
111
111
|
checkpointState: false,
|
|
112
112
|
}));
|
|
113
113
|
}
|
|
114
|
+
getStates() {
|
|
115
|
+
return this.cache.values();
|
|
116
|
+
}
|
|
114
117
|
deleteAllEpochItems(epoch) {
|
|
115
118
|
for (const rootHex of this.epochIndex.get(epoch) || []) {
|
|
116
119
|
this.cache.delete(rootHex);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"blockStateCacheImpl.js","sourceRoot":"","sources":["../../../src/chain/stateCache/blockStateCacheImpl.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"blockStateCacheImpl.js","sourceRoot":"","sources":["../../../src/chain/stateCache/blockStateCacheImpl.ts"],"names":[],"mappings":"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"}
|
|
@@ -83,6 +83,7 @@ export declare class FIFOBlockStateCache implements BlockStateCache {
|
|
|
83
83
|
clear(): void;
|
|
84
84
|
/** ONLY FOR DEBUGGING PURPOSES. For lodestar debug API */
|
|
85
85
|
dumpSummary(): routes.lodestar.StateCacheItem[];
|
|
86
|
+
getStates(): IterableIterator<CachedBeaconStateAllForks>;
|
|
86
87
|
/**
|
|
87
88
|
* For unit test only.
|
|
88
89
|
*/
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { toRootHex } from "@lodestar/utils";
|
|
2
2
|
import { LinkedList } from "../../util/array.js";
|
|
3
3
|
import { MapTracker } from "./mapMetrics.js";
|
|
4
4
|
/**
|
|
@@ -76,7 +76,7 @@ export class FIFOBlockStateCache {
|
|
|
76
76
|
* In importBlock() steps, normally it'll call add() with isHead = false first. Then call setHeadState() to set the head.
|
|
77
77
|
*/
|
|
78
78
|
add(item, isHead = false) {
|
|
79
|
-
const key =
|
|
79
|
+
const key = toRootHex(item.hashTreeRoot());
|
|
80
80
|
if (this.cache.get(key) != null) {
|
|
81
81
|
if (!this.keyOrder.has(key)) {
|
|
82
82
|
throw Error(`State exists but key not found in keyOrder: ${key}`);
|
|
@@ -149,12 +149,15 @@ export class FIFOBlockStateCache {
|
|
|
149
149
|
dumpSummary() {
|
|
150
150
|
return Array.from(this.cache.entries()).map(([key, state]) => ({
|
|
151
151
|
slot: state.slot,
|
|
152
|
-
root:
|
|
152
|
+
root: toRootHex(state.hashTreeRoot()),
|
|
153
153
|
reads: this.cache.readCount.get(key) ?? 0,
|
|
154
154
|
lastRead: this.cache.lastRead.get(key) ?? 0,
|
|
155
155
|
checkpointState: false,
|
|
156
156
|
}));
|
|
157
157
|
}
|
|
158
|
+
getStates() {
|
|
159
|
+
return this.cache.values();
|
|
160
|
+
}
|
|
158
161
|
/**
|
|
159
162
|
* For unit test only.
|
|
160
163
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fifoBlockStateCache.js","sourceRoot":"","sources":["../../../src/chain/stateCache/fifoBlockStateCache.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"fifoBlockStateCache.js","sourceRoot":"","sources":["../../../src/chain/stateCache/fifoBlockStateCache.ts"],"names":[],"mappings":"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"}
|
|
@@ -52,6 +52,7 @@ export declare class InMemoryCheckpointStateCache implements CheckpointStateCach
|
|
|
52
52
|
clear(): void;
|
|
53
53
|
/** ONLY FOR DEBUGGING PURPOSES. For lodestar debug API */
|
|
54
54
|
dumpSummary(): routes.lodestar.StateCacheItem[];
|
|
55
|
+
getStates(): IterableIterator<CachedBeaconStateAllForks>;
|
|
55
56
|
/** ONLY FOR DEBUGGING PURPOSES. For spec tests on error */
|
|
56
57
|
dumpCheckpointKeys(): string[];
|
|
57
58
|
}
|
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { MapDef } from "@lodestar/utils";
|
|
1
|
+
import { MapDef, toRootHex } from "@lodestar/utils";
|
|
3
2
|
import { MapTracker } from "./mapMetrics.js";
|
|
4
3
|
import { CacheItemType } from "./types.js";
|
|
5
4
|
const MAX_EPOCHS = 10;
|
|
@@ -103,7 +102,7 @@ export class InMemoryCheckpointStateCache {
|
|
|
103
102
|
}
|
|
104
103
|
delete(cp) {
|
|
105
104
|
this.cache.delete(toCheckpointKey(toCheckpointHex(cp)));
|
|
106
|
-
const epochKey =
|
|
105
|
+
const epochKey = toRootHex(cp.root);
|
|
107
106
|
const value = this.epochIndex.get(cp.epoch);
|
|
108
107
|
if (value) {
|
|
109
108
|
value.delete(epochKey);
|
|
@@ -126,12 +125,15 @@ export class InMemoryCheckpointStateCache {
|
|
|
126
125
|
dumpSummary() {
|
|
127
126
|
return Array.from(this.cache.entries()).map(([key, state]) => ({
|
|
128
127
|
slot: state.slot,
|
|
129
|
-
root:
|
|
128
|
+
root: toRootHex(state.hashTreeRoot()),
|
|
130
129
|
reads: this.cache.readCount.get(key) ?? 0,
|
|
131
130
|
lastRead: this.cache.lastRead.get(key) ?? 0,
|
|
132
131
|
checkpointState: true,
|
|
133
132
|
}));
|
|
134
133
|
}
|
|
134
|
+
getStates() {
|
|
135
|
+
return this.cache.values();
|
|
136
|
+
}
|
|
135
137
|
/** ONLY FOR DEBUGGING PURPOSES. For spec tests on error */
|
|
136
138
|
dumpCheckpointKeys() {
|
|
137
139
|
return Array.from(this.cache.keys());
|
|
@@ -140,7 +142,7 @@ export class InMemoryCheckpointStateCache {
|
|
|
140
142
|
export function toCheckpointHex(checkpoint) {
|
|
141
143
|
return {
|
|
142
144
|
epoch: checkpoint.epoch,
|
|
143
|
-
rootHex:
|
|
145
|
+
rootHex: toRootHex(checkpoint.root),
|
|
144
146
|
};
|
|
145
147
|
}
|
|
146
148
|
export function toCheckpointKey(cp) {
|