@lodestar/beacon-node 1.17.0-dev.cd59df328b → 1.17.0-dev.d66f607108
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/README.md +1 -1
- package/lib/api/impl/beacon/blocks/index.js.map +1 -1
- package/lib/api/impl/beacon/blocks/utils.js.map +1 -1
- package/lib/api/impl/beacon/index.js +3 -0
- package/lib/api/impl/beacon/index.js.map +1 -1
- package/lib/api/impl/beacon/pool/index.js.map +1 -1
- package/lib/api/impl/beacon/rewards/index.d.ts +4 -0
- package/lib/api/impl/beacon/rewards/index.js +16 -0
- package/lib/api/impl/beacon/rewards/index.js.map +1 -0
- package/lib/api/impl/beacon/state/index.js.map +1 -1
- package/lib/api/impl/beacon/state/utils.js.map +1 -1
- package/lib/api/impl/debug/index.js.map +1 -1
- package/lib/api/impl/events/index.js.map +1 -1
- package/lib/api/impl/lightclient/index.js.map +1 -1
- package/lib/api/impl/lodestar/index.js.map +1 -1
- package/lib/api/impl/node/index.js.map +1 -1
- package/lib/api/impl/node/utils.js.map +1 -1
- package/lib/api/impl/proof/index.js.map +1 -1
- package/lib/api/impl/validator/index.js.map +1 -1
- package/lib/api/impl/validator/utils.js.map +1 -1
- package/lib/api/rest/activeSockets.js.map +1 -1
- package/lib/api/rest/base.js.map +1 -1
- package/lib/api/rest/index.js +1 -1
- package/lib/api/rest/index.js.map +1 -1
- package/lib/api/rest/swaggerUI.js.map +1 -1
- package/lib/chain/archiver/archiveBlocks.js.map +1 -1
- package/lib/chain/archiver/archiveStates.js.map +1 -1
- package/lib/chain/archiver/index.js.map +1 -1
- package/lib/chain/balancesCache.js.map +1 -1
- package/lib/chain/beaconProposerCache.js.map +1 -1
- package/lib/chain/blocks/importBlock.js.map +1 -1
- package/lib/chain/blocks/index.js.map +1 -1
- package/lib/chain/blocks/types.d.ts +3 -1
- package/lib/chain/blocks/types.js +16 -1
- package/lib/chain/blocks/types.js.map +1 -1
- package/lib/chain/blocks/utils/chainSegment.js.map +1 -1
- package/lib/chain/blocks/utils/checkpoint.js.map +1 -1
- package/lib/chain/blocks/verifyBlock.js.map +1 -1
- package/lib/chain/blocks/verifyBlocksDataAvailability.js +4 -3
- package/lib/chain/blocks/verifyBlocksDataAvailability.js.map +1 -1
- package/lib/chain/blocks/verifyBlocksExecutionPayloads.js.map +1 -1
- package/lib/chain/blocks/verifyBlocksSanityChecks.js.map +1 -1
- package/lib/chain/blocks/verifyBlocksSignatures.js.map +1 -1
- package/lib/chain/blocks/verifyBlocksStateTransitionOnly.js.map +1 -1
- package/lib/chain/blocks/writeBlockInputToDb.js.map +1 -1
- package/lib/chain/bls/maybeBatch.js.map +1 -1
- package/lib/chain/bls/multithread/index.js.map +1 -1
- package/lib/chain/bls/multithread/jobItem.js.map +1 -1
- package/lib/chain/bls/multithread/poolSize.js.map +1 -1
- package/lib/chain/bls/multithread/utils.js.map +1 -1
- package/lib/chain/bls/multithread/worker.js.map +1 -1
- package/lib/chain/bls/singleThread.js.map +1 -1
- package/lib/chain/bls/utils.js.map +1 -1
- package/lib/chain/chain.d.ts +4 -0
- package/lib/chain/chain.js +17 -0
- package/lib/chain/chain.js.map +1 -1
- package/lib/chain/emitter.d.ts +1 -0
- package/lib/chain/errors/attestationError.js.map +1 -1
- package/lib/chain/errors/blockError.js.map +1 -1
- package/lib/chain/genesis/genesis.js.map +1 -1
- package/lib/chain/initState.js.map +1 -1
- package/lib/chain/interface.d.ts +4 -0
- package/lib/chain/interface.js.map +1 -1
- package/lib/chain/lightClient/index.js.map +1 -1
- package/lib/chain/lightClient/proofs.js +3 -3
- package/lib/chain/lightClient/proofs.js.map +1 -1
- package/lib/chain/opPools/aggregatedAttestationPool.js.map +1 -1
- package/lib/chain/opPools/attestationPool.js.map +1 -1
- package/lib/chain/opPools/opPool.js.map +1 -1
- package/lib/chain/opPools/syncCommitteeMessagePool.js.map +1 -1
- package/lib/chain/opPools/syncContributionAndProofPool.js.map +1 -1
- package/lib/chain/opPools/utils.js.map +1 -1
- package/lib/chain/prepareNextSlot.js.map +1 -1
- package/lib/chain/produceBlock/produceBlockBody.js.map +1 -1
- package/lib/chain/produceBlock/validateBlobsAndKzgCommitments.js.map +1 -1
- package/lib/chain/regen/errors.d.ts +7 -1
- package/lib/chain/regen/errors.js +1 -0
- package/lib/chain/regen/errors.js.map +1 -1
- package/lib/chain/regen/interface.d.ts +1 -0
- package/lib/chain/regen/queued.d.ts +1 -0
- package/lib/chain/regen/queued.js +32 -25
- package/lib/chain/regen/queued.js.map +1 -1
- package/lib/chain/regen/regen.d.ts +15 -6
- package/lib/chain/regen/regen.js +57 -22
- package/lib/chain/regen/regen.js.map +1 -1
- package/lib/chain/reprocess.js.map +1 -1
- package/lib/chain/rewards/blockRewards.d.ts +14 -0
- package/lib/chain/rewards/blockRewards.js +90 -0
- package/lib/chain/rewards/blockRewards.js.map +1 -0
- package/lib/chain/rewards/syncCommitteeRewards.d.ts +6 -0
- package/lib/chain/rewards/syncCommitteeRewards.js +36 -0
- package/lib/chain/rewards/syncCommitteeRewards.js.map +1 -0
- package/lib/chain/seenCache/seenAggregateAndProof.js.map +1 -1
- package/lib/chain/seenCache/seenAttestationData.js.map +1 -1
- package/lib/chain/seenCache/seenAttesters.js.map +1 -1
- package/lib/chain/seenCache/seenBlockAttesters.js.map +1 -1
- package/lib/chain/seenCache/seenBlockProposers.js.map +1 -1
- package/lib/chain/seenCache/seenCommittee.js.map +1 -1
- package/lib/chain/seenCache/seenCommitteeContribution.js.map +1 -1
- package/lib/chain/seenCache/seenGossipBlockInput.d.ts +6 -1
- package/lib/chain/seenCache/seenGossipBlockInput.js +9 -17
- package/lib/chain/seenCache/seenGossipBlockInput.js.map +1 -1
- package/lib/chain/shufflingCache.js.map +1 -1
- package/lib/chain/stateCache/datastore/file.js.map +1 -1
- package/lib/chain/stateCache/fifoBlockStateCache.js.map +1 -1
- package/lib/chain/stateCache/mapMetrics.js.map +1 -1
- package/lib/chain/stateCache/persistentCheckpointsCache.js.map +1 -1
- package/lib/chain/stateCache/stateContextCache.js.map +1 -1
- package/lib/chain/stateCache/stateContextCheckpointsCache.js.map +1 -1
- package/lib/chain/validation/aggregateAndProof.js.map +1 -1
- package/lib/chain/validation/attestation.js.map +1 -1
- package/lib/chain/validation/attesterSlashing.js.map +1 -1
- package/lib/chain/validation/blobSidecar.js.map +1 -1
- package/lib/chain/validation/block.js.map +1 -1
- package/lib/chain/validation/blsToExecutionChange.js.map +1 -1
- package/lib/chain/validation/lightClientFinalityUpdate.js.map +1 -1
- package/lib/chain/validation/lightClientOptimisticUpdate.js.map +1 -1
- package/lib/chain/validation/proposerSlashing.js.map +1 -1
- package/lib/chain/validation/syncCommittee.js.map +1 -1
- package/lib/chain/validation/syncCommitteeContributionAndProof.js.map +1 -1
- package/lib/chain/validation/voluntaryExit.js.map +1 -1
- package/lib/db/buckets.d.ts +25 -25
- package/lib/db/buckets.js.map +1 -1
- package/lib/db/repositories/attesterSlashing.js.map +1 -1
- package/lib/db/repositories/blockArchive.js.map +1 -1
- package/lib/db/repositories/depositDataRoot.js.map +1 -1
- package/lib/db/repositories/depositEvent.js.map +1 -1
- package/lib/db/repositories/stateArchive.js.map +1 -1
- package/lib/eth1/eth1DepositDataTracker.js.map +1 -1
- package/lib/eth1/eth1DepositsCache.js.map +1 -1
- package/lib/eth1/eth1MergeBlockTracker.js.map +1 -1
- package/lib/eth1/index.js.map +1 -1
- package/lib/eth1/provider/eth1Provider.js.map +1 -1
- package/lib/eth1/provider/jsonRpcHttpClient.d.ts +1 -0
- package/lib/eth1/provider/jsonRpcHttpClient.js +1 -1
- package/lib/eth1/provider/jsonRpcHttpClient.js.map +1 -1
- package/lib/eth1/provider/utils.js.map +1 -1
- package/lib/eth1/stream.js.map +1 -1
- package/lib/eth1/utils/deposits.js.map +1 -1
- package/lib/eth1/utils/eth1Data.js.map +1 -1
- package/lib/eth1/utils/eth1DepositEvent.js.map +1 -1
- package/lib/eth1/utils/eth1Vote.js +0 -1
- package/lib/eth1/utils/eth1Vote.js.map +1 -1
- package/lib/eth1/utils/groupDepositEventsByBlock.js.map +1 -1
- package/lib/eth1/utils/optimizeNextBlockDiffForGenesis.js.map +1 -1
- package/lib/execution/builder/http.js +5 -8
- package/lib/execution/builder/http.js.map +1 -1
- package/lib/execution/builder/index.js.map +1 -1
- package/lib/execution/engine/http.js.map +1 -1
- package/lib/execution/engine/index.js.map +1 -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.map +1 -1
- package/lib/metrics/metrics/lodestar.d.ts +8 -1
- package/lib/metrics/metrics/lodestar.js +10 -0
- package/lib/metrics/metrics/lodestar.js.map +1 -1
- package/lib/metrics/metrics.js.map +1 -1
- package/lib/metrics/server/http.js.map +1 -1
- package/lib/metrics/utils/avgMinMax.js.map +1 -1
- package/lib/metrics/utils/gauge.js.map +1 -1
- package/lib/metrics/validatorMonitor.js.map +1 -1
- package/lib/monitoring/clientStats.js.map +1 -1
- package/lib/monitoring/properties.js.map +1 -1
- package/lib/monitoring/service.js.map +1 -1
- package/lib/monitoring/system.js.map +1 -1
- package/lib/network/core/networkCore.js.map +1 -1
- package/lib/network/core/networkCoreWorker.js.map +1 -1
- package/lib/network/core/networkCoreWorkerHandler.js.map +1 -1
- package/lib/network/discv5/index.d.ts +1 -0
- package/lib/network/discv5/index.js.map +1 -1
- package/lib/network/discv5/utils.js.map +1 -1
- package/lib/network/discv5/worker.js.map +1 -1
- package/lib/network/events.d.ts +5 -0
- package/lib/network/events.js +3 -1
- package/lib/network/events.js.map +1 -1
- package/lib/network/forks.js.map +1 -1
- package/lib/network/gossip/encoding.js.map +1 -1
- package/lib/network/gossip/gossipsub.js +1 -1
- package/lib/network/gossip/gossipsub.js.map +1 -1
- package/lib/network/gossip/scoringParameters.js.map +1 -1
- package/lib/network/gossip/topic.js +1 -1
- package/lib/network/gossip/topic.js.map +1 -1
- package/lib/network/libp2p/index.js.map +1 -1
- package/lib/network/metadata.js.map +1 -1
- package/lib/network/network.js.map +1 -1
- package/lib/network/options.js +1 -1
- package/lib/network/options.js.map +1 -1
- package/lib/network/peers/datastore.js.map +1 -1
- package/lib/network/peers/discover.js +1 -1
- package/lib/network/peers/discover.js.map +1 -1
- package/lib/network/peers/peerManager.js.map +1 -1
- package/lib/network/peers/peersData.js.map +1 -1
- package/lib/network/peers/score/score.js.map +1 -1
- package/lib/network/peers/score/store.js.map +1 -1
- package/lib/network/peers/score/utils.js.map +1 -1
- package/lib/network/peers/utils/assertPeerRelevance.js +1 -1
- package/lib/network/peers/utils/assertPeerRelevance.js.map +1 -1
- package/lib/network/peers/utils/enrSubnetsDeserialize.js.map +1 -1
- package/lib/network/peers/utils/getConnectedPeerIds.js.map +1 -1
- package/lib/network/peers/utils/prioritizePeers.js.map +1 -1
- package/lib/network/peers/utils/subnetMap.js.map +1 -1
- package/lib/network/processor/extractSlotRootFns.js.map +1 -1
- package/lib/network/processor/gossipHandlers.js +7 -4
- package/lib/network/processor/gossipHandlers.js.map +1 -1
- package/lib/network/processor/gossipQueues/index.js.map +1 -1
- package/lib/network/processor/gossipQueues/indexed.js.map +1 -1
- package/lib/network/processor/gossipQueues/indexedAvgTime.js.map +1 -1
- package/lib/network/processor/gossipQueues/linear.js.map +1 -1
- package/lib/network/processor/gossipValidatorFn.js.map +1 -1
- package/lib/network/processor/index.js.map +1 -1
- package/lib/network/reqresp/ReqRespBeaconNode.js.map +1 -1
- package/lib/network/reqresp/beaconBlocksMaybeBlobsByRange.js.map +1 -1
- package/lib/network/reqresp/beaconBlocksMaybeBlobsByRoot.d.ts +2 -0
- package/lib/network/reqresp/beaconBlocksMaybeBlobsByRoot.js +39 -1
- package/lib/network/reqresp/beaconBlocksMaybeBlobsByRoot.js.map +1 -1
- package/lib/network/reqresp/handlers/beaconBlocksByRange.js.map +1 -1
- package/lib/network/reqresp/handlers/beaconBlocksByRoot.js.map +1 -1
- package/lib/network/reqresp/handlers/blobSidecarsByRange.js.map +1 -1
- package/lib/network/reqresp/handlers/blobSidecarsByRoot.js.map +1 -1
- package/lib/network/reqresp/handlers/lightClientBootstrap.js.map +1 -1
- package/lib/network/reqresp/handlers/lightClientFinalityUpdate.js.map +1 -1
- package/lib/network/reqresp/handlers/lightClientOptimisticUpdate.js.map +1 -1
- package/lib/network/reqresp/handlers/lightClientUpdatesByRange.js.map +1 -1
- package/lib/network/reqresp/protocols.js.map +1 -1
- package/lib/network/reqresp/rateLimit.js.map +1 -1
- package/lib/network/reqresp/score.js.map +1 -1
- package/lib/network/reqresp/types.js.map +1 -1
- package/lib/network/reqresp/utils/collect.js.map +1 -1
- package/lib/network/reqresp/utils/collectSequentialBlocksInRange.js.map +1 -1
- package/lib/network/subnets/attnetsService.js.map +1 -1
- package/lib/network/subnets/dllAttnetsService.js.map +1 -1
- package/lib/network/subnets/syncnetsService.js.map +1 -1
- package/lib/network/subnets/util.js.map +1 -1
- package/lib/node/nodejs.js.map +1 -1
- package/lib/node/notifier.js.map +1 -1
- package/lib/node/utils/state.js.map +1 -1
- package/lib/sync/backfill/backfill.js.map +1 -1
- package/lib/sync/backfill/verify.js.map +1 -1
- package/lib/sync/interface.d.ts +15 -4
- package/lib/sync/interface.js +1 -0
- package/lib/sync/interface.js.map +1 -1
- package/lib/sync/range/batch.js.map +1 -1
- package/lib/sync/range/chain.js.map +1 -1
- package/lib/sync/range/range.js.map +1 -1
- package/lib/sync/range/utils/batches.js.map +1 -1
- package/lib/sync/range/utils/chainTarget.js.map +1 -1
- package/lib/sync/range/utils/hashBlocks.js.map +1 -1
- package/lib/sync/range/utils/peerBalancer.js.map +1 -1
- package/lib/sync/range/utils/updateChains.js.map +1 -1
- package/lib/sync/sync.js.map +1 -1
- package/lib/sync/unknownBlock.d.ts +9 -0
- package/lib/sync/unknownBlock.js +127 -14
- package/lib/sync/unknownBlock.js.map +1 -1
- package/lib/sync/utils/pendingBlocksTree.js +5 -2
- package/lib/sync/utils/pendingBlocksTree.js.map +1 -1
- package/lib/sync/utils/remoteSyncType.js.map +1 -1
- package/lib/util/array.js.map +1 -1
- package/lib/util/asyncIterableToEvents.js.map +1 -1
- package/lib/util/binarySearch.js.map +1 -1
- package/lib/util/bitArray.js.map +1 -1
- package/lib/util/blobs.js.map +1 -1
- package/lib/util/bufferPool.js.map +1 -1
- package/lib/util/bytes.js.map +1 -1
- package/lib/util/chunkify.js.map +1 -1
- package/lib/util/clock.js.map +1 -1
- package/lib/util/dependentRoot.js.map +1 -1
- package/lib/util/error.js.map +1 -1
- package/lib/util/file.js.map +1 -1
- package/lib/util/forkName.js.map +1 -1
- package/lib/util/itTrigger.js.map +1 -1
- package/lib/util/kzg.js.map +1 -1
- package/lib/util/map.js.map +1 -1
- package/lib/util/multifork.js.map +1 -1
- package/lib/util/profile.js.map +1 -1
- package/lib/util/promises.js.map +1 -1
- package/lib/util/queue/itemQueue.js.map +1 -1
- package/lib/util/set.js.map +1 -1
- package/lib/util/shuffle.js.map +1 -1
- package/lib/util/sortBy.js.map +1 -1
- package/lib/util/sszBytes.js.map +1 -1
- package/lib/util/timeSeries.js.map +1 -1
- package/lib/util/workerEvents.js.map +1 -1
- package/lib/util/wrapError.js.map +1 -1
- package/package.json +16 -24
package/lib/chain/regen/regen.js
CHANGED
|
@@ -7,6 +7,10 @@ import { ChainEvent } from "../emitter.js";
|
|
|
7
7
|
import { RegenError, RegenErrorCode } from "./errors.js";
|
|
8
8
|
/**
|
|
9
9
|
* Regenerates states that have already been processed by the fork choice
|
|
10
|
+
* Since Feb 2024, we support reloading checkpoint state from disk via allowDiskReload flag. Due to its performance impact
|
|
11
|
+
* this flag is only set to true in this case:
|
|
12
|
+
* - getPreState: this is for block processing, it's important to reload state in unfinality time
|
|
13
|
+
* - updateHeadState: rarely happen, but it's important to make sure we always can regen head state
|
|
10
14
|
*/
|
|
11
15
|
export class StateRegenerator {
|
|
12
16
|
constructor(modules) {
|
|
@@ -16,8 +20,9 @@ export class StateRegenerator {
|
|
|
16
20
|
* Get the state to run with `block`. May be:
|
|
17
21
|
* - If parent is in same epoch -> Exact state at `block.parentRoot`
|
|
18
22
|
* - If parent is in prev epoch -> State after `block.parentRoot` dialed forward through epoch transition
|
|
23
|
+
* - reload state if needed in this flow
|
|
19
24
|
*/
|
|
20
|
-
async getPreState(block, opts,
|
|
25
|
+
async getPreState(block, opts, regenCaller) {
|
|
21
26
|
const parentBlock = this.modules.forkChoice.getBlock(block.parentRoot);
|
|
22
27
|
if (!parentBlock) {
|
|
23
28
|
throw new RegenError({
|
|
@@ -27,28 +32,30 @@ export class StateRegenerator {
|
|
|
27
32
|
}
|
|
28
33
|
const parentEpoch = computeEpochAtSlot(parentBlock.slot);
|
|
29
34
|
const blockEpoch = computeEpochAtSlot(block.slot);
|
|
35
|
+
const allowDiskReload = true;
|
|
30
36
|
// This may save us at least one epoch transition.
|
|
31
37
|
// If the requested state crosses an epoch boundary
|
|
32
38
|
// then we may use the checkpoint state before the block
|
|
33
39
|
// We may have the checkpoint state with parent root inside the checkpoint state cache
|
|
34
40
|
// through gossip validation.
|
|
35
41
|
if (parentEpoch < blockEpoch) {
|
|
36
|
-
return this.getCheckpointState({ root: block.parentRoot, epoch: blockEpoch }, opts,
|
|
42
|
+
return this.getCheckpointState({ root: block.parentRoot, epoch: blockEpoch }, opts, regenCaller, allowDiskReload);
|
|
37
43
|
}
|
|
38
44
|
// Otherwise, get the state normally.
|
|
39
|
-
return this.getState(parentBlock.stateRoot,
|
|
45
|
+
return this.getState(parentBlock.stateRoot, regenCaller, allowDiskReload);
|
|
40
46
|
}
|
|
41
47
|
/**
|
|
42
48
|
* Get state after block `cp.root` dialed forward to first slot of `cp.epoch`
|
|
43
49
|
*/
|
|
44
|
-
async getCheckpointState(cp, opts,
|
|
50
|
+
async getCheckpointState(cp, opts, regenCaller, allowDiskReload = false) {
|
|
45
51
|
const checkpointStartSlot = computeStartSlotAtEpoch(cp.epoch);
|
|
46
|
-
return this.getBlockSlotState(toHexString(cp.root), checkpointStartSlot, opts,
|
|
52
|
+
return this.getBlockSlotState(toHexString(cp.root), checkpointStartSlot, opts, regenCaller, allowDiskReload);
|
|
47
53
|
}
|
|
48
54
|
/**
|
|
49
55
|
* Get state after block `blockRoot` dialed forward to `slot`
|
|
56
|
+
* - allowDiskReload should be used with care, as it will cause the state to be reloaded from disk
|
|
50
57
|
*/
|
|
51
|
-
async getBlockSlotState(blockRoot, slot, opts,
|
|
58
|
+
async getBlockSlotState(blockRoot, slot, opts, regenCaller, allowDiskReload = false) {
|
|
52
59
|
const block = this.modules.forkChoice.getBlockHex(blockRoot);
|
|
53
60
|
if (!block) {
|
|
54
61
|
throw new RegenError({
|
|
@@ -63,23 +70,28 @@ export class StateRegenerator {
|
|
|
63
70
|
blockSlot: block.slot,
|
|
64
71
|
});
|
|
65
72
|
}
|
|
66
|
-
const
|
|
73
|
+
const { checkpointStateCache } = this.modules;
|
|
74
|
+
const epoch = computeEpochAtSlot(slot);
|
|
75
|
+
const latestCheckpointStateCtx = allowDiskReload
|
|
76
|
+
? await checkpointStateCache.getOrReloadLatest(blockRoot, epoch)
|
|
77
|
+
: checkpointStateCache.getLatest(blockRoot, epoch);
|
|
67
78
|
// If a checkpoint state exists with the given checkpoint root, it either is in requested epoch
|
|
68
79
|
// or needs to have empty slots processed until the requested epoch
|
|
69
80
|
if (latestCheckpointStateCtx) {
|
|
70
|
-
return processSlotsByCheckpoint(this.modules, latestCheckpointStateCtx, slot, opts);
|
|
81
|
+
return processSlotsByCheckpoint(this.modules, latestCheckpointStateCtx, slot, regenCaller, opts);
|
|
71
82
|
}
|
|
72
83
|
// Otherwise, use the fork choice to get the stateRoot from block at the checkpoint root
|
|
73
84
|
// regenerate that state,
|
|
74
85
|
// then process empty slots until the requested epoch
|
|
75
|
-
const blockStateCtx = await this.getState(block.stateRoot,
|
|
76
|
-
return processSlotsByCheckpoint(this.modules, blockStateCtx, slot, opts);
|
|
86
|
+
const blockStateCtx = await this.getState(block.stateRoot, regenCaller, allowDiskReload);
|
|
87
|
+
return processSlotsByCheckpoint(this.modules, blockStateCtx, slot, regenCaller, opts);
|
|
77
88
|
}
|
|
78
89
|
/**
|
|
79
90
|
* Get state by exact root. If not in cache directly, requires finding the block that references the state from the
|
|
80
91
|
* forkchoice and replaying blocks to get to it.
|
|
92
|
+
* - allowDiskReload should be used with care, as it will cause the state to be reloaded from disk
|
|
81
93
|
*/
|
|
82
|
-
async getState(stateRoot, _rCaller) {
|
|
94
|
+
async getState(stateRoot, _rCaller, allowDiskReload = false) {
|
|
83
95
|
// Trivial case, state at stateRoot is already cached
|
|
84
96
|
const cachedStateCtx = this.modules.stateCache.get(stateRoot);
|
|
85
97
|
if (cachedStateCtx) {
|
|
@@ -93,12 +105,17 @@ export class StateRegenerator {
|
|
|
93
105
|
// gets reversed when replayed
|
|
94
106
|
const blocksToReplay = [block];
|
|
95
107
|
let state = null;
|
|
96
|
-
|
|
108
|
+
const { checkpointStateCache } = this.modules;
|
|
109
|
+
// iterateAncestorBlocks only returns ancestor blocks, not the block itself
|
|
110
|
+
for (const b of this.modules.forkChoice.iterateAncestorBlocks(block.blockRoot)) {
|
|
97
111
|
state = this.modules.stateCache.get(b.stateRoot);
|
|
98
112
|
if (state) {
|
|
99
113
|
break;
|
|
100
114
|
}
|
|
101
|
-
|
|
115
|
+
const epoch = computeEpochAtSlot(blocksToReplay[blocksToReplay.length - 1].slot - 1);
|
|
116
|
+
state = allowDiskReload
|
|
117
|
+
? await checkpointStateCache.getOrReloadLatest(b.blockRoot, epoch)
|
|
118
|
+
: checkpointStateCache.getLatest(b.blockRoot, epoch);
|
|
102
119
|
if (state) {
|
|
103
120
|
break;
|
|
104
121
|
}
|
|
@@ -116,6 +133,8 @@ export class StateRegenerator {
|
|
|
116
133
|
stateRoot,
|
|
117
134
|
});
|
|
118
135
|
}
|
|
136
|
+
const replaySlots = blocksToReplay.map((b) => b.slot).join(",");
|
|
137
|
+
this.modules.logger.debug("Replaying blocks to get state", { stateRoot, replaySlots });
|
|
119
138
|
for (const b of blocksToReplay.reverse()) {
|
|
120
139
|
const block = await this.modules.db.block.get(fromHexString(b.blockRoot));
|
|
121
140
|
if (!block) {
|
|
@@ -134,9 +153,20 @@ export class StateRegenerator {
|
|
|
134
153
|
verifyStateRoot: false,
|
|
135
154
|
verifyProposer: false,
|
|
136
155
|
verifySignatures: false,
|
|
137
|
-
},
|
|
138
|
-
|
|
139
|
-
|
|
156
|
+
}, this.modules.metrics);
|
|
157
|
+
const stateRoot = toHexString(state.hashTreeRoot());
|
|
158
|
+
if (b.stateRoot !== stateRoot) {
|
|
159
|
+
throw new RegenError({
|
|
160
|
+
slot: b.slot,
|
|
161
|
+
code: RegenErrorCode.INVALID_STATE_ROOT,
|
|
162
|
+
actual: stateRoot,
|
|
163
|
+
expected: b.stateRoot,
|
|
164
|
+
});
|
|
165
|
+
}
|
|
166
|
+
if (allowDiskReload) {
|
|
167
|
+
// also with allowDiskReload flag, we "reload" it to the state cache too
|
|
168
|
+
this.modules.stateCache.add(state);
|
|
169
|
+
}
|
|
140
170
|
// this avoids keeping our node busy processing blocks
|
|
141
171
|
await sleep(0);
|
|
142
172
|
}
|
|
@@ -147,11 +177,12 @@ export class StateRegenerator {
|
|
|
147
177
|
});
|
|
148
178
|
}
|
|
149
179
|
}
|
|
180
|
+
this.modules.logger.debug("Replayed blocks to get state", { stateRoot, replaySlots });
|
|
150
181
|
return state;
|
|
151
182
|
}
|
|
152
183
|
findFirstStateBlock(stateRoot) {
|
|
153
184
|
for (const block of this.modules.forkChoice.forwarditerateAncestorBlocks()) {
|
|
154
|
-
if (block
|
|
185
|
+
if (block.stateRoot === stateRoot) {
|
|
155
186
|
return block;
|
|
156
187
|
}
|
|
157
188
|
}
|
|
@@ -166,8 +197,8 @@ export class StateRegenerator {
|
|
|
166
197
|
* process slots forward towards `slot`,
|
|
167
198
|
* emitting "checkpoint" events after every epoch processed.
|
|
168
199
|
*/
|
|
169
|
-
async function processSlotsByCheckpoint(modules, preState, slot, opts) {
|
|
170
|
-
let postState = await processSlotsToNearestCheckpoint(modules, preState, slot, opts);
|
|
200
|
+
async function processSlotsByCheckpoint(modules, preState, slot, regenCaller, opts) {
|
|
201
|
+
let postState = await processSlotsToNearestCheckpoint(modules, preState, slot, regenCaller, opts);
|
|
171
202
|
if (postState.slot < slot) {
|
|
172
203
|
postState = processSlots(postState, slot, opts, modules.metrics);
|
|
173
204
|
}
|
|
@@ -180,7 +211,7 @@ async function processSlotsByCheckpoint(modules, preState, slot, opts) {
|
|
|
180
211
|
*
|
|
181
212
|
* Stops processing after no more full epochs can be processed.
|
|
182
213
|
*/
|
|
183
|
-
async function processSlotsToNearestCheckpoint(modules, preState, slot, opts) {
|
|
214
|
+
async function processSlotsToNearestCheckpoint(modules, preState, slot, regenCaller, opts) {
|
|
184
215
|
const preSlot = preState.slot;
|
|
185
216
|
const postSlot = slot;
|
|
186
217
|
const preEpoch = computeEpochAtSlot(preSlot);
|
|
@@ -189,11 +220,15 @@ async function processSlotsToNearestCheckpoint(modules, preState, slot, opts) {
|
|
|
189
220
|
for (let nextEpochSlot = computeStartSlotAtEpoch(preEpoch + 1); nextEpochSlot <= postSlot; nextEpochSlot += SLOTS_PER_EPOCH) {
|
|
190
221
|
// processSlots calls .clone() before mutating
|
|
191
222
|
postState = processSlots(postState, nextEpochSlot, opts, metrics);
|
|
192
|
-
|
|
223
|
+
modules.metrics?.epochTransitionByCaller.inc({ caller: regenCaller });
|
|
224
|
+
// this is usually added when we prepare for next slot or validate gossip block
|
|
225
|
+
// then when we process the 1st block of epoch, we don't have to do state transition again
|
|
226
|
+
// This adds Previous Root Checkpoint State to the checkpoint state cache
|
|
227
|
+
// This may becomes the "official" checkpoint state if the 1st block of epoch is skipped
|
|
193
228
|
const checkpointState = postState;
|
|
194
229
|
const cp = getCheckpointFromState(checkpointState);
|
|
195
230
|
checkpointStateCache.add(cp, checkpointState);
|
|
196
|
-
emitter.emit(ChainEvent.checkpoint, cp, checkpointState);
|
|
231
|
+
emitter.emit(ChainEvent.checkpoint, cp, checkpointState.clone());
|
|
197
232
|
// this avoids keeping our node busy processing blocks
|
|
198
233
|
await sleep(0);
|
|
199
234
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"regen.js","sourceRoot":"","sources":["../../../src/chain/regen/regen.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,aAAa,EAAE,WAAW,EAAC,MAAM,gBAAgB,CAAC;AAE1D,OAAO,EAEL,kBAAkB,EAClB,uBAAuB,EACvB,sBAAsB,EACtB,mBAAmB,EACnB,YAAY,EACZ,eAAe,GAChB,MAAM,4BAA4B,CAAC;AAEpC,OAAO,
|
|
1
|
+
{"version":3,"file":"regen.js","sourceRoot":"","sources":["../../../src/chain/regen/regen.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reprocess.js","sourceRoot":"","sources":["../../src/chain/reprocess.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,MAAM,EAAC,MAAM,iBAAiB,CAAC;AAGvC;;;GAGG;AACH,MAAM,CAAC,MAAM,mCAAmC,GAAG,CAAC,CAAC;AAErD;;GAEG;AACH,MAAM,CAAN,IAAY,eASX;AATD,WAAY,eAAe;IACzB;;OAEG;IACH,kDAA+B,CAAA;IAC/B;;OAEG;IACH,sCAAmB,CAAA;AACrB,CAAC,EATW,eAAe,KAAf,eAAe,QAS1B;AAWD,uFAAuF;AACvF,MAAM,2BAA2B,GAAG,KAAM,CAAC;AAI3C;;;;;;;;;;GAUG;AACH,MAAM,OAAO,mBAAmB;IAI9B,YAA6B,OAAuB;QAAvB,YAAO,GAAP,OAAO,CAAgB;QAF5C,0BAAqB,GAAG,CAAC,CAAC;QAGhC,IAAI,CAAC,4BAA4B,GAAG,IAAI,MAAM,CAAC,GAAG,EAAE,CAAC,IAAI,GAAG,EAAuC,CAAC,CAAC;IACvG,CAAC;IAED;;;;OAIG;IACH,yBAAyB,CAAC,IAAU,EAAE,IAAa;QACjD,IAAI,CAAC,OAAO,EAAE,wBAAwB,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC;QAEnD,IAAI,IAAI,CAAC,qBAAqB,IAAI,2BAA2B,EAAE;
|
|
1
|
+
{"version":3,"file":"reprocess.js","sourceRoot":"","sources":["../../src/chain/reprocess.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { CachedBeaconStateAllForks } from "@lodestar/state-transition";
|
|
2
|
+
import { allForks } from "@lodestar/types";
|
|
3
|
+
import { routes } from "@lodestar/api";
|
|
4
|
+
export type BlockRewards = routes.beacon.BlockRewards;
|
|
5
|
+
/**
|
|
6
|
+
* Calculate total proposer block rewards given block and the beacon state of the same slot before the block is applied (preState)
|
|
7
|
+
* postState can be passed in to read reward cache if available
|
|
8
|
+
* Standard (Non MEV) rewards for proposing a block consists of:
|
|
9
|
+
* 1) Including attestations from (beacon) committee
|
|
10
|
+
* 2) Including attestations from sync committee
|
|
11
|
+
* 3) Reporting slashable behaviours from proposer and attester
|
|
12
|
+
*/
|
|
13
|
+
export declare function computeBlockRewards(block: allForks.BeaconBlock, preState: CachedBeaconStateAllForks, postState?: CachedBeaconStateAllForks): Promise<BlockRewards>;
|
|
14
|
+
//# sourceMappingURL=blockRewards.d.ts.map
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
import { getAttesterSlashableIndices, processAttestationsAltair, } from "@lodestar/state-transition";
|
|
2
|
+
import { ForkName, WHISTLEBLOWER_REWARD_QUOTIENT } from "@lodestar/params";
|
|
3
|
+
/**
|
|
4
|
+
* Calculate total proposer block rewards given block and the beacon state of the same slot before the block is applied (preState)
|
|
5
|
+
* postState can be passed in to read reward cache if available
|
|
6
|
+
* Standard (Non MEV) rewards for proposing a block consists of:
|
|
7
|
+
* 1) Including attestations from (beacon) committee
|
|
8
|
+
* 2) Including attestations from sync committee
|
|
9
|
+
* 3) Reporting slashable behaviours from proposer and attester
|
|
10
|
+
*/
|
|
11
|
+
export async function computeBlockRewards(block, preState, postState) {
|
|
12
|
+
const fork = preState.config.getForkName(block.slot);
|
|
13
|
+
const { attestations: cachedAttestationsReward = 0, syncAggregate: cachedSyncAggregateReward = 0 } = postState?.proposerRewards ?? {};
|
|
14
|
+
let blockAttestationReward = cachedAttestationsReward;
|
|
15
|
+
let syncAggregateReward = cachedSyncAggregateReward;
|
|
16
|
+
if (blockAttestationReward === 0) {
|
|
17
|
+
blockAttestationReward =
|
|
18
|
+
fork === ForkName.phase0
|
|
19
|
+
? computeBlockAttestationRewardPhase0(block, preState)
|
|
20
|
+
: computeBlockAttestationRewardAltair(block, preState);
|
|
21
|
+
}
|
|
22
|
+
if (syncAggregateReward === 0) {
|
|
23
|
+
syncAggregateReward = computeSyncAggregateReward(block, preState);
|
|
24
|
+
}
|
|
25
|
+
const blockProposerSlashingReward = computeBlockProposerSlashingReward(block, preState);
|
|
26
|
+
const blockAttesterSlashingReward = computeBlockAttesterSlashingReward(block, preState);
|
|
27
|
+
const total = blockAttestationReward + syncAggregateReward + blockProposerSlashingReward + blockAttesterSlashingReward;
|
|
28
|
+
return {
|
|
29
|
+
proposerIndex: block.proposerIndex,
|
|
30
|
+
total,
|
|
31
|
+
attestations: blockAttestationReward,
|
|
32
|
+
syncAggregate: syncAggregateReward,
|
|
33
|
+
proposerSlashings: blockProposerSlashingReward,
|
|
34
|
+
attesterSlashings: blockAttesterSlashingReward,
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* TODO: Calculate rewards received by block proposer for including attestations.
|
|
39
|
+
*/
|
|
40
|
+
function computeBlockAttestationRewardPhase0(_block, _preState) {
|
|
41
|
+
throw new Error("Unsupported fork! Block attestation reward calculation is not available in phase0");
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Calculate rewards received by block proposer for including attestations since Altair.
|
|
45
|
+
* Reuses `processAttestationsAltair()`. Has dependency on RewardCache
|
|
46
|
+
*/
|
|
47
|
+
function computeBlockAttestationRewardAltair(block, preState) {
|
|
48
|
+
const fork = preState.config.getForkSeq(block.slot);
|
|
49
|
+
const { attestations } = block.body;
|
|
50
|
+
processAttestationsAltair(fork, preState, attestations, false);
|
|
51
|
+
return preState.proposerRewards.attestations;
|
|
52
|
+
}
|
|
53
|
+
function computeSyncAggregateReward(block, preState) {
|
|
54
|
+
if (block.body.syncAggregate !== undefined) {
|
|
55
|
+
const { syncCommitteeBits } = block.body.syncAggregate;
|
|
56
|
+
const { syncProposerReward } = preState.epochCtx;
|
|
57
|
+
return syncCommitteeBits.getTrueBitIndexes().length * Math.floor(syncProposerReward); // syncProposerReward should already be integer
|
|
58
|
+
}
|
|
59
|
+
else {
|
|
60
|
+
return 0; // phase0 block does not have syncAggregate
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Calculate rewards received by block proposer for including proposer slashings.
|
|
65
|
+
* All proposer slashing rewards go to block proposer and none to whistleblower as of Deneb
|
|
66
|
+
*/
|
|
67
|
+
function computeBlockProposerSlashingReward(block, state) {
|
|
68
|
+
let proposerSlashingReward = 0;
|
|
69
|
+
for (const proposerSlashing of block.body.proposerSlashings) {
|
|
70
|
+
const offendingProposerIndex = proposerSlashing.signedHeader1.message.proposerIndex;
|
|
71
|
+
const offendingProposerBalance = state.validators.getReadonly(offendingProposerIndex).effectiveBalance;
|
|
72
|
+
proposerSlashingReward += Math.floor(offendingProposerBalance / WHISTLEBLOWER_REWARD_QUOTIENT);
|
|
73
|
+
}
|
|
74
|
+
return proposerSlashingReward;
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* Calculate rewards received by block proposer for including attester slashings.
|
|
78
|
+
* All attester slashing rewards go to block proposer and none to whistleblower as of Deneb
|
|
79
|
+
*/
|
|
80
|
+
function computeBlockAttesterSlashingReward(block, preState) {
|
|
81
|
+
let attesterSlashingReward = 0;
|
|
82
|
+
for (const attesterSlashing of block.body.attesterSlashings) {
|
|
83
|
+
for (const offendingAttesterIndex of getAttesterSlashableIndices(attesterSlashing)) {
|
|
84
|
+
const offendingAttesterBalance = preState.validators.getReadonly(offendingAttesterIndex).effectiveBalance;
|
|
85
|
+
attesterSlashingReward += Math.floor(offendingAttesterBalance / WHISTLEBLOWER_REWARD_QUOTIENT);
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
return attesterSlashingReward;
|
|
89
|
+
}
|
|
90
|
+
//# sourceMappingURL=blockRewards.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"blockRewards.js","sourceRoot":"","sources":["../../../src/chain/rewards/blockRewards.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { CachedBeaconStateAllForks } from "@lodestar/state-transition";
|
|
2
|
+
import { ValidatorIndex, allForks } from "@lodestar/types";
|
|
3
|
+
import { routes } from "@lodestar/api";
|
|
4
|
+
export type SyncCommitteeRewards = routes.beacon.SyncCommitteeRewards;
|
|
5
|
+
export declare function computeSyncCommitteeRewards(block: allForks.BeaconBlock, preState: CachedBeaconStateAllForks, validatorIds?: (ValidatorIndex | string)[]): Promise<SyncCommitteeRewards>;
|
|
6
|
+
//# sourceMappingURL=syncCommitteeRewards.d.ts.map
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { ForkName, SYNC_COMMITTEE_SIZE } from "@lodestar/params";
|
|
2
|
+
export async function computeSyncCommitteeRewards(block, preState, validatorIds) {
|
|
3
|
+
const fork = preState.config.getForkName(block.slot);
|
|
4
|
+
if (fork === ForkName.phase0) {
|
|
5
|
+
throw Error("Cannot get sync rewards as phase0 block does not have sync committee");
|
|
6
|
+
}
|
|
7
|
+
const altairBlock = block;
|
|
8
|
+
const preStateAltair = preState;
|
|
9
|
+
const { index2pubkey } = preStateAltair.epochCtx;
|
|
10
|
+
// Bound committeeIndices in case it goes beyond SYNC_COMMITTEE_SIZE just to be safe
|
|
11
|
+
const committeeIndices = preStateAltair.epochCtx.currentSyncCommitteeIndexed.validatorIndices.slice(0, SYNC_COMMITTEE_SIZE);
|
|
12
|
+
const { syncParticipantReward } = preStateAltair.epochCtx;
|
|
13
|
+
const { syncCommitteeBits } = altairBlock.body.syncAggregate;
|
|
14
|
+
// Use balance of each committee as starting point such that we cap the penalty to avoid balance dropping below 0
|
|
15
|
+
const balances = new Map(committeeIndices.map((i) => [i, { val: preStateAltair.balances.get(i) }]));
|
|
16
|
+
for (const i of committeeIndices) {
|
|
17
|
+
const balanceRecord = balances.get(i);
|
|
18
|
+
if (syncCommitteeBits.get(i)) {
|
|
19
|
+
// Positive rewards for participants
|
|
20
|
+
balanceRecord.val += syncParticipantReward;
|
|
21
|
+
}
|
|
22
|
+
else {
|
|
23
|
+
// Negative rewards for non participants
|
|
24
|
+
balanceRecord.val = Math.max(0, balanceRecord.val - syncParticipantReward);
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
const rewards = Array.from(balances, ([validatorIndex, v]) => ({ validatorIndex, reward: v.val }));
|
|
28
|
+
if (validatorIds !== undefined) {
|
|
29
|
+
const filtersSet = new Set(validatorIds);
|
|
30
|
+
return rewards.filter((reward) => filtersSet.has(reward.validatorIndex) || filtersSet.has(index2pubkey[reward.validatorIndex].toHex()));
|
|
31
|
+
}
|
|
32
|
+
else {
|
|
33
|
+
return rewards;
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
//# sourceMappingURL=syncCommitteeRewards.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"syncCommitteeRewards.js","sourceRoot":"","sources":["../../../src/chain/rewards/syncCommitteeRewards.ts"],"names":[],"mappings":"AAEA,OAAO,EAAC,QAAQ,EAAE,mBAAmB,EAAC,MAAM,kBAAkB,CAAC;AAM/D,MAAM,CAAC,KAAK,UAAU,2BAA2B,CAC/C,KAA2B,EAC3B,QAAmC,EACnC,YAA0C;IAE1C,MAAM,IAAI,GAAG,QAAQ,CAAC,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACrD,IAAI,IAAI,KAAK,QAAQ,CAAC,MAAM,EAAE,CAAC;QAC7B,MAAM,KAAK,CAAC,sEAAsE,CAAC,CAAC;IACtF,CAAC;IAED,MAAM,WAAW,GAAG,KAA2B,CAAC;IAChD,MAAM,cAAc,GAAG,QAAmC,CAAC;IAC3D,MAAM,EAAC,YAAY,EAAC,GAAG,cAAc,CAAC,QAAQ,CAAC;IAE/C,oFAAoF;IACpF,MAAM,gBAAgB,GAAG,cAAc,CAAC,QAAQ,CAAC,2BAA2B,CAAC,gBAAgB,CAAC,KAAK,CACjG,CAAC,EACD,mBAAmB,CACpB,CAAC;IACF,MAAM,EAAC,qBAAqB,EAAC,GAAG,cAAc,CAAC,QAAQ,CAAC;IACxD,MAAM,EAAC,iBAAiB,EAAC,GAAG,WAAW,CAAC,IAAI,CAAC,aAAa,CAAC;IAE3D,iHAAiH;IACjH,MAAM,QAAQ,GAAuC,IAAI,GAAG,CAC1D,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,EAAC,GAAG,EAAE,cAAc,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC,CACxE,CAAC;IAEF,KAAK,MAAM,CAAC,IAAI,gBAAgB,EAAE,CAAC;QACjC,MAAM,aAAa,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAkB,CAAC;QACvD,IAAI,iBAAiB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;YAC7B,oCAAoC;YACpC,aAAa,CAAC,GAAG,IAAI,qBAAqB,CAAC;QAC7C,CAAC;aAAM,CAAC;YACN,wCAAwC;YACxC,aAAa,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,aAAa,CAAC,GAAG,GAAG,qBAAqB,CAAC,CAAC;QAC7E,CAAC;IACH,CAAC;IAED,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,cAAc,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAC,cAAc,EAAE,MAAM,EAAE,CAAC,CAAC,GAAG,EAAC,CAAC,CAAC,CAAC;IAEjG,IAAI,YAAY,KAAK,SAAS,EAAE,CAAC;QAC/B,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC,YAAY,CAAC,CAAC;QACzC,OAAO,OAAO,CAAC,MAAM,CACnB,CAAC,MAAM,EAAE,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,MAAM,CAAC,cAAc,CAAC,IAAI,UAAU,CAAC,GAAG,CAAC,YAAY,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC,KAAK,EAAE,CAAC,CACjH,CAAC;IACJ,CAAC;SAAM,CAAC;QACN,OAAO,OAAO,CAAC;IACjB,CAAC;AACH,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"seenAggregateAndProof.js","sourceRoot":"","sources":["../../../src/chain/seenCache/seenAggregateAndProof.ts"],"names":[],"mappings":"AAEA,OAAO,EAAC,MAAM,EAAC,MAAM,iBAAiB,CAAC;AAEvC,OAAO,EAAC,iBAAiB,EAAC,MAAM,wBAAwB,CAAC;AAEzD;;;GAGG;AACH,MAAM,mBAAmB,GAAG,CAAC,CAAC;AAO9B;;;;;;;;;GASG;AACH,MAAM,OAAO,0BAA0B;IAUrC,YAA6B,OAAuB;QAAvB,YAAO,GAAP,OAAO,CAAgB;QATpD;;;aAGK;QACY,0BAAqB,GAAG,IAAI,MAAM,CACjD,GAAG,EAAE,CAAC,IAAI,MAAM,CAA6B,GAAG,EAAE,CAAC,EAAE,CAAC,CACvD,CAAC;QACM,2BAAsB,GAAU,CAAC,CAAC;IAEa,CAAC;IAExD,OAAO,CAAC,WAAkB,EAAE,WAAoB,EAAE,eAAyB;QACzE,MAAM,sBAAsB,GAAG,IAAI,CAAC,qBAAqB,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC;QAC9G,IAAI,CAAC,OAAO,EAAE,SAAS,CAAC,sBAAsB,CAAC,YAAY,CAAC,GAAG,EAAE,CAAC;QAElE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,sBAAsB,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;
|
|
1
|
+
{"version":3,"file":"seenAggregateAndProof.js","sourceRoot":"","sources":["../../../src/chain/seenCache/seenAggregateAndProof.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"seenAttestationData.js","sourceRoot":"","sources":["../../../src/chain/seenCache/seenAttestationData.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,MAAM,EAAC,MAAM,iBAAiB,CAAC;AAGvC,OAAO,EAAC,aAAa,EAAC,MAAM,qBAAqB,CAAC;AAelD,MAAM,CAAN,IAAY,YAOX;AAPD,WAAY,YAAY;IACtB,mDAAmD;IACnD,+CAA+B,CAAA;IAC/B,8BAA8B;IAC9B,mCAAmB,CAAA;IACnB,oCAAoC;IACpC,+CAA+B,CAAA;AACjC,CAAC,EAPW,YAAY,KAAZ,YAAY,QAOvB;AAED;;;GAGG;AACH,MAAM,+BAA+B,GAAG,GAAG,CAAC;AAE5C;;GAEG;AACH,MAAM,2BAA2B,GAAG,CAAC,CAAC;AAEtC;;;GAGG;AACH,MAAM,OAAO,oBAAoB;IAM/B,YACmB,OAAuB,EACvB,oBAAoB,2BAA2B;IAChE,uBAAuB;IACN,sBAAsB,+BAA+B;QAHrD,YAAO,GAAP,OAAO,CAAgB;QACvB,sBAAiB,GAAjB,iBAAiB,CAA8B;QAE/C,wBAAmB,GAAnB,mBAAmB,CAAkC;QAThE,oCAA+B,GAAG,IAAI,MAAM,CAClD,GAAG,EAAE,CAAC,IAAI,GAAG,EAA4C,CAC1D,CAAC;QACM,0BAAqB,GAAG,CAAC,CAAC;QAQhC,OAAO,EAAE,SAAS,CAAC,eAAe,CAAC,SAAS,CAAC,UAAU,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,uBAAuB,CAAC,OAAO,CAAC,CAAC,CAAC;IACvG,CAAC;IAED,6DAA6D;IAC7D,GAAG,CAAC,IAAU,EAAE,aAA4B,EAAE,UAAqC;QACjF,IAAI,IAAI,GAAG,IAAI,CAAC,qBAAqB,EAAE;
|
|
1
|
+
{"version":3,"file":"seenAttestationData.js","sourceRoot":"","sources":["../../../src/chain/seenCache/seenAttestationData.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"seenAttesters.js","sourceRoot":"","sources":["../../../src/chain/seenCache/seenAttesters.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,MAAM,EAAC,MAAM,iBAAiB,CAAC;AAEvC,8EAA8E;AAC9E,4EAA4E;AAC5E,0BAA0B;AAC1B,EAAE;AACF,MAAM;AACN,2DAA2D;AAC3D,8CAA8C;AAC9C,MAAM;AACN,EAAE;AACF,gFAAgF;AAChF,gDAAgD;AAChD,MAAM,UAAU,GAAG,CAAC,CAAC;AAErB;;GAEG;AACH,MAAM,OAAO,aAAa;IAA1B;QACqB,4BAAuB,GAAG,IAAI,MAAM,CAA6B,GAAG,EAAE,CAAC,IAAI,GAAG,EAAkB,CAAC,CAAC;QAC3G,2BAAsB,GAAU,CAAC,CAAC;IAsB9C,CAAC;IApBC,OAAO,CAAC,WAAkB,EAAE,cAA8B;QACxD,OAAO,IAAI,CAAC,uBAAuB,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE,GAAG,CAAC,cAAc,CAAC,KAAK,IAAI,CAAC;IACrF,CAAC;IAED,GAAG,CAAC,WAAkB,EAAE,cAA8B;QACpD,IAAI,WAAW,GAAG,IAAI,CAAC,sBAAsB,EAAE;
|
|
1
|
+
{"version":3,"file":"seenAttesters.js","sourceRoot":"","sources":["../../../src/chain/seenCache/seenAttesters.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,MAAM,EAAC,MAAM,iBAAiB,CAAC;AAEvC,8EAA8E;AAC9E,4EAA4E;AAC5E,0BAA0B;AAC1B,EAAE;AACF,MAAM;AACN,2DAA2D;AAC3D,8CAA8C;AAC9C,MAAM;AACN,EAAE;AACF,gFAAgF;AAChF,gDAAgD;AAChD,MAAM,UAAU,GAAG,CAAC,CAAC;AAErB;;GAEG;AACH,MAAM,OAAO,aAAa;IAA1B;QACqB,4BAAuB,GAAG,IAAI,MAAM,CAA6B,GAAG,EAAE,CAAC,IAAI,GAAG,EAAkB,CAAC,CAAC;QAC3G,2BAAsB,GAAU,CAAC,CAAC;IAsB9C,CAAC;IApBC,OAAO,CAAC,WAAkB,EAAE,cAA8B;QACxD,OAAO,IAAI,CAAC,uBAAuB,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE,GAAG,CAAC,cAAc,CAAC,KAAK,IAAI,CAAC;IACrF,CAAC;IAED,GAAG,CAAC,WAAkB,EAAE,cAA8B;QACpD,IAAI,WAAW,GAAG,IAAI,CAAC,sBAAsB,EAAE,CAAC;YAC9C,MAAM,KAAK,CAAC,eAAe,WAAW,MAAM,IAAI,CAAC,sBAAsB,EAAE,CAAC,CAAC;QAC7E,CAAC;QAED,IAAI,CAAC,uBAAuB,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;IAC7E,CAAC;IAED,KAAK,CAAC,YAAmB;QACvB,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC,GAAG,CAAC,YAAY,GAAG,UAAU,EAAE,CAAC,CAAC,CAAC;QACrE,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,uBAAuB,CAAC,IAAI,EAAE,EAAE,CAAC;YACxD,IAAI,KAAK,GAAG,IAAI,CAAC,sBAAsB,EAAE,CAAC;gBACxC,IAAI,CAAC,uBAAuB,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YAC7C,CAAC;QACH,CAAC;IACH,CAAC;CACF;AAED;;GAEG;AACH,MAAM,OAAO,eAAgB,SAAQ,aAAa;CAAG"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"seenBlockAttesters.js","sourceRoot":"","sources":["../../../src/chain/seenCache/seenBlockAttesters.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,aAAa,EAAC,MAAM,oBAAoB,CAAC;AACjD,8EAA8E;AAC9E,qEAAqE;AAErE,MAAM,OAAO,kBAAmB,SAAQ,aAAa;IACnD,UAAU,CAAC,KAAY,EAAE,gBAAkC;QACzD,IAAI,KAAK,GAAG,IAAI,CAAC,sBAAsB,EAAE;
|
|
1
|
+
{"version":3,"file":"seenBlockAttesters.js","sourceRoot":"","sources":["../../../src/chain/seenCache/seenBlockAttesters.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,aAAa,EAAC,MAAM,oBAAoB,CAAC;AACjD,8EAA8E;AAC9E,qEAAqE;AAErE,MAAM,OAAO,kBAAmB,SAAQ,aAAa;IACnD,UAAU,CAAC,KAAY,EAAE,gBAAkC;QACzD,IAAI,KAAK,GAAG,IAAI,CAAC,sBAAsB,EAAE,CAAC;YACxC,MAAM,KAAK,CAAC,eAAe,KAAK,MAAM,IAAI,CAAC,sBAAsB,EAAE,CAAC,CAAC;QACvE,CAAC;QAED,MAAM,cAAc,GAAG,IAAI,CAAC,uBAAuB,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;QAExE,KAAK,MAAM,KAAK,IAAI,gBAAgB,EAAE,CAAC;YACrC,cAAc,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QAC5B,CAAC;IACH,CAAC;CACF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"seenBlockProposers.js","sourceRoot":"","sources":["../../../src/chain/seenCache/seenBlockProposers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,uBAAuB,EAAC,MAAM,4BAA4B,CAAC;AAEnE,OAAO,EAAC,MAAM,EAAC,MAAM,iBAAiB,CAAC;AAEvC;;;;;GAKG;AACH,MAAM,OAAO,kBAAkB;IAA/B;QACmB,0BAAqB,GAAG,IAAI,MAAM,CAA4B,GAAG,EAAE,CAAC,IAAI,GAAG,EAAkB,CAAC,CAAC;QACxG,kBAAa,GAAU,CAAC,CAAC;IAmCnC,CAAC;IAjCC,OAAO,CAAC,SAAe,EAAE,aAA6B;QACpD,OAAO,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,GAAG,CAAC,aAAa,CAAC,KAAK,IAAI,CAAC;IAChF,CAAC;IAED,GAAG,CAAC,SAAe,EAAE,aAA6B;QAChD,IAAI,SAAS,GAAG,IAAI,CAAC,aAAa,EAAE;
|
|
1
|
+
{"version":3,"file":"seenBlockProposers.js","sourceRoot":"","sources":["../../../src/chain/seenCache/seenBlockProposers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,uBAAuB,EAAC,MAAM,4BAA4B,CAAC;AAEnE,OAAO,EAAC,MAAM,EAAC,MAAM,iBAAiB,CAAC;AAEvC;;;;;GAKG;AACH,MAAM,OAAO,kBAAkB;IAA/B;QACmB,0BAAqB,GAAG,IAAI,MAAM,CAA4B,GAAG,EAAE,CAAC,IAAI,GAAG,EAAkB,CAAC,CAAC;QACxG,kBAAa,GAAU,CAAC,CAAC;IAmCnC,CAAC;IAjCC,OAAO,CAAC,SAAe,EAAE,aAA6B;QACpD,OAAO,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,GAAG,CAAC,aAAa,CAAC,KAAK,IAAI,CAAC;IAChF,CAAC;IAED,GAAG,CAAC,SAAe,EAAE,aAA6B;QAChD,IAAI,SAAS,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;YACnC,MAAM,KAAK,CAAC,aAAa,SAAS,oBAAoB,IAAI,CAAC,aAAa,EAAE,CAAC,CAAC;QAC9E,CAAC;QAED,IAAI,CAAC,qBAAqB,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;IACxE,CAAC;IAED,KAAK,CAAC,aAAmB;QACvB,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;QACnC,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,qBAAqB,CAAC,IAAI,EAAE,EAAE,CAAC;YACrD,IAAI,IAAI,GAAG,aAAa,EAAE,CAAC;gBACzB,IAAI,CAAC,qBAAqB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YAC1C,CAAC;QACH,CAAC;IACH,CAAC;IAED,WAAW,CAAC,KAAW,EAAE,KAAqB;QAC5C,MAAM,QAAQ,GAAG,uBAAuB,CAAC,KAAK,CAAC,CAAC;QAChD,MAAM,MAAM,GAAG,uBAAuB,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;QAElD,KAAK,IAAI,IAAI,GAAG,QAAQ,EAAE,IAAI,GAAG,MAAM,EAAE,IAAI,EAAE,EAAE,CAAC;YAChD,IAAI,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,KAAK,CAAC,KAAK,IAAI,EAAE,CAAC;gBAC9D,OAAO,IAAI,CAAC;YACd,CAAC;QACH,CAAC;QAED,OAAO,KAAK,CAAC;IACf,CAAC;CACF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"seenCommittee.js","sourceRoot":"","sources":["../../../src/chain/seenCache/seenCommittee.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,MAAM,EAAC,MAAM,iBAAiB,CAAC;AAEvC;;GAEG;AACH,MAAM,kBAAkB,GAAG,CAAC,CAAC;AAK7B;;GAEG;AACH,MAAM,OAAO,yBAAyB;IAAtC;QACmB,oBAAe,GAAG,IAAI,MAAM,CAAyC,GAAG,EAAE,CAAC,IAAI,GAAG,EAAE,CAAC,CAAC;IAuBzG,CAAC;IArBC;;OAEG;IACH,GAAG,CAAC,IAAU,EAAE,MAAyB,EAAE,cAA8B;QACvE,MAAM,IAAI,GAAG,IAAI,CAAC,eAAe,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,YAAY,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC,CAAC;QAC/F,OAAO,IAAI,IAAI,IAAI,CAAC;IACtB,CAAC;IAED,yCAAyC;IACzC,GAAG,CAAC,IAAU,EAAE,MAAyB,EAAE,cAA8B,EAAE,IAAa;QACtF,IAAI,CAAC,eAAe,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,YAAY,CAAC,MAAM,EAAE,cAAc,CAAC,EAAE,IAAI,CAAC,CAAC;IAC1F,CAAC;IAED,2BAA2B;IAC3B,KAAK,CAAC,SAAe;QACnB,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE,EAAE;
|
|
1
|
+
{"version":3,"file":"seenCommittee.js","sourceRoot":"","sources":["../../../src/chain/seenCache/seenCommittee.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,MAAM,EAAC,MAAM,iBAAiB,CAAC;AAEvC;;GAEG;AACH,MAAM,kBAAkB,GAAG,CAAC,CAAC;AAK7B;;GAEG;AACH,MAAM,OAAO,yBAAyB;IAAtC;QACmB,oBAAe,GAAG,IAAI,MAAM,CAAyC,GAAG,EAAE,CAAC,IAAI,GAAG,EAAE,CAAC,CAAC;IAuBzG,CAAC;IArBC;;OAEG;IACH,GAAG,CAAC,IAAU,EAAE,MAAyB,EAAE,cAA8B;QACvE,MAAM,IAAI,GAAG,IAAI,CAAC,eAAe,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,YAAY,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC,CAAC;QAC/F,OAAO,IAAI,IAAI,IAAI,CAAC;IACtB,CAAC;IAED,yCAAyC;IACzC,GAAG,CAAC,IAAU,EAAE,MAAyB,EAAE,cAA8B,EAAE,IAAa;QACtF,IAAI,CAAC,eAAe,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,YAAY,CAAC,MAAM,EAAE,cAAc,CAAC,EAAE,IAAI,CAAC,CAAC;IAC1F,CAAC;IAED,2BAA2B;IAC3B,KAAK,CAAC,SAAe;QACnB,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE,EAAE,CAAC;YAC/C,IAAI,IAAI,GAAG,SAAS,GAAG,kBAAkB,EAAE,CAAC;gBAC1C,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YACpC,CAAC;QACH,CAAC;IACH,CAAC;CACF;AAED,SAAS,YAAY,CAAC,MAAc,EAAE,cAA8B;IAClE,OAAO,GAAG,MAAM,IAAI,cAAc,EAAE,CAAC;AACvC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"seenCommitteeContribution.js","sourceRoot":"","sources":["../../../src/chain/seenCache/seenCommitteeContribution.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,WAAW,EAAC,MAAM,gBAAgB,CAAC;AAG3C,OAAO,EAAC,MAAM,EAAC,MAAM,iBAAiB,CAAC;AAEvC,OAAO,EAAC,iBAAiB,EAAC,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAkB,UAAU,EAAC,MAAM,4BAA4B,CAAC;AAEvE;;GAEG;AACH,MAAM,kBAAkB,GAAG,CAAC,CAAC;AAQ7B;;;;GAIG;AACH,MAAM,OAAO,wBAAwB;IASnC,YAA6B,OAAuB;QAAvB,YAAO,GAAP,OAAO,CAAgB;QARnC,yBAAoB,GAAG,IAAI,MAAM,CAChD,GAAG,EAAE,CAAC,IAAI,GAAG,EAAuB,CACrC,CAAC;QAEe,2BAAsB,GAAG,IAAI,MAAM,CAClD,GAAG,EAAE,CAAC,IAAI,MAAM,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAC3B,CAAC;IAEqD,CAAC;IAExD;;;OAGG;IACH,iBAAiB,CAAC,YAAuC;QACvD,MAAM,EAAC,eAAe,EAAE,IAAI,EAAC,GAAG,YAAY,CAAC;QAC7C,MAAM,eAAe,GAAG,IAAI,CAAC,sBAAsB,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;QACvE,MAAM,sBAAsB,GAAG,eAAe,CAAC,YAAY,CAAC,qBAAqB,CAAC,YAAY,CAAC,CAAC,CAAC;QACjG,IAAI,CAAC,OAAO,EAAE,SAAS,CAAC,sBAAsB,CAAC,YAAY,CAAC,GAAG,EAAE,CAAC;QAClE,yDAAyD;QAEzD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,sBAAsB,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;
|
|
1
|
+
{"version":3,"file":"seenCommitteeContribution.js","sourceRoot":"","sources":["../../../src/chain/seenCache/seenCommitteeContribution.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,11 @@
|
|
|
1
1
|
import { deneb, RootHex, allForks } from "@lodestar/types";
|
|
2
2
|
import { ChainForkConfig } from "@lodestar/config";
|
|
3
3
|
import { BlockInput, GossipedInputType } from "../blocks/types.js";
|
|
4
|
+
import { Metrics } from "../../metrics/index.js";
|
|
5
|
+
export declare enum BlockInputAvailabilitySource {
|
|
6
|
+
GOSSIP = "gossip",
|
|
7
|
+
UNKNOWN_SYNC = "unknown_sync"
|
|
8
|
+
}
|
|
4
9
|
type GossipedBlockInput = {
|
|
5
10
|
type: GossipedInputType.block;
|
|
6
11
|
signedBlock: allForks.SignedBeaconBlock;
|
|
@@ -25,7 +30,7 @@ export declare class SeenGossipBlockInput {
|
|
|
25
30
|
private blockInputCache;
|
|
26
31
|
prune(): void;
|
|
27
32
|
hasBlock(blockRoot: RootHex): boolean;
|
|
28
|
-
getGossipBlockInput(config: ChainForkConfig, gossipedInput: GossipedBlockInput): {
|
|
33
|
+
getGossipBlockInput(config: ChainForkConfig, gossipedInput: GossipedBlockInput, metrics: Metrics | null): {
|
|
29
34
|
blockInput: BlockInput;
|
|
30
35
|
blockInputMeta: {
|
|
31
36
|
pending: GossipedInputType.blob | null;
|
|
@@ -2,7 +2,12 @@ import { toHexString } from "@chainsafe/ssz";
|
|
|
2
2
|
import { ssz } from "@lodestar/types";
|
|
3
3
|
import { pruneSetToMax } from "@lodestar/utils";
|
|
4
4
|
import { BLOBSIDECAR_FIXED_SIZE, ForkSeq } from "@lodestar/params";
|
|
5
|
-
import { getBlockInput, BlockSource, GossipedInputType, } from "../blocks/types.js";
|
|
5
|
+
import { getBlockInput, BlockSource, GossipedInputType, getBlockInputBlobs, } from "../blocks/types.js";
|
|
6
|
+
export var BlockInputAvailabilitySource;
|
|
7
|
+
(function (BlockInputAvailabilitySource) {
|
|
8
|
+
BlockInputAvailabilitySource["GOSSIP"] = "gossip";
|
|
9
|
+
BlockInputAvailabilitySource["UNKNOWN_SYNC"] = "unknown_sync";
|
|
10
|
+
})(BlockInputAvailabilitySource || (BlockInputAvailabilitySource = {}));
|
|
6
11
|
const MAX_GOSSIPINPUT_CACHE = 5;
|
|
7
12
|
/**
|
|
8
13
|
* For predeneb, SeenGossipBlockInput only tracks and caches block so that we don't need to download known block
|
|
@@ -25,7 +30,7 @@ export class SeenGossipBlockInput {
|
|
|
25
30
|
hasBlock(blockRoot) {
|
|
26
31
|
return this.blockInputCache.has(blockRoot);
|
|
27
32
|
}
|
|
28
|
-
getGossipBlockInput(config, gossipedInput) {
|
|
33
|
+
getGossipBlockInput(config, gossipedInput, metrics) {
|
|
29
34
|
let blockHex;
|
|
30
35
|
let blockCache;
|
|
31
36
|
if (gossipedInput.type === GossipedInputType.block) {
|
|
@@ -68,6 +73,7 @@ export class SeenGossipBlockInput {
|
|
|
68
73
|
if (blobKzgCommitments.length === blobsCache.size) {
|
|
69
74
|
const allBlobs = getBlockInputBlobs(blobsCache);
|
|
70
75
|
resolveAvailability(allBlobs);
|
|
76
|
+
metrics?.syncUnknownBlock.resolveAvailabilitySource.inc({ source: BlockInputAvailabilitySource.GOSSIP });
|
|
71
77
|
const { blobs, blobsBytes } = allBlobs;
|
|
72
78
|
return {
|
|
73
79
|
blockInput: getBlockInput.postDeneb(config, signedBlock, BlockSource.gossip, blobs, blockBytes ?? null, blobsBytes),
|
|
@@ -76,7 +82,7 @@ export class SeenGossipBlockInput {
|
|
|
76
82
|
}
|
|
77
83
|
else {
|
|
78
84
|
return {
|
|
79
|
-
blockInput: getBlockInput.blobsPromise(config, signedBlock, BlockSource.gossip, blobsCache, blockBytes ?? null, availabilityPromise),
|
|
85
|
+
blockInput: getBlockInput.blobsPromise(config, signedBlock, BlockSource.gossip, blobsCache, blockBytes ?? null, availabilityPromise, resolveAvailability),
|
|
80
86
|
blockInputMeta: {
|
|
81
87
|
pending: GossipedInputType.blob,
|
|
82
88
|
haveBlobs: blobsCache.size,
|
|
@@ -107,18 +113,4 @@ function getEmptyBlockInputCacheEntry() {
|
|
|
107
113
|
const blobsCache = new Map();
|
|
108
114
|
return { availabilityPromise, resolveAvailability, blobsCache };
|
|
109
115
|
}
|
|
110
|
-
function getBlockInputBlobs(blobsCache) {
|
|
111
|
-
const blobs = [];
|
|
112
|
-
const blobsBytes = [];
|
|
113
|
-
for (let index = 0; index < blobsCache.size; index++) {
|
|
114
|
-
const blobCache = blobsCache.get(index);
|
|
115
|
-
if (blobCache === undefined) {
|
|
116
|
-
throw Error(`Missing blobSidecar at index=${index}`);
|
|
117
|
-
}
|
|
118
|
-
const { blobSidecar, blobBytes } = blobCache;
|
|
119
|
-
blobs.push(blobSidecar);
|
|
120
|
-
blobsBytes.push(blobBytes);
|
|
121
|
-
}
|
|
122
|
-
return { blobs, blobsBytes };
|
|
123
|
-
}
|
|
124
116
|
//# sourceMappingURL=seenGossipBlockInput.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"seenGossipBlockInput.js","sourceRoot":"","sources":["../../../src/chain/seenCache/seenGossipBlockInput.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,WAAW,EAAC,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAiB,GAAG,EAAW,MAAM,iBAAiB,CAAC;AAE9D,OAAO,EAAC,aAAa,EAAC,MAAM,iBAAiB,CAAC;AAC9C,OAAO,EAAC,sBAAsB,EAAE,OAAO,EAAC,MAAM,kBAAkB,CAAC;AAEjE,OAAO,EAEL,aAAa,EACb,WAAW,EAGX,iBAAiB,
|
|
1
|
+
{"version":3,"file":"seenGossipBlockInput.js","sourceRoot":"","sources":["../../../src/chain/seenCache/seenGossipBlockInput.ts"],"names":[],"mappings":"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"}
|