@lodestar/beacon-node 1.23.0-dev.58dea7543c → 1.23.0-dev.5c359f92dc
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 +4 -2
- package/lib/api/impl/beacon/blocks/index.js.map +1 -1
- package/lib/api/impl/beacon/pool/index.js +13 -23
- package/lib/api/impl/beacon/pool/index.js.map +1 -1
- package/lib/api/impl/beacon/state/index.d.ts +1 -1
- package/lib/api/impl/beacon/state/index.js +39 -3
- package/lib/api/impl/beacon/state/index.js.map +1 -1
- package/lib/api/impl/beacon/state/utils.d.ts +2 -6
- package/lib/api/impl/beacon/state/utils.js +4 -36
- package/lib/api/impl/beacon/state/utils.js.map +1 -1
- package/lib/api/impl/config/constants.js +0 -1
- package/lib/api/impl/config/constants.js.map +1 -1
- package/lib/api/impl/debug/index.js +30 -0
- package/lib/api/impl/debug/index.js.map +1 -1
- package/lib/api/impl/errors.d.ts +8 -0
- package/lib/api/impl/errors.js +7 -0
- package/lib/api/impl/errors.js.map +1 -1
- package/lib/api/impl/events/index.js +1 -2
- package/lib/api/impl/events/index.js.map +1 -1
- package/lib/api/impl/node/utils.js +1 -0
- package/lib/api/impl/node/utils.js.map +1 -1
- package/lib/api/impl/validator/index.js +2 -4
- package/lib/api/impl/validator/index.js.map +1 -1
- package/lib/api/rest/activeSockets.js +1 -1
- package/lib/api/rest/activeSockets.js.map +1 -1
- package/lib/api/rest/base.d.ts +1 -0
- package/lib/api/rest/base.js +31 -4
- package/lib/api/rest/base.js.map +1 -1
- package/lib/api/rest/index.js +1 -0
- package/lib/api/rest/index.js.map +1 -1
- package/lib/api/rest/swaggerUI.js +1 -4
- package/lib/api/rest/swaggerUI.js.map +1 -1
- package/lib/chain/archiver/archiveStates.d.ts +3 -2
- package/lib/chain/archiver/archiveStates.js +8 -4
- package/lib/chain/archiver/archiveStates.js.map +1 -1
- package/lib/chain/archiver/index.d.ts +3 -1
- package/lib/chain/archiver/index.js +3 -2
- package/lib/chain/archiver/index.js.map +1 -1
- package/lib/chain/blocks/verifyBlocksDataAvailability.js +1 -2
- package/lib/chain/blocks/verifyBlocksDataAvailability.js.map +1 -1
- package/lib/chain/bls/multithread/index.js +1 -2
- package/lib/chain/bls/multithread/index.js.map +1 -1
- package/lib/chain/bls/multithread/poolSize.js +1 -1
- package/lib/chain/bls/multithread/poolSize.js.map +1 -1
- package/lib/chain/bls/multithread/worker.js +1 -1
- package/lib/chain/bls/multithread/worker.js.map +1 -1
- package/lib/chain/chain.d.ts +2 -1
- package/lib/chain/chain.js +3 -2
- package/lib/chain/chain.js.map +1 -1
- package/lib/chain/emitter.d.ts +1 -1
- package/lib/chain/emitter.js +1 -1
- package/lib/chain/emitter.js.map +1 -1
- package/lib/chain/historicalState/getHistoricalState.d.ts +2 -1
- package/lib/chain/historicalState/getHistoricalState.js +3 -0
- package/lib/chain/historicalState/getHistoricalState.js.map +1 -1
- package/lib/chain/historicalState/worker.js +1 -1
- package/lib/chain/historicalState/worker.js.map +1 -1
- package/lib/chain/initState.d.ts +1 -1
- package/lib/chain/initState.js +1 -1
- package/lib/chain/initState.js.map +1 -1
- package/lib/chain/interface.d.ts +2 -1
- package/lib/chain/options.js +1 -1
- package/lib/chain/options.js.map +1 -1
- package/lib/chain/produceBlock/validateBlobsAndKzgCommitments.d.ts +1 -1
- package/lib/chain/produceBlock/validateBlobsAndKzgCommitments.js +1 -1
- package/lib/chain/produceBlock/validateBlobsAndKzgCommitments.js.map +1 -1
- package/lib/chain/regen/regen.js +1 -1
- package/lib/chain/regen/regen.js.map +1 -1
- package/lib/chain/rewards/attestationsRewards.d.ts +1 -1
- package/lib/chain/rewards/attestationsRewards.js +3 -2
- package/lib/chain/rewards/attestationsRewards.js.map +1 -1
- package/lib/chain/serializeState.js +63 -10
- package/lib/chain/serializeState.js.map +1 -1
- package/lib/chain/stateCache/fifoBlockStateCache.d.ts +7 -2
- package/lib/chain/stateCache/fifoBlockStateCache.js +7 -2
- package/lib/chain/stateCache/fifoBlockStateCache.js.map +1 -1
- package/lib/chain/stateCache/persistentCheckpointsCache.d.ts +4 -3
- package/lib/chain/stateCache/persistentCheckpointsCache.js +25 -20
- package/lib/chain/stateCache/persistentCheckpointsCache.js.map +1 -1
- package/lib/chain/validation/aggregateAndProof.d.ts +1 -1
- package/lib/chain/validation/attestation.d.ts +3 -17
- package/lib/chain/validation/attestation.js +7 -26
- package/lib/chain/validation/attestation.js.map +1 -1
- package/lib/chain/validation/attesterSlashing.d.ts +1 -1
- package/lib/chain/validation/blsToExecutionChange.d.ts +1 -1
- package/lib/chain/validation/proposerSlashing.d.ts +1 -1
- package/lib/chain/validation/voluntaryExit.d.ts +1 -1
- package/lib/db/repositories/backfilledRanges.d.ts +1 -1
- package/lib/db/repositories/backfilledRanges.js +1 -2
- package/lib/db/repositories/backfilledRanges.js.map +1 -1
- package/lib/db/repositories/checkpointState.js +0 -1
- package/lib/db/repositories/checkpointState.js.map +1 -1
- package/lib/db/repositories/depositDataRoot.d.ts +1 -1
- package/lib/db/repositories/depositDataRoot.js +1 -2
- package/lib/db/repositories/depositDataRoot.js.map +1 -1
- package/lib/db/repositories/eth1Data.d.ts +1 -1
- package/lib/db/repositories/eth1Data.js +1 -2
- package/lib/db/repositories/eth1Data.js.map +1 -1
- package/lib/db/repositories/stateArchive.js +1 -1
- package/lib/db/repositories/stateArchive.js.map +1 -1
- package/lib/db/single/preGenesisStateLastProcessedBlock.d.ts +1 -1
- package/lib/db/single/preGenesisStateLastProcessedBlock.js +1 -1
- package/lib/db/single/preGenesisStateLastProcessedBlock.js.map +1 -1
- package/lib/eth1/eth1MergeBlockTracker.js +0 -2
- package/lib/eth1/eth1MergeBlockTracker.js.map +1 -1
- package/lib/eth1/provider/eth1Provider.js.map +1 -1
- package/lib/eth1/provider/jsonRpcHttpClient.d.ts +1 -1
- package/lib/eth1/provider/jsonRpcHttpClient.js +1 -1
- package/lib/eth1/provider/jsonRpcHttpClient.js.map +1 -1
- package/lib/eth1/provider/jwt.js +0 -1
- package/lib/eth1/provider/jwt.js.map +1 -1
- package/lib/execution/builder/index.js +1 -0
- package/lib/execution/builder/index.js.map +1 -1
- package/lib/execution/engine/http.d.ts +2 -2
- package/lib/execution/engine/http.js +2 -2
- package/lib/execution/engine/http.js.map +1 -1
- package/lib/execution/engine/index.js +1 -0
- package/lib/execution/engine/index.js.map +1 -1
- package/lib/execution/engine/mock.js +0 -1
- package/lib/execution/engine/mock.js.map +1 -1
- package/lib/execution/engine/types.js.map +1 -1
- package/lib/execution/engine/utils.js +1 -1
- package/lib/execution/engine/utils.js.map +1 -1
- package/lib/metrics/metrics/beacon.js +0 -1
- package/lib/metrics/metrics/beacon.js.map +1 -1
- package/lib/metrics/metrics/lodestar.d.ts +3 -1
- package/lib/metrics/metrics/lodestar.js +6 -6
- package/lib/metrics/metrics/lodestar.js.map +1 -1
- package/lib/monitoring/service.js +1 -1
- package/lib/monitoring/service.js.map +1 -1
- package/lib/monitoring/system.js +0 -1
- package/lib/monitoring/system.js.map +1 -1
- package/lib/network/core/metrics.js +0 -2
- package/lib/network/core/metrics.js.map +1 -1
- package/lib/network/core/networkCore.js +1 -1
- package/lib/network/core/networkCore.js.map +1 -1
- package/lib/network/core/networkCoreWorker.js +0 -1
- package/lib/network/core/networkCoreWorker.js.map +1 -1
- package/lib/network/core/networkCoreWorkerHandler.js +1 -1
- package/lib/network/core/networkCoreWorkerHandler.js.map +1 -1
- package/lib/network/discv5/index.d.ts +1 -1
- package/lib/network/discv5/index.js +1 -1
- package/lib/network/discv5/index.js.map +1 -1
- package/lib/network/discv5/worker.js +0 -1
- package/lib/network/discv5/worker.js.map +1 -1
- package/lib/network/events.js +1 -1
- package/lib/network/events.js.map +1 -1
- package/lib/network/forks.js +0 -1
- package/lib/network/forks.js.map +1 -1
- package/lib/network/gossip/gossipsub.js +0 -1
- package/lib/network/gossip/gossipsub.js.map +1 -1
- package/lib/network/gossip/interface.d.ts +8 -6
- package/lib/network/gossip/interface.js.map +1 -1
- package/lib/network/gossip/metrics.js +0 -1
- package/lib/network/gossip/metrics.js.map +1 -1
- package/lib/network/gossip/scoringParameters.js +0 -1
- package/lib/network/gossip/scoringParameters.js.map +1 -1
- package/lib/network/gossip/topic.js +2 -3
- package/lib/network/gossip/topic.js.map +1 -1
- package/lib/network/options.js +0 -2
- package/lib/network/options.js.map +1 -1
- package/lib/network/peers/datastore.js +1 -2
- package/lib/network/peers/datastore.js.map +1 -1
- package/lib/network/peers/discover.js +0 -1
- package/lib/network/peers/discover.js.map +1 -1
- package/lib/network/peers/peerManager.js +4 -4
- package/lib/network/peers/peerManager.js.map +1 -1
- package/lib/network/processor/gossipHandlers.d.ts +0 -2
- package/lib/network/processor/gossipHandlers.js +15 -62
- package/lib/network/processor/gossipHandlers.js.map +1 -1
- package/lib/network/processor/gossipQueues/index.d.ts +1 -1
- package/lib/network/processor/gossipQueues/index.js +6 -19
- package/lib/network/processor/gossipQueues/index.js.map +1 -1
- package/lib/network/processor/gossipQueues/types.d.ts +1 -2
- package/lib/network/processor/gossipQueues/types.js +0 -6
- package/lib/network/processor/gossipQueues/types.js.map +1 -1
- package/lib/network/processor/index.js +4 -2
- package/lib/network/processor/index.js.map +1 -1
- package/lib/network/reqresp/beaconBlocksMaybeBlobsByRange.js +3 -1
- package/lib/network/reqresp/beaconBlocksMaybeBlobsByRange.js.map +1 -1
- package/lib/network/reqresp/protocols.js +0 -1
- package/lib/network/reqresp/protocols.js.map +1 -1
- package/lib/network/reqresp/rateLimit.js +1 -1
- package/lib/network/reqresp/rateLimit.js.map +1 -1
- package/lib/network/reqresp/score.js +0 -1
- package/lib/network/reqresp/score.js.map +1 -1
- package/lib/network/util.js +0 -1
- package/lib/network/util.js.map +1 -1
- package/lib/sync/backfill/backfill.d.ts +2 -2
- package/lib/sync/backfill/backfill.js +2 -1
- package/lib/sync/backfill/backfill.js.map +1 -1
- package/lib/sync/range/range.d.ts +1 -1
- package/lib/sync/range/range.js +1 -1
- package/lib/sync/range/range.js.map +1 -1
- package/lib/util/asyncIterableToEvents.js +0 -2
- package/lib/util/asyncIterableToEvents.js.map +1 -1
- package/lib/util/kzg.js +0 -1
- package/lib/util/kzg.js.map +1 -1
- package/lib/util/map.js +0 -1
- package/lib/util/map.js.map +1 -1
- package/lib/util/profile.js +1 -1
- package/lib/util/profile.js.map +1 -1
- package/lib/util/queue/errors.d.ts +0 -1
- package/lib/util/queue/errors.js +0 -3
- package/lib/util/queue/errors.js.map +1 -1
- package/lib/util/queue/fnQueue.js +1 -1
- package/lib/util/queue/fnQueue.js.map +1 -1
- package/lib/util/queue/itemQueue.js +1 -1
- package/lib/util/queue/itemQueue.js.map +1 -1
- package/package.json +17 -16
- package/lib/network/processor/gossipQueues/indexedAvgTime.d.ts +0 -31
- package/lib/network/processor/gossipQueues/indexedAvgTime.js +0 -115
- package/lib/network/processor/gossipQueues/indexedAvgTime.js.map +0 -1
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import { EFFECTIVE_BALANCE_INCREMENT, ForkName, INACTIVITY_PENALTY_QUOTIENT_ALTAIR, MAX_EFFECTIVE_BALANCE, PARTICIPATION_FLAG_WEIGHTS, TIMELY_HEAD_FLAG_INDEX, TIMELY_SOURCE_FLAG_INDEX, TIMELY_TARGET_FLAG_INDEX, WEIGHT_DENOMINATOR, } from "@lodestar/params";
|
|
2
2
|
import { FLAG_ELIGIBLE_ATTESTER, FLAG_PREV_HEAD_ATTESTER_UNSLASHED, FLAG_PREV_SOURCE_ATTESTER_UNSLASHED, FLAG_PREV_TARGET_ATTESTER_UNSLASHED, beforeProcessEpoch, hasMarkers, isInInactivityLeak, } from "@lodestar/state-transition";
|
|
3
|
+
import { fromHex } from "@lodestar/utils";
|
|
3
4
|
const defaultAttestationsReward = { head: 0, target: 0, source: 0, inclusionDelay: 0, inactivity: 0 };
|
|
4
5
|
const defaultAttestationsPenalty = { target: 0, source: 0 };
|
|
5
|
-
export async function computeAttestationsRewards(
|
|
6
|
+
export async function computeAttestationsRewards(_epoch, state, _config, validatorIds) {
|
|
6
7
|
const fork = state.config.getForkName(state.slot);
|
|
7
8
|
if (fork === ForkName.phase0) {
|
|
8
9
|
throw Error("Unsupported fork. Attestations rewards calculation is not available in phase0");
|
|
@@ -70,7 +71,7 @@ function computeTotalAttestationsRewardsAltair(state, transitionCache, idealRewa
|
|
|
70
71
|
const { flags } = transitionCache;
|
|
71
72
|
const { epochCtx, config } = state;
|
|
72
73
|
const validatorIndices = validatorIds
|
|
73
|
-
.map((id) => (typeof id === "number" ? id : epochCtx.pubkey2index.get(id)))
|
|
74
|
+
.map((id) => (typeof id === "number" ? id : epochCtx.pubkey2index.get(fromHex(id))))
|
|
74
75
|
.filter((index) => index !== undefined); // Validator indices to include in the result
|
|
75
76
|
const inactivityPenaltyDenominator = config.INACTIVITY_SCORE_BIAS * INACTIVITY_PENALTY_QUOTIENT_ALTAIR;
|
|
76
77
|
for (let i = 0; i < flags.length; i++) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"attestationsRewards.js","sourceRoot":"","sources":["../../../src/chain/rewards/attestationsRewards.ts"],"names":[],"mappings":"AACA,OAAO,EACL,2BAA2B,EAC3B,QAAQ,EACR,kCAAkC,EAClC,qBAAqB,EACrB,0BAA0B,EAC1B,sBAAsB,EACtB,wBAAwB,EACxB,wBAAwB,EACxB,kBAAkB,GACnB,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EAIL,sBAAsB,EACtB,iCAAiC,EACjC,mCAAmC,EACnC,mCAAmC,EACnC,kBAAkB,EAClB,UAAU,EACV,kBAAkB,GACnB,MAAM,4BAA4B,CAAC;
|
|
1
|
+
{"version":3,"file":"attestationsRewards.js","sourceRoot":"","sources":["../../../src/chain/rewards/attestationsRewards.ts"],"names":[],"mappings":"AACA,OAAO,EACL,2BAA2B,EAC3B,QAAQ,EACR,kCAAkC,EAClC,qBAAqB,EACrB,0BAA0B,EAC1B,sBAAsB,EACtB,wBAAwB,EACxB,wBAAwB,EACxB,kBAAkB,GACnB,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EAIL,sBAAsB,EACtB,iCAAiC,EACjC,mCAAmC,EACnC,mCAAmC,EACnC,kBAAkB,EAClB,UAAU,EACV,kBAAkB,GACnB,MAAM,4BAA4B,CAAC;AAEpC,OAAO,EAAC,OAAO,EAAC,MAAM,iBAAiB,CAAC;AAQxC,MAAM,yBAAyB,GAAG,EAAC,IAAI,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,cAAc,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,EAAC,CAAC;AACpG,MAAM,0BAA0B,GAAG,EAAC,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAC,CAAC;AAE1D,MAAM,CAAC,KAAK,UAAU,0BAA0B,CAC9C,MAAa,EACb,KAAgC,EAChC,OAAqB,EACrB,YAA0C;IAE1C,MAAM,IAAI,GAAG,KAAK,CAAC,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAClD,IAAI,IAAI,KAAK,QAAQ,CAAC,MAAM,EAAE,CAAC;QAC7B,MAAM,KAAK,CAAC,+EAA+E,CAAC,CAAC;IAC/F,CAAC;IAED,MAAM,WAAW,GAAG,KAAgC,CAAC;IACrD,MAAM,eAAe,GAAG,kBAAkB,CAAC,WAAW,CAAC,CAAC;IAExD,MAAM,CAAC,YAAY,EAAE,SAAS,CAAC,GAAG,iDAAiD,CAAC,WAAW,EAAE,eAAe,CAAC,CAAC;IAClH,MAAM,YAAY,GAAG,qCAAqC,CACxD,WAAW,EACX,eAAe,EACf,YAAY,EACZ,SAAS,EACT,YAAY,CACb,CAAC;IAEF,OAAO,EAAC,YAAY,EAAE,YAAY,EAAC,CAAC;AACtC,CAAC;AAED,SAAS,iDAAiD,CACxD,KAAgC,EAChC,eAAqC;IAErC,MAAM,sBAAsB,GAAG,eAAe,CAAC,sBAAsB,CAAC;IACtE,MAAM,wBAAwB,GAAG,eAAe,CAAC,2BAA2B,CAAC;IAC7E,MAAM,8BAA8B,GAAG,IAAI,CAAC,KAAK,CAAC,qBAAqB,GAAG,2BAA2B,CAAC,CAAC;IAEvG,MAAM,YAAY,GAAG,KAAK,CAAC,IAAI,CAAC,EAAC,MAAM,EAAE,8BAA8B,GAAG,CAAC,EAAC,EAAE,CAAC,CAAC,EAAE,2BAA2B,EAAE,EAAE,CAAC,CAAC;QACjH,GAAG,yBAAyB;QAC5B,gBAAgB,EAAE,2BAA2B,GAAG,2BAA2B;KAC5E,CAAC,CAAC,CAAC;IAEJ,MAAM,qBAAqB,GAA0B,KAAK,CAAC,IAAI,CAC7D,EAAC,MAAM,EAAE,8BAA8B,GAAG,CAAC,EAAC,EAC5C,CAAC,CAAC,EAAE,2BAA2B,EAAE,EAAE,CAAC,CAAC;QACnC,GAAG,0BAA0B;QAC7B,gBAAgB,EAAE,2BAA2B,GAAG,2BAA2B;KAC5E,CAAC,CACH,CAAC;IAEF,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,0BAA0B,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QAC3D,MAAM,MAAM,GAAG,0BAA0B,CAAC,CAAC,CAAC,CAAC;QAE7C,IAAI,yBAAyB,CAAC;QAC9B,IAAI,QAAuC,CAAC;QAE5C,QAAQ,CAAC,EAAE,CAAC;YACV,KAAK,wBAAwB,CAAC,CAAC,CAAC;gBAC9B,yBAAyB,GAAG,eAAe,CAAC,uBAAuB,CAAC,sBAAsB,CAAC;gBAC3F,QAAQ,GAAG,QAAQ,CAAC;gBACpB,MAAM;YACR,CAAC;YACD,KAAK,wBAAwB,CAAC,CAAC,CAAC;gBAC9B,yBAAyB,GAAG,eAAe,CAAC,uBAAuB,CAAC,sBAAsB,CAAC;gBAC3F,QAAQ,GAAG,QAAQ,CAAC;gBACpB,MAAM;YACR,CAAC;YACD,KAAK,sBAAsB,CAAC,CAAC,CAAC;gBAC5B,yBAAyB,GAAG,eAAe,CAAC,uBAAuB,CAAC,oBAAoB,CAAC;gBACzF,QAAQ,GAAG,MAAM,CAAC;gBAClB,MAAM;YACR,CAAC;YACD,OAAO,CAAC,CAAC,CAAC;gBACR,MAAM,KAAK,CAAC,yEAAyE,CAAC,EAAE,CAAC,CAAC;YAC5F,CAAC;QACH,CAAC;QAED,KACE,IAAI,2BAA2B,GAAG,CAAC,EACnC,2BAA2B,IAAI,8BAA8B,EAC7D,2BAA2B,EAAE,EAC7B,CAAC;YACD,MAAM,UAAU,GAAG,2BAA2B,GAAG,sBAAsB,CAAC;YACxE,MAAM,eAAe,GAAG,UAAU,GAAG,MAAM,GAAG,yBAAyB,CAAC;YACxE,MAAM,WAAW,GAAG,eAAe,GAAG,wBAAwB,GAAG,kBAAkB,CAAC;YACpF,MAAM,OAAO,GAAG,CAAC,UAAU,GAAG,MAAM,CAAC,GAAG,kBAAkB,CAAC,CAAC,oCAAoC;YAEhG,MAAM,uBAAuB,GAAG,YAAY,CAAC,2BAA2B,CAAC,CAAC;YAC1E,uBAAuB,CAAC,QAAQ,CAAC,GAAG,kBAAkB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,iDAAiD;YAElI,IAAI,QAAQ,KAAK,MAAM,EAAE,CAAC;gBACxB,MAAM,kBAAkB,GAAG,qBAAqB,CAAC,2BAA2B,CAAC,CAAC;gBAC9E,kBAAkB,CAAC,QAAQ,CAAC,GAAG,OAAO,CAAC;YACzC,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,CAAC,YAAY,EAAE,qBAAqB,CAAC,CAAC;AAC/C,CAAC;AAED,gHAAgH;AAChH,SAAS,qCAAqC,CAC5C,KAA8B,EAC9B,eAAqC,EACrC,YAAuC,EACvC,SAAgC,EAChC,eAA4C,EAAE;IAE9C,MAAM,OAAO,GAAG,EAAE,CAAC;IACnB,MAAM,EAAC,KAAK,EAAC,GAAG,eAAe,CAAC;IAChC,MAAM,EAAC,QAAQ,EAAE,MAAM,EAAC,GAAG,KAAK,CAAC;IACjC,MAAM,gBAAgB,GAAG,YAAY;SAClC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,OAAO,EAAE,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;SACnF,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,6CAA6C;IAExF,MAAM,4BAA4B,GAAG,MAAM,CAAC,qBAAqB,GAAG,kCAAkC,CAAC;IAEvG,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACtC,IAAI,gBAAgB,CAAC,MAAM,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC;YAC7D,SAAS;QACX,CAAC;QAED,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QACtB,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,sBAAsB,CAAC,EAAE,CAAC;YAC9C,SAAS;QACX,CAAC;QAED,MAAM,yBAAyB,GAAG,QAAQ,CAAC,0BAA0B,CAAC,CAAC,CAAC,CAAC;QAEzE,MAAM,cAAc,GAAG,EAAC,GAAG,yBAAyB,EAAE,cAAc,EAAE,CAAC,EAAC,CAAC;QAEzE,IAAI,UAAU,CAAC,IAAI,EAAE,mCAAmC,CAAC,EAAE,CAAC;YAC1D,cAAc,CAAC,MAAM,GAAG,YAAY,CAAC,yBAAyB,CAAC,CAAC,MAAM,CAAC;QACzE,CAAC;aAAM,CAAC;YACN,cAAc,CAAC,MAAM,GAAG,SAAS,CAAC,yBAAyB,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,sCAAsC;QAClH,CAAC;QAED,IAAI,UAAU,CAAC,IAAI,EAAE,mCAAmC,CAAC,EAAE,CAAC;YAC1D,cAAc,CAAC,MAAM,GAAG,YAAY,CAAC,yBAAyB,CAAC,CAAC,MAAM,CAAC;QACzE,CAAC;aAAM,CAAC;YACN,cAAc,CAAC,MAAM,GAAG,SAAS,CAAC,yBAAyB,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;YAEzE,+DAA+D;YAC/D,MAAM,0BAA0B,GAC9B,yBAAyB,GAAG,2BAA2B,GAAG,KAAK,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YAC1F,cAAc,CAAC,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,0BAA0B,GAAG,4BAA4B,CAAC,GAAG,CAAC,CAAC,CAAC;QACzG,CAAC;QAED,IAAI,UAAU,CAAC,IAAI,EAAE,iCAAiC,CAAC,EAAE,CAAC;YACxD,cAAc,CAAC,IAAI,GAAG,YAAY,CAAC,yBAAyB,CAAC,CAAC,IAAI,CAAC;QACrE,CAAC;QAED,OAAO,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;IAC/B,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC"}
|
|
@@ -1,3 +1,48 @@
|
|
|
1
|
+
var __addDisposableResource = (this && this.__addDisposableResource) || function (env, value, async) {
|
|
2
|
+
if (value !== null && value !== void 0) {
|
|
3
|
+
if (typeof value !== "object" && typeof value !== "function") throw new TypeError("Object expected.");
|
|
4
|
+
var dispose;
|
|
5
|
+
if (async) {
|
|
6
|
+
if (!Symbol.asyncDispose) throw new TypeError("Symbol.asyncDispose is not defined.");
|
|
7
|
+
dispose = value[Symbol.asyncDispose];
|
|
8
|
+
}
|
|
9
|
+
if (dispose === void 0) {
|
|
10
|
+
if (!Symbol.dispose) throw new TypeError("Symbol.dispose is not defined.");
|
|
11
|
+
dispose = value[Symbol.dispose];
|
|
12
|
+
}
|
|
13
|
+
if (typeof dispose !== "function") throw new TypeError("Object not disposable.");
|
|
14
|
+
env.stack.push({ value: value, dispose: dispose, async: async });
|
|
15
|
+
}
|
|
16
|
+
else if (async) {
|
|
17
|
+
env.stack.push({ async: true });
|
|
18
|
+
}
|
|
19
|
+
return value;
|
|
20
|
+
};
|
|
21
|
+
var __disposeResources = (this && this.__disposeResources) || (function (SuppressedError) {
|
|
22
|
+
return function (env) {
|
|
23
|
+
function fail(e) {
|
|
24
|
+
env.error = env.hasError ? new SuppressedError(e, env.error, "An error was suppressed during disposal.") : e;
|
|
25
|
+
env.hasError = true;
|
|
26
|
+
}
|
|
27
|
+
function next() {
|
|
28
|
+
while (env.stack.length) {
|
|
29
|
+
var rec = env.stack.pop();
|
|
30
|
+
try {
|
|
31
|
+
var result = rec.dispose && rec.dispose.call(rec.value);
|
|
32
|
+
if (rec.async) return Promise.resolve(result).then(next, function(e) { fail(e); return next(); });
|
|
33
|
+
}
|
|
34
|
+
catch (e) {
|
|
35
|
+
fail(e);
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
if (env.hasError) throw env.error;
|
|
39
|
+
}
|
|
40
|
+
return next();
|
|
41
|
+
};
|
|
42
|
+
})(typeof SuppressedError === "function" ? SuppressedError : function (error, suppressed, message) {
|
|
43
|
+
var e = new Error(message);
|
|
44
|
+
return e.name = "SuppressedError", e.error = error, e.suppressed = suppressed, e;
|
|
45
|
+
});
|
|
1
46
|
/*
|
|
2
47
|
* Serialize state using the BufferPool if provided.
|
|
3
48
|
*/
|
|
@@ -5,18 +50,26 @@ export async function serializeState(state, source, processFn, bufferPool) {
|
|
|
5
50
|
const size = state.type.tree_serializedSize(state.node);
|
|
6
51
|
let stateBytes = null;
|
|
7
52
|
if (bufferPool) {
|
|
8
|
-
const
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
53
|
+
const env_1 = { stack: [], error: void 0, hasError: false };
|
|
54
|
+
try {
|
|
55
|
+
const bufferWithKey = __addDisposableResource(env_1, bufferPool.alloc(size, source), false);
|
|
56
|
+
if (bufferWithKey) {
|
|
57
|
+
stateBytes = bufferWithKey.buffer;
|
|
58
|
+
const dataView = new DataView(stateBytes.buffer, stateBytes.byteOffset, stateBytes.byteLength);
|
|
59
|
+
state.serializeToBytes({ uint8Array: stateBytes, dataView }, 0);
|
|
60
|
+
return processFn(stateBytes);
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
catch (e_1) {
|
|
64
|
+
env_1.error = e_1;
|
|
65
|
+
env_1.hasError = true;
|
|
66
|
+
}
|
|
67
|
+
finally {
|
|
68
|
+
__disposeResources(env_1);
|
|
13
69
|
}
|
|
14
70
|
}
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
stateBytes = state.serialize();
|
|
18
|
-
}
|
|
71
|
+
// we already have metrics in BufferPool so no need to do it here
|
|
72
|
+
stateBytes = state.serialize();
|
|
19
73
|
return processFn(stateBytes);
|
|
20
|
-
// release the buffer back to the pool automatically
|
|
21
74
|
}
|
|
22
75
|
//# sourceMappingURL=serializeState.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"serializeState.js","sourceRoot":"","sources":["../../src/chain/serializeState.ts"],"names":[],"mappings":"AAKA;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,KAAgC,EAChC,MAAmB,EACnB,SAAiC,EACjC,UAA8B;IAE9B,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACxD,IAAI,UAAU,GAAsB,IAAI,CAAC;IACzC,IAAI,UAAU,EAAE,CAAC
|
|
1
|
+
{"version":3,"file":"serializeState.js","sourceRoot":"","sources":["../../src/chain/serializeState.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAKA;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,KAAgC,EAChC,MAAmB,EACnB,SAAiC,EACjC,UAA8B;IAE9B,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACxD,IAAI,UAAU,GAAsB,IAAI,CAAC;IACzC,IAAI,UAAU,EAAE,CAAC;;;YACf,MAAM,aAAa,kCAAG,UAAU,CAAC,KAAK,CAAC,IAAI,EAAE,MAAM,CAAC,QAAA,CAAC;YACrD,IAAI,aAAa,EAAE,CAAC;gBAClB,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC;gBAClC,MAAM,QAAQ,GAAG,IAAI,QAAQ,CAAC,UAAU,CAAC,MAAM,EAAE,UAAU,CAAC,UAAU,EAAE,UAAU,CAAC,UAAU,CAAC,CAAC;gBAC/F,KAAK,CAAC,gBAAgB,CAAC,EAAC,UAAU,EAAE,UAAU,EAAE,QAAQ,EAAC,EAAE,CAAC,CAAC,CAAC;gBAC9D,OAAO,SAAS,CAAC,UAAU,CAAC,CAAC;YAC/B,CAAC;;;;;;;;;KAEF;IAED,iEAAiE;IACjE,UAAU,GAAG,KAAK,CAAC,SAAS,EAAE,CAAC;IAE/B,OAAO,SAAS,CAAC,UAAU,CAAC,CAAC;AAC/B,CAAC"}
|
|
@@ -8,9 +8,14 @@ export type FIFOBlockStateCacheOpts = {
|
|
|
8
8
|
maxBlockStates?: number;
|
|
9
9
|
};
|
|
10
10
|
/**
|
|
11
|
-
*
|
|
11
|
+
* Given `maxSkipSlots` = 32 and `DEFAULT_EARLIEST_PERMISSIBLE_SLOT_DISTANCE` = 32, lodestar doesn't need to
|
|
12
|
+
* reload states in order to process a gossip block.
|
|
13
|
+
*
|
|
14
|
+
* |-----------------------------------------------|-----------------------------------------------|
|
|
15
|
+
* maxSkipSlots DEFAULT_EARLIEST_PERMISSIBLE_SLOT_DISTANCE ^
|
|
16
|
+
* clock slot
|
|
12
17
|
*/
|
|
13
|
-
export declare const DEFAULT_MAX_BLOCK_STATES =
|
|
18
|
+
export declare const DEFAULT_MAX_BLOCK_STATES = 64;
|
|
14
19
|
/**
|
|
15
20
|
* New implementation of BlockStateCache that keeps the most recent n states consistently
|
|
16
21
|
* - Maintain a linked list (FIFO) with special handling for head state, which is always the first item in the list
|
|
@@ -2,9 +2,14 @@ import { toRootHex } from "@lodestar/utils";
|
|
|
2
2
|
import { LinkedList } from "../../util/array.js";
|
|
3
3
|
import { MapTracker } from "./mapMetrics.js";
|
|
4
4
|
/**
|
|
5
|
-
*
|
|
5
|
+
* Given `maxSkipSlots` = 32 and `DEFAULT_EARLIEST_PERMISSIBLE_SLOT_DISTANCE` = 32, lodestar doesn't need to
|
|
6
|
+
* reload states in order to process a gossip block.
|
|
7
|
+
*
|
|
8
|
+
* |-----------------------------------------------|-----------------------------------------------|
|
|
9
|
+
* maxSkipSlots DEFAULT_EARLIEST_PERMISSIBLE_SLOT_DISTANCE ^
|
|
10
|
+
* clock slot
|
|
6
11
|
*/
|
|
7
|
-
export const DEFAULT_MAX_BLOCK_STATES =
|
|
12
|
+
export const DEFAULT_MAX_BLOCK_STATES = 64;
|
|
8
13
|
/**
|
|
9
14
|
* New implementation of BlockStateCache that keeps the most recent n states consistently
|
|
10
15
|
* - Maintain a linked list (FIFO) with special handling for head state, which is always the first item in the list
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fifoBlockStateCache.js","sourceRoot":"","sources":["../../../src/chain/stateCache/fifoBlockStateCache.ts"],"names":[],"mappings":"AAGA,OAAO,EAAC,SAAS,EAAC,MAAM,iBAAiB,CAAC;AAE1C,OAAO,EAAC,UAAU,EAAC,MAAM,qBAAqB,CAAC;AAE/C,OAAO,EAAC,UAAU,EAAC,MAAM,iBAAiB,CAAC;AAO3C
|
|
1
|
+
{"version":3,"file":"fifoBlockStateCache.js","sourceRoot":"","sources":["../../../src/chain/stateCache/fifoBlockStateCache.ts"],"names":[],"mappings":"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"}
|
|
@@ -30,10 +30,11 @@ type LoadedStateBytesData = {
|
|
|
30
30
|
stateBytes: Uint8Array;
|
|
31
31
|
};
|
|
32
32
|
/**
|
|
33
|
-
* Before n-historical states, lodestar keeps
|
|
34
|
-
* Since
|
|
33
|
+
* Before n-historical states, lodestar keeps all checkpoint states since finalized
|
|
34
|
+
* Since Sep 2024, lodestar stores 3 most recent checkpoint states in memory and the rest on disk. The finalized state
|
|
35
|
+
* may not be available in memory, and stay on disk instead.
|
|
35
36
|
*/
|
|
36
|
-
export declare const DEFAULT_MAX_CP_STATE_EPOCHS_IN_MEMORY =
|
|
37
|
+
export declare const DEFAULT_MAX_CP_STATE_EPOCHS_IN_MEMORY = 3;
|
|
37
38
|
/**
|
|
38
39
|
* An implementation of CheckpointStateCache that keep up to n epoch checkpoint states in memory and persist the rest to disk
|
|
39
40
|
* - If it's more than `maxEpochsInMemory` epochs old, it will persist n last epochs to disk based on the view of the block
|
|
@@ -53,10 +53,11 @@ import { MapTracker } from "./mapMetrics.js";
|
|
|
53
53
|
import { datastoreKeyToCheckpoint } from "./datastore/index.js";
|
|
54
54
|
import { CacheItemType } from "./types.js";
|
|
55
55
|
/**
|
|
56
|
-
* Before n-historical states, lodestar keeps
|
|
57
|
-
* Since
|
|
56
|
+
* Before n-historical states, lodestar keeps all checkpoint states since finalized
|
|
57
|
+
* Since Sep 2024, lodestar stores 3 most recent checkpoint states in memory and the rest on disk. The finalized state
|
|
58
|
+
* may not be available in memory, and stay on disk instead.
|
|
58
59
|
*/
|
|
59
|
-
export const DEFAULT_MAX_CP_STATE_EPOCHS_IN_MEMORY =
|
|
60
|
+
export const DEFAULT_MAX_CP_STATE_EPOCHS_IN_MEMORY = 3;
|
|
60
61
|
/**
|
|
61
62
|
* An implementation of CheckpointStateCache that keep up to n epoch checkpoint states in memory and persist the rest to disk
|
|
62
63
|
* - If it's more than `maxEpochsInMemory` epochs old, it will persist n last epochs to disk based on the view of the block
|
|
@@ -97,7 +98,7 @@ export class PersistentCheckpointStateCache {
|
|
|
97
98
|
this.preComputedCheckpointHits = null;
|
|
98
99
|
this.cache = new MapTracker(metrics?.cpStateCache);
|
|
99
100
|
if (metrics) {
|
|
100
|
-
this.metrics = metrics
|
|
101
|
+
this.metrics = metrics;
|
|
101
102
|
metrics.cpStateCache.size.addCollect(() => {
|
|
102
103
|
let persistCount = 0;
|
|
103
104
|
let inMemoryCount = 0;
|
|
@@ -167,25 +168,25 @@ export class PersistentCheckpointStateCache {
|
|
|
167
168
|
const { persistedKey, stateBytes } = stateOrStateBytesData;
|
|
168
169
|
const logMeta = { persistedKey: toHex(persistedKey) };
|
|
169
170
|
this.logger.debug("Reload: read state successful", logMeta);
|
|
170
|
-
this.metrics?.stateReloadSecFromSlot.observe(this.clock?.secFromSlot(this.clock?.currentSlot ?? 0) ?? 0);
|
|
171
|
+
this.metrics?.cpStateCache.stateReloadSecFromSlot.observe(this.clock?.secFromSlot(this.clock?.currentSlot ?? 0) ?? 0);
|
|
171
172
|
const seedState = this.findSeedStateToReload(cp);
|
|
172
|
-
this.metrics?.stateReloadEpochDiff.observe(Math.abs(seedState.epochCtx.epoch - cp.epoch));
|
|
173
|
+
this.metrics?.cpStateCache.stateReloadEpochDiff.observe(Math.abs(seedState.epochCtx.epoch - cp.epoch));
|
|
173
174
|
this.logger.debug("Reload: found seed state", { ...logMeta, seedSlot: seedState.slot });
|
|
174
175
|
try {
|
|
175
176
|
const env_1 = { stack: [], error: void 0, hasError: false };
|
|
176
177
|
try {
|
|
177
178
|
// 80% of validators serialization time comes from memory allocation, this is to avoid it
|
|
178
|
-
const sszTimer = this.metrics?.stateReloadValidatorsSerializeDuration.startTimer();
|
|
179
|
+
const sszTimer = this.metrics?.cpStateCache.stateReloadValidatorsSerializeDuration.startTimer();
|
|
179
180
|
// automatically free the buffer pool after this scope
|
|
180
181
|
const validatorsBytesWithKey = __addDisposableResource(env_1, this.serializeStateValidators(seedState), false);
|
|
181
182
|
let validatorsBytes = validatorsBytesWithKey?.buffer;
|
|
182
183
|
if (validatorsBytes == null) {
|
|
183
184
|
// fallback logic in case we can't use the buffer pool
|
|
184
|
-
this.metrics?.stateReloadValidatorsSerializeAllocCount.inc();
|
|
185
|
+
this.metrics?.cpStateCache.stateReloadValidatorsSerializeAllocCount.inc();
|
|
185
186
|
validatorsBytes = seedState.validators.serialize();
|
|
186
187
|
}
|
|
187
188
|
sszTimer?.();
|
|
188
|
-
const timer = this.metrics?.stateReloadDuration.startTimer();
|
|
189
|
+
const timer = this.metrics?.cpStateCache.stateReloadDuration.startTimer();
|
|
189
190
|
const newCachedState = loadCachedBeaconState(seedState, stateBytes, {}, validatorsBytes);
|
|
190
191
|
newCachedState.commit();
|
|
191
192
|
const stateRoot = toRootHex(newCachedState.hashTreeRoot());
|
|
@@ -248,7 +249,7 @@ export class PersistentCheckpointStateCache {
|
|
|
248
249
|
throw new Error("Expected persistent key");
|
|
249
250
|
}
|
|
250
251
|
const persistedKey = cacheItem.value;
|
|
251
|
-
const dbReadTimer = this.metrics?.stateReloadDbReadTime.startTimer();
|
|
252
|
+
const dbReadTimer = this.metrics?.cpStateCache.stateReloadDbReadTime.startTimer();
|
|
252
253
|
const stateBytes = await this.datastore.read(persistedKey);
|
|
253
254
|
dbReadTimer?.();
|
|
254
255
|
if (stateBytes === null) {
|
|
@@ -260,19 +261,19 @@ export class PersistentCheckpointStateCache {
|
|
|
260
261
|
* Similar to get() api without reloading from disk
|
|
261
262
|
*/
|
|
262
263
|
get(cpOrKey, opts) {
|
|
263
|
-
this.metrics?.lookups.inc();
|
|
264
|
+
this.metrics?.cpStateCache.lookups.inc();
|
|
264
265
|
const cpKey = typeof cpOrKey === "string" ? cpOrKey : toCacheKey(cpOrKey);
|
|
265
266
|
const cacheItem = this.cache.get(cpKey);
|
|
266
267
|
if (cacheItem === undefined) {
|
|
267
268
|
return null;
|
|
268
269
|
}
|
|
269
|
-
this.metrics?.hits.inc();
|
|
270
|
+
this.metrics?.cpStateCache.hits.inc();
|
|
270
271
|
if (cpKey === this.preComputedCheckpoint) {
|
|
271
272
|
this.preComputedCheckpointHits = (this.preComputedCheckpointHits ?? 0) + 1;
|
|
272
273
|
}
|
|
273
274
|
if (isInMemoryCacheItem(cacheItem)) {
|
|
274
275
|
const { state } = cacheItem;
|
|
275
|
-
this.metrics?.stateClonedCount.observe(state.clonedCount);
|
|
276
|
+
this.metrics?.cpStateCache.stateClonedCount.observe(state.clonedCount);
|
|
276
277
|
return state.clone(opts?.dontTransferCache);
|
|
277
278
|
}
|
|
278
279
|
return null;
|
|
@@ -284,7 +285,7 @@ export class PersistentCheckpointStateCache {
|
|
|
284
285
|
const cpHex = toCheckpointHex(cp);
|
|
285
286
|
const key = toCacheKey(cpHex);
|
|
286
287
|
const cacheItem = this.cache.get(key);
|
|
287
|
-
this.metrics?.adds.inc();
|
|
288
|
+
this.metrics?.cpStateCache.adds.inc();
|
|
288
289
|
if (cacheItem !== undefined && isPersistedCacheItem(cacheItem)) {
|
|
289
290
|
const persistedKey = cacheItem.value;
|
|
290
291
|
// was persisted to disk, set back to memory
|
|
@@ -614,7 +615,7 @@ export class PersistentCheckpointStateCache {
|
|
|
614
615
|
}
|
|
615
616
|
else {
|
|
616
617
|
// persist and do not update epochIndex
|
|
617
|
-
this.metrics?.statePersistSecFromSlot.observe(this.clock?.secFromSlot(this.clock?.currentSlot ?? 0) ?? 0);
|
|
618
|
+
this.metrics?.cpStateCache.statePersistSecFromSlot.observe(this.clock?.secFromSlot(this.clock?.currentSlot ?? 0) ?? 0);
|
|
618
619
|
const cpPersist = { epoch: epoch, root: fromHex(rootHex) };
|
|
619
620
|
// It's not sustainable to allocate ~240MB for each state every epoch, so we use buffer pool to reuse the memory.
|
|
620
621
|
// As monitored on holesky as of Jan 2024:
|
|
@@ -622,9 +623,13 @@ export class PersistentCheckpointStateCache {
|
|
|
622
623
|
// - It helps stabilize persist time and save ~300ms in average (1.5s vs 1.2s)
|
|
623
624
|
// - It also helps the state reload to save ~500ms in average (4.3s vs 3.8s)
|
|
624
625
|
// - Also `serializeState.test.ts` perf test shows a lot of differences allocating ~240MB once vs per state serialization
|
|
625
|
-
const timer = this.metrics?.stateSerializeDuration.startTimer(
|
|
626
|
-
|
|
627
|
-
|
|
626
|
+
const timer = this.metrics?.stateSerializeDuration.startTimer({
|
|
627
|
+
source: AllocSource.PERSISTENT_CHECKPOINTS_CACHE_STATE,
|
|
628
|
+
});
|
|
629
|
+
persistedKey = await serializeState(state, AllocSource.PERSISTENT_CHECKPOINTS_CACHE_STATE, (stateBytes) => {
|
|
630
|
+
timer?.();
|
|
631
|
+
return this.datastore.write(cpPersist, stateBytes);
|
|
632
|
+
}, this.bufferPool);
|
|
628
633
|
persistCount++;
|
|
629
634
|
this.logger.verbose("Pruned checkpoint state from memory and persisted to disk", {
|
|
630
635
|
...logMeta,
|
|
@@ -646,7 +651,7 @@ export class PersistentCheckpointStateCache {
|
|
|
646
651
|
this.cache.delete(cpKey);
|
|
647
652
|
this.epochIndex.get(epoch)?.delete(rootHex);
|
|
648
653
|
}
|
|
649
|
-
this.metrics?.statePruneFromMemoryCount.inc();
|
|
654
|
+
this.metrics?.cpStateCache.statePruneFromMemoryCount.inc();
|
|
650
655
|
this.logger.verbose("Pruned checkpoint state from memory", logMeta);
|
|
651
656
|
}
|
|
652
657
|
}
|
|
@@ -667,7 +672,7 @@ export class PersistentCheckpointStateCache {
|
|
|
667
672
|
if (persistedKey) {
|
|
668
673
|
await this.datastore.remove(persistedKey);
|
|
669
674
|
persistCount++;
|
|
670
|
-
this.metrics?.persistedStateRemoveCount.inc();
|
|
675
|
+
this.metrics?.cpStateCache.persistedStateRemoveCount.inc();
|
|
671
676
|
}
|
|
672
677
|
}
|
|
673
678
|
this.cache.delete(key);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"persistentCheckpointsCache.js","sourceRoot":"","sources":["../../../src/chain/stateCache/persistentCheckpointsCache.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"persistentCheckpointsCache.js","sourceRoot":"","sources":["../../../src/chain/stateCache/persistentCheckpointsCache.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { ForkName } from "@lodestar/params";
|
|
2
2
|
import { RootHex, IndexedAttestation, SignedAggregateAndProof } from "@lodestar/types";
|
|
3
|
-
import { IBeaconChain } from "
|
|
3
|
+
import { IBeaconChain } from "../index.js";
|
|
4
4
|
export type AggregateAndProofValidationResult = {
|
|
5
5
|
indexedAttestation: IndexedAttestation;
|
|
6
6
|
committeeIndices: Uint32Array;
|
|
@@ -29,25 +29,19 @@ export type GossipAttestation = {
|
|
|
29
29
|
attestation: null;
|
|
30
30
|
serializedData: Uint8Array;
|
|
31
31
|
attSlot: Slot;
|
|
32
|
-
attDataBase64
|
|
32
|
+
attDataBase64: SeenAttDataKey;
|
|
33
33
|
};
|
|
34
34
|
export type Step0Result = AttestationValidationResult & {
|
|
35
35
|
signatureSet: SingleSignatureSet;
|
|
36
36
|
validatorIndex: number;
|
|
37
37
|
};
|
|
38
|
-
/**
|
|
39
|
-
* Validate a single gossip attestation, do not prioritize bls signature set
|
|
40
|
-
*/
|
|
41
|
-
export declare function validateGossipAttestation(fork: ForkName, chain: IBeaconChain, attestationOrBytes: GossipAttestation,
|
|
42
|
-
/** Optional, to allow verifying attestations through API with unknown subnet */
|
|
43
|
-
subnet: number): Promise<AttestationValidationResult>;
|
|
44
38
|
/**
|
|
45
39
|
* Verify gossip attestations of the same attestation data. The main advantage is we can batch verify bls signatures
|
|
46
40
|
* through verifySignatureSetsSameMessage bls api to improve performance.
|
|
47
41
|
* - If there are less than 2 signatures (minSameMessageSignatureSetsToBatch), verify each signature individually with batchable = true
|
|
48
42
|
* - do not prioritize bls signature set
|
|
49
43
|
*/
|
|
50
|
-
export declare function validateGossipAttestationsSameAttData(fork: ForkName, chain: IBeaconChain, attestationOrBytesArr: GossipAttestation[], subnet: number, step0ValidationFn?: typeof
|
|
44
|
+
export declare function validateGossipAttestationsSameAttData(fork: ForkName, chain: IBeaconChain, attestationOrBytesArr: GossipAttestation[], subnet: number, step0ValidationFn?: typeof validateAttestationNoSignatureCheck): Promise<BatchResult>;
|
|
51
45
|
/**
|
|
52
46
|
* Validate attestations from api
|
|
53
47
|
* - no need to deserialize attestation
|
|
@@ -55,16 +49,11 @@ export declare function validateGossipAttestationsSameAttData(fork: ForkName, ch
|
|
|
55
49
|
* - prioritize bls signature set
|
|
56
50
|
*/
|
|
57
51
|
export declare function validateApiAttestation(fork: ForkName, chain: IBeaconChain, attestationOrBytes: ApiAttestation): Promise<AttestationValidationResult>;
|
|
58
|
-
/**
|
|
59
|
-
* Validate a single unaggregated attestation
|
|
60
|
-
* subnet is null for api attestations
|
|
61
|
-
*/
|
|
62
|
-
export declare function validateAttestation(fork: ForkName, chain: IBeaconChain, attestationOrBytes: AttestationOrBytes, subnet: number | null, prioritizeBls?: boolean): Promise<AttestationValidationResult>;
|
|
63
52
|
/**
|
|
64
53
|
* Only deserialize the attestation if needed, use the cached AttestationData instead
|
|
65
54
|
* This is to avoid deserializing similar attestation multiple times which could help the gc
|
|
66
55
|
*/
|
|
67
|
-
declare function
|
|
56
|
+
declare function validateAttestationNoSignatureCheck(fork: ForkName, chain: IBeaconChain, attestationOrBytes: AttestationOrBytes,
|
|
68
57
|
/** Optional, to allow verifying attestations through API with unknown subnet */
|
|
69
58
|
subnet: number | null): Promise<Step0Result>;
|
|
70
59
|
/**
|
|
@@ -111,9 +100,6 @@ export declare function computeSubnetForSlot(shuffling: EpochShuffling, slot: nu
|
|
|
111
100
|
* Return fork-dependent seen attestation key
|
|
112
101
|
* - for pre-electra, it's the AttestationData base64
|
|
113
102
|
* - for electra and later, it's the AttestationData base64 + committeeBits base64
|
|
114
|
-
*
|
|
115
|
-
* we always have attDataBase64 from the IndexedGossipQueue, getAttDataFromAttestationSerialized() just for backward compatible when beaconAttestationBatchValidation is false
|
|
116
|
-
* TODO: remove beaconAttestationBatchValidation flag since the batch attestation is stable
|
|
117
103
|
*/
|
|
118
104
|
export declare function getSeenAttDataKeyFromGossipAttestation(fork: ForkName, attestation: GossipAttestation): SeenAttDataKey | null;
|
|
119
105
|
/**
|
|
@@ -5,19 +5,10 @@ import { toRootHex } from "@lodestar/utils";
|
|
|
5
5
|
import { AttestationError, AttestationErrorCode, GossipAction } from "../errors/index.js";
|
|
6
6
|
import { MAXIMUM_GOSSIP_CLOCK_DISPARITY_SEC } from "../../constants/index.js";
|
|
7
7
|
import { RegenCaller } from "../regen/index.js";
|
|
8
|
-
import { getAggregationBitsFromAttestationSerialized,
|
|
8
|
+
import { getAggregationBitsFromAttestationSerialized, getAttDataFromSignedAggregateAndProofElectra, getCommitteeBitsFromAttestationSerialized, getCommitteeBitsFromSignedAggregateAndProofElectra, getAttDataFromSignedAggregateAndProofPhase0, getSignatureFromAttestationSerialized, } from "../../util/sszBytes.js";
|
|
9
9
|
import { sszDeserializeAttestation } from "../../network/gossip/topic.js";
|
|
10
10
|
import { wrapError } from "../../util/wrapError.js";
|
|
11
11
|
import { getShufflingDependentRoot } from "../../util/dependentRoot.js";
|
|
12
|
-
/**
|
|
13
|
-
* Validate a single gossip attestation, do not prioritize bls signature set
|
|
14
|
-
*/
|
|
15
|
-
export async function validateGossipAttestation(fork, chain, attestationOrBytes,
|
|
16
|
-
/** Optional, to allow verifying attestations through API with unknown subnet */
|
|
17
|
-
subnet) {
|
|
18
|
-
const prioritizeBls = false;
|
|
19
|
-
return validateAttestation(fork, chain, attestationOrBytes, subnet, prioritizeBls);
|
|
20
|
-
}
|
|
21
12
|
/**
|
|
22
13
|
* Verify gossip attestations of the same attestation data. The main advantage is we can batch verify bls signatures
|
|
23
14
|
* through verifySignatureSetsSameMessage bls api to improve performance.
|
|
@@ -26,7 +17,7 @@ subnet) {
|
|
|
26
17
|
*/
|
|
27
18
|
export async function validateGossipAttestationsSameAttData(fork, chain, attestationOrBytesArr, subnet,
|
|
28
19
|
// for unit test, consumers do not need to pass this
|
|
29
|
-
step0ValidationFn =
|
|
20
|
+
step0ValidationFn = validateAttestationNoSignatureCheck) {
|
|
30
21
|
if (attestationOrBytesArr.length === 0) {
|
|
31
22
|
return { results: [], batchableBls: false };
|
|
32
23
|
}
|
|
@@ -112,15 +103,9 @@ step0ValidationFn = validateGossipAttestationNoSignatureCheck) {
|
|
|
112
103
|
*/
|
|
113
104
|
export async function validateApiAttestation(fork, chain, attestationOrBytes) {
|
|
114
105
|
const prioritizeBls = true;
|
|
115
|
-
|
|
116
|
-
}
|
|
117
|
-
/**
|
|
118
|
-
* Validate a single unaggregated attestation
|
|
119
|
-
* subnet is null for api attestations
|
|
120
|
-
*/
|
|
121
|
-
export async function validateAttestation(fork, chain, attestationOrBytes, subnet, prioritizeBls = false) {
|
|
106
|
+
const subnet = null;
|
|
122
107
|
try {
|
|
123
|
-
const step0Result = await
|
|
108
|
+
const step0Result = await validateAttestationNoSignatureCheck(fork, chain, attestationOrBytes, subnet);
|
|
124
109
|
const { attestation, signatureSet, validatorIndex } = step0Result;
|
|
125
110
|
const isValid = await chain.bls.verifySignatureSets([signatureSet], { batchable: true, priority: prioritizeBls });
|
|
126
111
|
if (isValid) {
|
|
@@ -149,7 +134,7 @@ export async function validateAttestation(fork, chain, attestationOrBytes, subne
|
|
|
149
134
|
* Only deserialize the attestation if needed, use the cached AttestationData instead
|
|
150
135
|
* This is to avoid deserializing similar attestation multiple times which could help the gc
|
|
151
136
|
*/
|
|
152
|
-
async function
|
|
137
|
+
async function validateAttestationNoSignatureCheck(fork, chain, attestationOrBytes,
|
|
153
138
|
/** Optional, to allow verifying attestations through API with unknown subnet */
|
|
154
139
|
subnet) {
|
|
155
140
|
// Do checks in this order:
|
|
@@ -599,19 +584,15 @@ export function computeSubnetForSlot(shuffling, slot, committeeIndex) {
|
|
|
599
584
|
* Return fork-dependent seen attestation key
|
|
600
585
|
* - for pre-electra, it's the AttestationData base64
|
|
601
586
|
* - for electra and later, it's the AttestationData base64 + committeeBits base64
|
|
602
|
-
*
|
|
603
|
-
* we always have attDataBase64 from the IndexedGossipQueue, getAttDataFromAttestationSerialized() just for backward compatible when beaconAttestationBatchValidation is false
|
|
604
|
-
* TODO: remove beaconAttestationBatchValidation flag since the batch attestation is stable
|
|
605
587
|
*/
|
|
606
588
|
export function getSeenAttDataKeyFromGossipAttestation(fork, attestation) {
|
|
607
589
|
const { attDataBase64, serializedData } = attestation;
|
|
608
590
|
if (isForkPostElectra(fork)) {
|
|
609
|
-
const attData = attDataBase64 ?? getAttDataFromAttestationSerialized(serializedData);
|
|
610
591
|
const committeeBits = getCommitteeBitsFromAttestationSerialized(serializedData);
|
|
611
|
-
return
|
|
592
|
+
return attDataBase64 && committeeBits ? attDataBase64 + committeeBits : null;
|
|
612
593
|
}
|
|
613
594
|
// pre-electra
|
|
614
|
-
return attDataBase64
|
|
595
|
+
return attDataBase64;
|
|
615
596
|
}
|
|
616
597
|
/**
|
|
617
598
|
* Extract attestation data key from SignedAggregateAndProof Uint8Array to use cached data from SeenAttestationDatas
|