@lodestar/beacon-node 1.38.0 → 1.39.0-dev.100ab480bb
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/utils.js +1 -1
- package/lib/api/impl/beacon/blocks/utils.js.map +1 -1
- package/lib/api/impl/beacon/state/index.d.ts.map +1 -1
- package/lib/api/impl/beacon/state/index.js +4 -5
- package/lib/api/impl/beacon/state/index.js.map +1 -1
- package/lib/api/impl/validator/index.js +1 -1
- package/lib/api/impl/validator/index.js.map +1 -1
- package/lib/chain/blocks/verifyBlock.d.ts.map +1 -1
- package/lib/chain/blocks/verifyBlock.js +1 -21
- package/lib/chain/blocks/verifyBlock.js.map +1 -1
- package/lib/chain/blocks/verifyBlocksExecutionPayloads.d.ts +1 -6
- package/lib/chain/blocks/verifyBlocksExecutionPayloads.d.ts.map +1 -1
- package/lib/chain/blocks/verifyBlocksExecutionPayloads.js +9 -128
- package/lib/chain/blocks/verifyBlocksExecutionPayloads.js.map +1 -1
- package/lib/chain/blocks/verifyBlocksSignatures.d.ts +3 -2
- package/lib/chain/blocks/verifyBlocksSignatures.d.ts.map +1 -1
- package/lib/chain/blocks/verifyBlocksSignatures.js +3 -2
- package/lib/chain/blocks/verifyBlocksSignatures.js.map +1 -1
- package/lib/chain/chain.d.ts +8 -12
- package/lib/chain/chain.d.ts.map +1 -1
- package/lib/chain/chain.js +25 -59
- package/lib/chain/chain.js.map +1 -1
- package/lib/chain/initState.d.ts +1 -14
- package/lib/chain/initState.d.ts.map +1 -1
- package/lib/chain/initState.js +1 -62
- package/lib/chain/initState.js.map +1 -1
- package/lib/chain/interface.d.ts +4 -9
- package/lib/chain/interface.d.ts.map +1 -1
- package/lib/chain/interface.js.map +1 -1
- package/lib/chain/opPools/aggregatedAttestationPool.d.ts +4 -4
- package/lib/chain/opPools/aggregatedAttestationPool.d.ts.map +1 -1
- package/lib/chain/opPools/aggregatedAttestationPool.js +4 -4
- package/lib/chain/opPools/aggregatedAttestationPool.js.map +1 -1
- package/lib/chain/opPools/opPool.d.ts +3 -0
- package/lib/chain/opPools/opPool.d.ts.map +1 -1
- package/lib/chain/opPools/opPool.js +9 -8
- package/lib/chain/opPools/opPool.js.map +1 -1
- package/lib/chain/options.d.ts +0 -4
- package/lib/chain/options.d.ts.map +1 -1
- package/lib/chain/options.js +0 -2
- package/lib/chain/options.js.map +1 -1
- package/lib/chain/prepareNextSlot.d.ts +0 -4
- package/lib/chain/prepareNextSlot.d.ts.map +1 -1
- package/lib/chain/prepareNextSlot.js +2 -22
- package/lib/chain/prepareNextSlot.js.map +1 -1
- package/lib/chain/produceBlock/produceBlockBody.d.ts +2 -22
- package/lib/chain/produceBlock/produceBlockBody.d.ts.map +1 -1
- package/lib/chain/produceBlock/produceBlockBody.js +32 -98
- package/lib/chain/produceBlock/produceBlockBody.js.map +1 -1
- package/lib/chain/stateCache/persistentCheckpointsCache.d.ts +4 -1
- package/lib/chain/stateCache/persistentCheckpointsCache.d.ts.map +1 -1
- package/lib/chain/stateCache/persistentCheckpointsCache.js +4 -2
- package/lib/chain/stateCache/persistentCheckpointsCache.js.map +1 -1
- package/lib/chain/validation/aggregateAndProof.js +9 -0
- package/lib/chain/validation/aggregateAndProof.js.map +1 -1
- package/lib/chain/validation/attesterSlashing.d.ts.map +1 -1
- package/lib/chain/validation/attesterSlashing.js +2 -2
- package/lib/chain/validation/attesterSlashing.js.map +1 -1
- package/lib/chain/validation/blobSidecar.d.ts.map +1 -1
- package/lib/chain/validation/blobSidecar.js +2 -2
- package/lib/chain/validation/blobSidecar.js.map +1 -1
- package/lib/chain/validation/block.js +1 -1
- package/lib/chain/validation/block.js.map +1 -1
- package/lib/chain/validation/blsToExecutionChange.js +1 -1
- package/lib/chain/validation/dataColumnSidecar.d.ts.map +1 -1
- package/lib/chain/validation/dataColumnSidecar.js +2 -2
- package/lib/chain/validation/dataColumnSidecar.js.map +1 -1
- package/lib/chain/validation/proposerSlashing.js +1 -1
- package/lib/chain/validation/proposerSlashing.js.map +1 -1
- package/lib/chain/validation/signatureSets/aggregateAndProof.js +1 -1
- package/lib/chain/validation/signatureSets/aggregateAndProof.js.map +1 -1
- package/lib/chain/validation/signatureSets/contributionAndProof.d.ts +3 -2
- package/lib/chain/validation/signatureSets/contributionAndProof.d.ts.map +1 -1
- package/lib/chain/validation/signatureSets/contributionAndProof.js +3 -4
- package/lib/chain/validation/signatureSets/contributionAndProof.js.map +1 -1
- package/lib/chain/validation/signatureSets/syncCommittee.d.ts +3 -2
- package/lib/chain/validation/signatureSets/syncCommittee.d.ts.map +1 -1
- package/lib/chain/validation/signatureSets/syncCommittee.js +3 -3
- package/lib/chain/validation/signatureSets/syncCommittee.js.map +1 -1
- package/lib/chain/validation/signatureSets/syncCommitteeContribution.d.ts +2 -1
- package/lib/chain/validation/signatureSets/syncCommitteeContribution.d.ts.map +1 -1
- package/lib/chain/validation/signatureSets/syncCommitteeContribution.js +2 -2
- package/lib/chain/validation/signatureSets/syncCommitteeContribution.js.map +1 -1
- package/lib/chain/validation/signatureSets/syncCommitteeSelectionProof.d.ts +3 -2
- package/lib/chain/validation/signatureSets/syncCommitteeSelectionProof.d.ts.map +1 -1
- package/lib/chain/validation/signatureSets/syncCommitteeSelectionProof.js +2 -3
- package/lib/chain/validation/signatureSets/syncCommitteeSelectionProof.js.map +1 -1
- package/lib/chain/validation/syncCommittee.js +1 -1
- package/lib/chain/validation/syncCommittee.js.map +1 -1
- package/lib/chain/validation/syncCommitteeContributionAndProof.d.ts.map +1 -1
- package/lib/chain/validation/syncCommitteeContributionAndProof.js +5 -4
- package/lib/chain/validation/syncCommitteeContributionAndProof.js.map +1 -1
- package/lib/chain/validation/voluntaryExit.js +1 -1
- package/lib/chain/validation/voluntaryExit.js.map +1 -1
- package/lib/db/beacon.d.ts +3 -7
- package/lib/db/beacon.d.ts.map +1 -1
- package/lib/db/beacon.js +33 -12
- package/lib/db/beacon.js.map +1 -1
- package/lib/db/buckets.d.ts +12 -6
- package/lib/db/buckets.d.ts.map +1 -1
- package/lib/db/buckets.js +6 -1
- package/lib/db/buckets.js.map +1 -1
- package/lib/db/interface.d.ts +2 -7
- package/lib/db/interface.d.ts.map +1 -1
- package/lib/db/repositories/index.d.ts +0 -3
- package/lib/db/repositories/index.d.ts.map +1 -1
- package/lib/db/repositories/index.js +0 -3
- package/lib/db/repositories/index.js.map +1 -1
- package/lib/execution/engine/http.d.ts +5 -13
- package/lib/execution/engine/http.d.ts.map +1 -1
- package/lib/execution/engine/http.js +6 -15
- package/lib/execution/engine/http.js.map +1 -1
- package/lib/execution/engine/index.d.ts.map +1 -1
- package/lib/execution/engine/index.js +1 -1
- package/lib/execution/engine/index.js.map +1 -1
- package/lib/execution/engine/interface.d.ts +1 -1
- package/lib/execution/engine/interface.d.ts.map +1 -1
- package/lib/execution/engine/interface.js.map +1 -1
- package/lib/{eth1/provider → execution/engine}/jsonRpcHttpClient.d.ts +1 -1
- package/lib/execution/engine/jsonRpcHttpClient.d.ts.map +1 -0
- package/lib/execution/engine/jsonRpcHttpClient.js.map +1 -0
- package/lib/execution/engine/jwt.d.ts.map +1 -0
- package/lib/execution/engine/jwt.js.map +1 -0
- package/lib/execution/engine/mock.d.ts +2 -6
- package/lib/execution/engine/mock.d.ts.map +1 -1
- package/lib/execution/engine/mock.js +4 -15
- package/lib/execution/engine/mock.js.map +1 -1
- package/lib/execution/engine/payloadIdCache.d.ts +1 -1
- package/lib/execution/engine/payloadIdCache.d.ts.map +1 -1
- package/lib/execution/engine/types.d.ts +1 -1
- package/lib/execution/engine/types.d.ts.map +1 -1
- package/lib/execution/engine/types.js +1 -1
- package/lib/execution/engine/types.js.map +1 -1
- package/lib/execution/engine/utils.d.ts +64 -2
- package/lib/execution/engine/utils.d.ts.map +1 -1
- package/lib/execution/engine/utils.js +91 -2
- package/lib/execution/engine/utils.js.map +1 -1
- package/lib/index.d.ts +1 -2
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +1 -2
- package/lib/index.js.map +1 -1
- package/lib/metrics/metrics/lodestar.d.ts +0 -49
- package/lib/metrics/metrics/lodestar.d.ts.map +1 -1
- package/lib/metrics/metrics/lodestar.js +0 -134
- package/lib/metrics/metrics/lodestar.js.map +1 -1
- package/lib/network/core/events.d.ts +1 -1
- package/lib/network/core/events.d.ts.map +1 -1
- package/lib/network/core/events.js +1 -1
- package/lib/network/core/events.js.map +1 -1
- package/lib/network/events.d.ts +6 -1
- package/lib/network/events.d.ts.map +1 -1
- package/lib/network/events.js +7 -1
- package/lib/network/events.js.map +1 -1
- package/lib/node/nodejs.d.ts +6 -3
- package/lib/node/nodejs.d.ts.map +1 -1
- package/lib/node/nodejs.js +13 -10
- package/lib/node/nodejs.js.map +1 -1
- package/lib/node/notifier.d.ts.map +1 -1
- package/lib/node/notifier.js +0 -13
- package/lib/node/notifier.js.map +1 -1
- package/lib/node/options.d.ts +0 -2
- package/lib/node/options.d.ts.map +1 -1
- package/lib/node/options.js +0 -2
- package/lib/node/options.js.map +1 -1
- package/lib/node/utils/interop/deposits.d.ts +2 -1
- package/lib/node/utils/interop/deposits.d.ts.map +1 -1
- package/lib/node/utils/interop/deposits.js.map +1 -1
- package/lib/node/utils/interop/state.d.ts +1 -1
- package/lib/node/utils/interop/state.d.ts.map +1 -1
- package/lib/node/utils/state.d.ts +1 -7
- package/lib/node/utils/state.d.ts.map +1 -1
- package/lib/node/utils/state.js +1 -14
- package/lib/node/utils/state.js.map +1 -1
- package/lib/sync/backfill/backfill.d.ts.map +1 -1
- package/lib/sync/backfill/backfill.js +2 -2
- package/lib/sync/backfill/backfill.js.map +1 -1
- package/lib/sync/backfill/verify.d.ts +2 -2
- package/lib/sync/backfill/verify.d.ts.map +1 -1
- package/lib/sync/backfill/verify.js +3 -3
- package/lib/sync/backfill/verify.js.map +1 -1
- package/lib/util/workerEvents.d.ts +1 -6
- package/lib/util/workerEvents.d.ts.map +1 -1
- package/lib/util/workerEvents.js +8 -8
- package/lib/util/workerEvents.js.map +1 -1
- package/package.json +14 -21
- package/src/api/impl/beacon/blocks/utils.ts +1 -1
- package/src/api/impl/beacon/state/index.ts +4 -5
- package/src/api/impl/validator/index.ts +1 -1
- package/src/chain/blocks/verifyBlock.ts +3 -24
- package/src/chain/blocks/verifyBlocksExecutionPayloads.ts +9 -161
- package/src/chain/blocks/verifyBlocksSignatures.ts +15 -4
- package/src/chain/chain.ts +35 -69
- package/src/chain/initState.ts +1 -97
- package/src/chain/interface.ts +4 -8
- package/src/chain/opPools/aggregatedAttestationPool.ts +7 -7
- package/src/chain/opPools/opPool.ts +8 -8
- package/src/chain/options.ts +0 -6
- package/src/chain/prepareNextSlot.ts +2 -29
- package/src/chain/produceBlock/produceBlockBody.ts +33 -132
- package/src/chain/stateCache/persistentCheckpointsCache.ts +15 -2
- package/src/chain/validation/aggregateAndProof.ts +12 -0
- package/src/chain/validation/attesterSlashing.ts +7 -2
- package/src/chain/validation/blobSidecar.ts +10 -2
- package/src/chain/validation/block.ts +1 -1
- package/src/chain/validation/blsToExecutionChange.ts +1 -1
- package/src/chain/validation/dataColumnSidecar.ts +6 -1
- package/src/chain/validation/proposerSlashing.ts +6 -1
- package/src/chain/validation/signatureSets/aggregateAndProof.ts +1 -1
- package/src/chain/validation/signatureSets/contributionAndProof.ts +6 -3
- package/src/chain/validation/signatureSets/syncCommittee.ts +6 -2
- package/src/chain/validation/signatureSets/syncCommitteeContribution.ts +3 -1
- package/src/chain/validation/signatureSets/syncCommitteeSelectionProof.ts +5 -2
- package/src/chain/validation/syncCommittee.ts +1 -1
- package/src/chain/validation/syncCommitteeContributionAndProof.ts +10 -6
- package/src/chain/validation/voluntaryExit.ts +1 -1
- package/src/db/beacon.ts +38 -16
- package/src/db/buckets.ts +12 -7
- package/src/db/interface.ts +2 -13
- package/src/db/repositories/index.ts +0 -3
- package/src/execution/engine/http.ts +12 -21
- package/src/execution/engine/index.ts +1 -1
- package/src/execution/engine/interface.ts +1 -1
- package/src/{eth1/provider → execution/engine}/jsonRpcHttpClient.ts +1 -1
- package/src/execution/engine/mock.ts +4 -17
- package/src/execution/engine/payloadIdCache.ts +1 -1
- package/src/execution/engine/types.ts +9 -9
- package/src/execution/engine/utils.ts +111 -5
- package/src/index.ts +1 -2
- package/src/metrics/metrics/lodestar.ts +0 -144
- package/src/network/core/events.ts +1 -1
- package/src/network/events.ts +7 -1
- package/src/node/nodejs.ts +20 -11
- package/src/node/notifier.ts +0 -16
- package/src/node/options.ts +0 -3
- package/src/node/utils/interop/deposits.ts +3 -1
- package/src/node/utils/interop/state.ts +1 -1
- package/src/node/utils/state.ts +3 -18
- package/src/sync/backfill/backfill.ts +14 -2
- package/src/sync/backfill/verify.ts +9 -2
- package/src/util/workerEvents.ts +9 -8
- package/lib/chain/genesis/genesis.d.ts +0 -51
- package/lib/chain/genesis/genesis.d.ts.map +0 -1
- package/lib/chain/genesis/genesis.js +0 -123
- package/lib/chain/genesis/genesis.js.map +0 -1
- package/lib/chain/genesis/interface.d.ts +0 -13
- package/lib/chain/genesis/interface.d.ts.map +0 -1
- package/lib/chain/genesis/interface.js +0 -2
- package/lib/chain/genesis/interface.js.map +0 -1
- package/lib/chain/rewards/attestationsRewards.d.ts +0 -7
- package/lib/chain/rewards/attestationsRewards.d.ts.map +0 -1
- package/lib/chain/rewards/attestationsRewards.js +0 -112
- package/lib/chain/rewards/attestationsRewards.js.map +0 -1
- package/lib/chain/rewards/blockRewards.d.ts +0 -14
- package/lib/chain/rewards/blockRewards.d.ts.map +0 -1
- package/lib/chain/rewards/blockRewards.js +0 -94
- package/lib/chain/rewards/blockRewards.js.map +0 -1
- package/lib/chain/rewards/syncCommitteeRewards.d.ts +0 -6
- package/lib/chain/rewards/syncCommitteeRewards.d.ts.map +0 -1
- package/lib/chain/rewards/syncCommitteeRewards.js +0 -37
- package/lib/chain/rewards/syncCommitteeRewards.js.map +0 -1
- package/lib/db/repositories/depositDataRoot.d.ts +0 -22
- package/lib/db/repositories/depositDataRoot.d.ts.map +0 -1
- package/lib/db/repositories/depositDataRoot.js +0 -62
- package/lib/db/repositories/depositDataRoot.js.map +0 -1
- package/lib/db/repositories/depositEvent.d.ts +0 -13
- package/lib/db/repositories/depositEvent.d.ts.map +0 -1
- package/lib/db/repositories/depositEvent.js +0 -27
- package/lib/db/repositories/depositEvent.js.map +0 -1
- package/lib/db/repositories/eth1Data.d.ts +0 -13
- package/lib/db/repositories/eth1Data.d.ts.map +0 -1
- package/lib/db/repositories/eth1Data.js +0 -26
- package/lib/db/repositories/eth1Data.js.map +0 -1
- package/lib/db/single/index.d.ts +0 -3
- package/lib/db/single/index.d.ts.map +0 -1
- package/lib/db/single/index.js +0 -3
- package/lib/db/single/index.js.map +0 -1
- package/lib/db/single/preGenesisState.d.ts +0 -16
- package/lib/db/single/preGenesisState.d.ts.map +0 -1
- package/lib/db/single/preGenesisState.js +0 -29
- package/lib/db/single/preGenesisState.js.map +0 -1
- package/lib/db/single/preGenesisStateLastProcessedBlock.d.ts +0 -14
- package/lib/db/single/preGenesisStateLastProcessedBlock.d.ts.map +0 -1
- package/lib/db/single/preGenesisStateLastProcessedBlock.js +0 -27
- package/lib/db/single/preGenesisStateLastProcessedBlock.js.map +0 -1
- package/lib/eth1/errors.d.ts +0 -66
- package/lib/eth1/errors.d.ts.map +0 -1
- package/lib/eth1/errors.js +0 -27
- package/lib/eth1/errors.js.map +0 -1
- package/lib/eth1/eth1DataCache.d.ts +0 -19
- package/lib/eth1/eth1DataCache.d.ts.map +0 -1
- package/lib/eth1/eth1DataCache.js +0 -19
- package/lib/eth1/eth1DataCache.js.map +0 -1
- package/lib/eth1/eth1DepositDataTracker.d.ts +0 -80
- package/lib/eth1/eth1DepositDataTracker.d.ts.map +0 -1
- package/lib/eth1/eth1DepositDataTracker.js +0 -317
- package/lib/eth1/eth1DepositDataTracker.js.map +0 -1
- package/lib/eth1/eth1DepositsCache.d.ts +0 -42
- package/lib/eth1/eth1DepositsCache.d.ts.map +0 -1
- package/lib/eth1/eth1DepositsCache.js +0 -119
- package/lib/eth1/eth1DepositsCache.js.map +0 -1
- package/lib/eth1/eth1MergeBlockTracker.d.ts +0 -65
- package/lib/eth1/eth1MergeBlockTracker.d.ts.map +0 -1
- package/lib/eth1/eth1MergeBlockTracker.js +0 -262
- package/lib/eth1/eth1MergeBlockTracker.js.map +0 -1
- package/lib/eth1/index.d.ts +0 -46
- package/lib/eth1/index.d.ts.map +0 -1
- package/lib/eth1/index.js +0 -121
- package/lib/eth1/index.js.map +0 -1
- package/lib/eth1/interface.d.ts +0 -112
- package/lib/eth1/interface.d.ts.map +0 -1
- package/lib/eth1/interface.js +0 -8
- package/lib/eth1/interface.js.map +0 -1
- package/lib/eth1/options.d.ts +0 -22
- package/lib/eth1/options.d.ts.map +0 -1
- package/lib/eth1/options.js +0 -8
- package/lib/eth1/options.js.map +0 -1
- package/lib/eth1/provider/eth1Provider.d.ts +0 -39
- package/lib/eth1/provider/eth1Provider.d.ts.map +0 -1
- package/lib/eth1/provider/eth1Provider.js +0 -147
- package/lib/eth1/provider/eth1Provider.js.map +0 -1
- package/lib/eth1/provider/jsonRpcHttpClient.d.ts.map +0 -1
- package/lib/eth1/provider/jsonRpcHttpClient.js.map +0 -1
- package/lib/eth1/provider/jwt.d.ts.map +0 -1
- package/lib/eth1/provider/jwt.js.map +0 -1
- package/lib/eth1/provider/utils.d.ts +0 -65
- package/lib/eth1/provider/utils.d.ts.map +0 -1
- package/lib/eth1/provider/utils.js +0 -120
- package/lib/eth1/provider/utils.js.map +0 -1
- package/lib/eth1/stream.d.ts +0 -15
- package/lib/eth1/stream.d.ts.map +0 -1
- package/lib/eth1/stream.js +0 -54
- package/lib/eth1/stream.js.map +0 -1
- package/lib/eth1/utils/depositContract.d.ts +0 -14
- package/lib/eth1/utils/depositContract.d.ts.map +0 -1
- package/lib/eth1/utils/depositContract.js +0 -33
- package/lib/eth1/utils/depositContract.js.map +0 -1
- package/lib/eth1/utils/deposits.d.ts +0 -8
- package/lib/eth1/utils/deposits.d.ts.map +0 -1
- package/lib/eth1/utils/deposits.js +0 -47
- package/lib/eth1/utils/deposits.js.map +0 -1
- package/lib/eth1/utils/eth1Data.d.ts +0 -22
- package/lib/eth1/utils/eth1Data.d.ts.map +0 -1
- package/lib/eth1/utils/eth1Data.js +0 -77
- package/lib/eth1/utils/eth1Data.js.map +0 -1
- package/lib/eth1/utils/eth1DepositEvent.d.ts +0 -7
- package/lib/eth1/utils/eth1DepositEvent.d.ts.map +0 -1
- package/lib/eth1/utils/eth1DepositEvent.js +0 -13
- package/lib/eth1/utils/eth1DepositEvent.js.map +0 -1
- package/lib/eth1/utils/eth1Vote.d.ts +0 -17
- package/lib/eth1/utils/eth1Vote.d.ts.map +0 -1
- package/lib/eth1/utils/eth1Vote.js +0 -111
- package/lib/eth1/utils/eth1Vote.js.map +0 -1
- package/lib/eth1/utils/groupDepositEventsByBlock.d.ts +0 -9
- package/lib/eth1/utils/groupDepositEventsByBlock.d.ts.map +0 -1
- package/lib/eth1/utils/groupDepositEventsByBlock.js +0 -17
- package/lib/eth1/utils/groupDepositEventsByBlock.js.map +0 -1
- package/lib/eth1/utils/optimizeNextBlockDiffForGenesis.d.ts +0 -10
- package/lib/eth1/utils/optimizeNextBlockDiffForGenesis.d.ts.map +0 -1
- package/lib/eth1/utils/optimizeNextBlockDiffForGenesis.js +0 -14
- package/lib/eth1/utils/optimizeNextBlockDiffForGenesis.js.map +0 -1
- package/src/chain/genesis/genesis.ts +0 -190
- package/src/chain/genesis/interface.ts +0 -14
- package/src/chain/rewards/attestationsRewards.ts +0 -196
- package/src/chain/rewards/blockRewards.ts +0 -150
- package/src/chain/rewards/syncCommitteeRewards.ts +0 -58
- package/src/db/repositories/depositDataRoot.ts +0 -80
- package/src/db/repositories/depositEvent.ts +0 -32
- package/src/db/repositories/eth1Data.ts +0 -33
- package/src/db/single/index.ts +0 -2
- package/src/db/single/preGenesisState.ts +0 -37
- package/src/db/single/preGenesisStateLastProcessedBlock.ts +0 -34
- package/src/eth1/errors.ts +0 -40
- package/src/eth1/eth1DataCache.ts +0 -26
- package/src/eth1/eth1DepositDataTracker.ts +0 -410
- package/src/eth1/eth1DepositsCache.ts +0 -141
- package/src/eth1/eth1MergeBlockTracker.ts +0 -328
- package/src/eth1/index.ts +0 -157
- package/src/eth1/interface.ts +0 -131
- package/src/eth1/options.ts +0 -28
- package/src/eth1/provider/eth1Provider.ts +0 -229
- package/src/eth1/provider/utils.ts +0 -136
- package/src/eth1/stream.ts +0 -75
- package/src/eth1/utils/depositContract.ts +0 -37
- package/src/eth1/utils/deposits.ts +0 -70
- package/src/eth1/utils/eth1Data.ts +0 -100
- package/src/eth1/utils/eth1DepositEvent.ts +0 -12
- package/src/eth1/utils/eth1Vote.ts +0 -142
- package/src/eth1/utils/groupDepositEventsByBlock.ts +0 -19
- package/src/eth1/utils/optimizeNextBlockDiffForGenesis.ts +0 -18
- /package/lib/{eth1/provider → execution/engine}/jsonRpcHttpClient.js +0 -0
- /package/lib/{eth1/provider → execution/engine}/jwt.d.ts +0 -0
- /package/lib/{eth1/provider → execution/engine}/jwt.js +0 -0
- /package/src/{eth1/provider → execution/engine}/jwt.ts +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { ExecutionStatus,
|
|
2
|
-
import { ForkSeq
|
|
3
|
-
import { isExecutionBlockBodyType, isExecutionEnabled, isExecutionStateType,
|
|
1
|
+
import { ExecutionStatus, } from "@lodestar/fork-choice";
|
|
2
|
+
import { ForkSeq } from "@lodestar/params";
|
|
3
|
+
import { isExecutionBlockBodyType, isExecutionEnabled, isExecutionStateType, } from "@lodestar/state-transition";
|
|
4
4
|
import { ErrorAborted, toRootHex } from "@lodestar/utils";
|
|
5
5
|
import { ExecutionPayloadStatus } from "../../execution/engine/interface.js";
|
|
6
6
|
import { BlockError, BlockErrorCode } from "../errors/index.js";
|
|
@@ -12,7 +12,6 @@ import { isBlockInputBlobs, isBlockInputColumns } from "./blockInput/blockInput.
|
|
|
12
12
|
*/
|
|
13
13
|
export async function verifyBlocksExecutionPayload(chain, parentBlock, blockInputs, preState0, signal, opts) {
|
|
14
14
|
const executionStatuses = [];
|
|
15
|
-
let mergeBlockFound = null;
|
|
16
15
|
const recvToValLatency = Date.now() / 1000 - (opts.seenTimestampSec ?? Date.now() / 1000);
|
|
17
16
|
const lastBlock = blockInputs.at(-1);
|
|
18
17
|
// Error in the same way as verifyBlocksSanityChecks if empty blocks
|
|
@@ -34,55 +33,9 @@ export async function verifyBlocksExecutionPayload(chain, parentBlock, blockInpu
|
|
|
34
33
|
// will either validate or prune invalid blocks
|
|
35
34
|
//
|
|
36
35
|
// We need to track and keep updating if its safe to optimistically import these blocks.
|
|
37
|
-
// The following is how we determine for a block if its safe:
|
|
38
|
-
//
|
|
39
|
-
// (but we need to modify this check for this segment of blocks because it checks if the
|
|
40
|
-
// parent of any block imported in forkchoice is post-merge and currently we could only
|
|
41
|
-
// have blocks[0]'s parent imported in the chain as this is no longer one by one verify +
|
|
42
|
-
// import.)
|
|
43
|
-
//
|
|
44
36
|
//
|
|
45
37
|
// When to import such blocks:
|
|
46
38
|
// From: https://github.com/ethereum/consensus-specs/pull/2844
|
|
47
|
-
// A block MUST NOT be optimistically imported, unless either of the following
|
|
48
|
-
// conditions are met:
|
|
49
|
-
//
|
|
50
|
-
// 1. Parent of the block has execution
|
|
51
|
-
//
|
|
52
|
-
// Since with the sync optimizations, the previous block might not have been in the
|
|
53
|
-
// forkChoice yet, so the below check could fail for safeSlotsToImportOptimistically
|
|
54
|
-
//
|
|
55
|
-
// Luckily, we can depend on the preState0 to see if we are already post merge w.r.t
|
|
56
|
-
// the blocks we are importing.
|
|
57
|
-
//
|
|
58
|
-
// Or in other words if
|
|
59
|
-
// - block status is syncing
|
|
60
|
-
// - and we are not in a post merge world and is parent is not optimistically safe
|
|
61
|
-
// - and we are syncing close to the chain head i.e. clock slot
|
|
62
|
-
// - and parent is optimistically safe
|
|
63
|
-
//
|
|
64
|
-
// then throw error
|
|
65
|
-
//
|
|
66
|
-
//
|
|
67
|
-
// - if we haven't yet imported a post merge ancestor in forkchoice i.e.
|
|
68
|
-
// - and we are syncing close to the clockSlot, i.e. merge Transition could be underway
|
|
69
|
-
//
|
|
70
|
-
//
|
|
71
|
-
// 2. The current slot (as per the system clock) is at least
|
|
72
|
-
// SAFE_SLOTS_TO_IMPORT_OPTIMISTICALLY ahead of the slot of the block being
|
|
73
|
-
// imported.
|
|
74
|
-
// This means that the merge transition could be underway and we can't afford to import
|
|
75
|
-
// a block which is not fully validated as it could affect liveliness of the network.
|
|
76
|
-
//
|
|
77
|
-
//
|
|
78
|
-
// For this segment of blocks:
|
|
79
|
-
// We are optimistically safe with respect to this entire block segment if:
|
|
80
|
-
// - all the blocks are way behind the current slot
|
|
81
|
-
// - or we have already imported a post-merge parent of first block of this chain in forkchoice
|
|
82
|
-
const currentSlot = chain.clock.currentSlot;
|
|
83
|
-
const safeSlotsToImportOptimistically = opts.safeSlotsToImportOptimistically ?? SAFE_SLOTS_TO_IMPORT_OPTIMISTICALLY;
|
|
84
|
-
let isOptimisticallySafe = parentBlock.executionStatus !== ExecutionStatus.PreMerge ||
|
|
85
|
-
lastBlock.slot + safeSlotsToImportOptimistically < currentSlot;
|
|
86
39
|
for (let blockIndex = 0; blockIndex < blockInputs.length; blockIndex++) {
|
|
87
40
|
const blockInput = blockInputs[blockIndex];
|
|
88
41
|
// If blocks are invalid in consensus the main promise could resolve before this loop ends.
|
|
@@ -90,68 +43,14 @@ export async function verifyBlocksExecutionPayload(chain, parentBlock, blockInpu
|
|
|
90
43
|
if (signal.aborted) {
|
|
91
44
|
throw new ErrorAborted("verifyBlockExecutionPayloads");
|
|
92
45
|
}
|
|
93
|
-
const verifyResponse = await verifyBlockExecutionPayload(chain, blockInput, preState0
|
|
46
|
+
const verifyResponse = await verifyBlockExecutionPayload(chain, blockInput, preState0);
|
|
94
47
|
// If execError has happened, then we need to extract the segmentExecStatus and return
|
|
95
48
|
if (verifyResponse.execError !== null) {
|
|
96
49
|
return getSegmentErrorResponse({ verifyResponse, blockIndex }, parentBlock, blockInputs);
|
|
97
50
|
}
|
|
98
51
|
// If we are here then its because executionStatus is one of MaybeValidExecutionStatus
|
|
99
52
|
const { executionStatus } = verifyResponse;
|
|
100
|
-
// It becomes optimistically safe for following blocks if a post-merge block is deemed fit
|
|
101
|
-
// for import. If it would not have been safe verifyBlockExecutionPayload would have
|
|
102
|
-
// returned execError and loop would have been aborted
|
|
103
|
-
if (executionStatus !== ExecutionStatus.PreMerge) {
|
|
104
|
-
isOptimisticallySafe = true;
|
|
105
|
-
}
|
|
106
53
|
executionStatuses.push(executionStatus);
|
|
107
|
-
const blockBody = blockInput.getBlock().message.body;
|
|
108
|
-
const isMergeTransitionBlock =
|
|
109
|
-
// If the merge block is found, stop the search as the isMergeTransitionBlockFn condition
|
|
110
|
-
// will still evaluate to true for the following blocks leading to errors (while syncing)
|
|
111
|
-
// as the preState0 still belongs to the pre state of the first block on segment
|
|
112
|
-
mergeBlockFound === null &&
|
|
113
|
-
isExecutionStateType(preState0) &&
|
|
114
|
-
isExecutionBlockBodyType(blockBody) &&
|
|
115
|
-
isMergeTransitionBlockFn(preState0, blockBody);
|
|
116
|
-
// If this is a merge transition block, check to ensure if it references
|
|
117
|
-
// a valid terminal PoW block.
|
|
118
|
-
//
|
|
119
|
-
// However specs define this check to be run inside forkChoice's onBlock
|
|
120
|
-
// (https://github.com/ethereum/consensus-specs/blob/dev/specs/bellatrix/fork-choice.md#on_block)
|
|
121
|
-
// but we perform the check here (as inspired from the lighthouse impl)
|
|
122
|
-
//
|
|
123
|
-
// Reasons:
|
|
124
|
-
// 1. If the block is not valid, we should fail early and not wait till
|
|
125
|
-
// forkChoice import.
|
|
126
|
-
// 2. It makes logical sense to pair it with the block validations and
|
|
127
|
-
// deal it with the external services like eth1 tracker here than
|
|
128
|
-
// in import block
|
|
129
|
-
if (isMergeTransitionBlock) {
|
|
130
|
-
const mergeBlock = blockInput.getBlock().message;
|
|
131
|
-
const mergeBlockHash = toRootHex(chain.config.getForkTypes(mergeBlock.slot).BeaconBlock.hashTreeRoot(mergeBlock));
|
|
132
|
-
const powBlockRootHex = toRootHex(mergeBlock.body.executionPayload.parentHash);
|
|
133
|
-
const powBlock = await chain.eth1.getPowBlock(powBlockRootHex).catch((error) => {
|
|
134
|
-
// Lets just warn the user here, errors if any will be reported on
|
|
135
|
-
// `assertValidTerminalPowBlock` checks
|
|
136
|
-
chain.logger.warn("Error fetching terminal PoW block referred in the merge transition block", { powBlockHash: powBlockRootHex, mergeBlockHash }, error);
|
|
137
|
-
return null;
|
|
138
|
-
});
|
|
139
|
-
const powBlockParent = powBlock &&
|
|
140
|
-
(await chain.eth1.getPowBlock(powBlock.parentHash).catch((error) => {
|
|
141
|
-
// Lets just warn the user here, errors if any will be reported on
|
|
142
|
-
// `assertValidTerminalPowBlock` checks
|
|
143
|
-
chain.logger.warn("Error fetching parent of the terminal PoW block referred in the merge transition block", { powBlockParentHash: powBlock.parentHash, powBlock: powBlockRootHex, mergeBlockHash }, error);
|
|
144
|
-
return null;
|
|
145
|
-
}));
|
|
146
|
-
// executionStatus will never == ExecutionStatus.PreMerge if it's the mergeBlock. But gotta make TS happy =D
|
|
147
|
-
if (executionStatus === ExecutionStatus.PreMerge) {
|
|
148
|
-
throw Error("Merge block must not have executionStatus == PreMerge");
|
|
149
|
-
}
|
|
150
|
-
assertValidTerminalPowBlock(chain.config, mergeBlock, { executionStatus, powBlock, powBlockParent });
|
|
151
|
-
// Valid execution payload, but may not be in a valid beacon chain block. Delay printing the POS ACTIVATED banner
|
|
152
|
-
// to the end of the verify block routine, which confirms that this block is fully valid.
|
|
153
|
-
mergeBlockFound = mergeBlock;
|
|
154
|
-
}
|
|
155
54
|
}
|
|
156
55
|
const executionTime = Date.now();
|
|
157
56
|
if (blockInputs.length === 1 &&
|
|
@@ -172,28 +71,22 @@ export async function verifyBlocksExecutionPayload(chain, parentBlock, blockInpu
|
|
|
172
71
|
execAborted: null,
|
|
173
72
|
executionStatuses,
|
|
174
73
|
executionTime,
|
|
175
|
-
mergeBlockFound,
|
|
176
74
|
};
|
|
177
75
|
}
|
|
178
76
|
/**
|
|
179
77
|
* Verifies a single block execution payload by sending it to the EL client (via HTTP).
|
|
180
78
|
*/
|
|
181
|
-
export async function verifyBlockExecutionPayload(chain, blockInput, preState0
|
|
79
|
+
export async function verifyBlockExecutionPayload(chain, blockInput, preState0) {
|
|
182
80
|
const block = blockInput.getBlock();
|
|
183
81
|
/** Not null if execution is enabled */
|
|
184
82
|
const executionPayloadEnabled = isExecutionStateType(preState0) &&
|
|
185
83
|
isExecutionBlockBodyType(block.message.body) &&
|
|
186
|
-
// Safe to use with a state previous to block's preState. isMergeComplete can only transition from false to true.
|
|
187
|
-
// - If preState0 is after merge block: condition is true, and will always be true
|
|
188
|
-
// - If preState0 is before merge block: the block could lie but then state transition function will throw above
|
|
189
|
-
// It is kinda safe to send non-trusted payloads to the execution client because at most it can trigger sync.
|
|
190
|
-
// TODO: If this becomes a problem, do some basic verification beforehand, like checking the proposer signature.
|
|
191
84
|
isExecutionEnabled(preState0, block.message)
|
|
192
85
|
? block.message.body.executionPayload
|
|
193
86
|
: null;
|
|
194
87
|
if (!executionPayloadEnabled) {
|
|
195
|
-
//
|
|
196
|
-
return { executionStatus: ExecutionStatus.PreMerge, execError: null };
|
|
88
|
+
// Pre-merge block, no execution payload to verify
|
|
89
|
+
return { executionStatus: ExecutionStatus.PreMerge, lvhResponse: undefined, execError: null };
|
|
197
90
|
}
|
|
198
91
|
// TODO: Handle better notifyNewPayload() returning error is syncing
|
|
199
92
|
const fork = blockInput.forkName;
|
|
@@ -226,22 +119,10 @@ export async function verifyBlockExecutionPayload(chain, blockInput, preState0,
|
|
|
226
119
|
return { executionStatus, lvhResponse, execError };
|
|
227
120
|
}
|
|
228
121
|
// Accepted and Syncing have the same treatment, as final validation of block is pending
|
|
122
|
+
// Post-merge, we're always safe to optimistically import
|
|
229
123
|
case ExecutionPayloadStatus.ACCEPTED:
|
|
230
|
-
case ExecutionPayloadStatus.SYNCING:
|
|
231
|
-
// Check if the entire segment was deemed safe or, this block specifically itself if not in
|
|
232
|
-
// the safeSlotsToImportOptimistically window of current slot, then we can import else
|
|
233
|
-
// we need to throw and not import his block
|
|
234
|
-
const safeSlotsToImportOptimistically = opts.safeSlotsToImportOptimistically ?? SAFE_SLOTS_TO_IMPORT_OPTIMISTICALLY;
|
|
235
|
-
if (!isOptimisticallySafe && blockInput.slot + safeSlotsToImportOptimistically >= currentSlot) {
|
|
236
|
-
const execError = new BlockError(block, {
|
|
237
|
-
code: BlockErrorCode.EXECUTION_ENGINE_ERROR,
|
|
238
|
-
execStatus: ExecutionPayloadStatus.UNSAFE_OPTIMISTIC_STATUS,
|
|
239
|
-
errorMessage: `not safe to import ${execResult.status} payload within ${opts.safeSlotsToImportOptimistically} of currentSlot`,
|
|
240
|
-
});
|
|
241
|
-
return { executionStatus: null, execError };
|
|
242
|
-
}
|
|
124
|
+
case ExecutionPayloadStatus.SYNCING:
|
|
243
125
|
return { executionStatus: ExecutionStatus.Syncing, execError: null };
|
|
244
|
-
}
|
|
245
126
|
// If the block has is not valid, or it referenced an invalid terminal block then the
|
|
246
127
|
// block is invalid, however it has no bearing on any forkChoice cleanup
|
|
247
128
|
//
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"verifyBlocksExecutionPayloads.js","sourceRoot":"","sources":["../../../src/chain/blocks/verifyBlocksExecutionPayloads.ts"],"names":[],"mappings":"AACA,OAAO,EACL,eAAe,
|
|
1
|
+
{"version":3,"file":"verifyBlocksExecutionPayloads.js","sourceRoot":"","sources":["../../../src/chain/blocks/verifyBlocksExecutionPayloads.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { BeaconConfig } from "@lodestar/config";
|
|
2
|
+
import { CachedBeaconStateAllForks, Index2PubkeyCache } from "@lodestar/state-transition";
|
|
2
3
|
import { IndexedAttestation, SignedBeaconBlock } from "@lodestar/types";
|
|
3
4
|
import { Logger } from "@lodestar/utils";
|
|
4
5
|
import { Metrics } from "../../metrics/metrics.js";
|
|
@@ -11,7 +12,7 @@ import { ImportBlockOpts } from "./types.js";
|
|
|
11
12
|
*
|
|
12
13
|
* Since all data is known in advance all signatures are verified at once in parallel.
|
|
13
14
|
*/
|
|
14
|
-
export declare function verifyBlocksSignatures(bls: IBlsVerifier, logger: Logger, metrics: Metrics | null, preState0: CachedBeaconStateAllForks, blocks: SignedBeaconBlock[], indexedAttestationsByBlock: IndexedAttestation[][], opts: ImportBlockOpts): Promise<{
|
|
15
|
+
export declare function verifyBlocksSignatures(config: BeaconConfig, index2pubkey: Index2PubkeyCache, bls: IBlsVerifier, logger: Logger, metrics: Metrics | null, preState0: CachedBeaconStateAllForks, blocks: SignedBeaconBlock[], indexedAttestationsByBlock: IndexedAttestation[][], opts: ImportBlockOpts): Promise<{
|
|
15
16
|
verifySignaturesTime: number;
|
|
16
17
|
}>;
|
|
17
18
|
type AllValidRes = {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"verifyBlocksSignatures.d.ts","sourceRoot":"","sources":["../../../src/chain/blocks/verifyBlocksSignatures.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,yBAAyB,EAAwB,MAAM,4BAA4B,CAAC;
|
|
1
|
+
{"version":3,"file":"verifyBlocksSignatures.d.ts","sourceRoot":"","sources":["../../../src/chain/blocks/verifyBlocksSignatures.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,YAAY,EAAC,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAC,yBAAyB,EAAE,iBAAiB,EAAwB,MAAM,4BAA4B,CAAC;AAC/G,OAAO,EAAC,kBAAkB,EAAE,iBAAiB,EAAC,MAAM,iBAAiB,CAAC;AACtE,OAAO,EAAC,MAAM,EAAC,MAAM,iBAAiB,CAAC;AACvC,OAAO,EAAC,OAAO,EAAC,MAAM,0BAA0B,CAAC;AAEjD,OAAO,EAAC,YAAY,EAAC,MAAM,iBAAiB,CAAC;AAE7C,OAAO,EAAC,eAAe,EAAC,MAAM,YAAY,CAAC;AAE3C;;;;;;GAMG;AACH,wBAAsB,sBAAsB,CAC1C,MAAM,EAAE,YAAY,EACpB,YAAY,EAAE,iBAAiB,EAC/B,GAAG,EAAE,YAAY,EACjB,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,OAAO,GAAG,IAAI,EACvB,SAAS,EAAE,yBAAyB,EACpC,MAAM,EAAE,iBAAiB,EAAE,EAC3B,0BAA0B,EAAE,kBAAkB,EAAE,EAAE,EAClD,IAAI,EAAE,eAAe,GACpB,OAAO,CAAC;IAAC,oBAAoB,EAAE,MAAM,CAAA;CAAC,CAAC,CA4DzC;AAED,KAAK,WAAW,GAAG;IAAC,QAAQ,EAAE,IAAI,CAAA;CAAC,GAAG;IAAC,QAAQ,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAC,CAAC;AAEvE;;;;GAIG;AACH,wBAAgB,iCAAiC,CAAC,eAAe,EAAE,OAAO,CAAC,OAAO,CAAC,EAAE,GAAG,OAAO,CAAC,WAAW,CAAC,CAoB3G"}
|
|
@@ -8,9 +8,10 @@ import { BlockError, BlockErrorCode } from "../errors/blockError.js";
|
|
|
8
8
|
*
|
|
9
9
|
* Since all data is known in advance all signatures are verified at once in parallel.
|
|
10
10
|
*/
|
|
11
|
-
export async function verifyBlocksSignatures(bls, logger, metrics, preState0, blocks, indexedAttestationsByBlock, opts) {
|
|
11
|
+
export async function verifyBlocksSignatures(config, index2pubkey, bls, logger, metrics, preState0, blocks, indexedAttestationsByBlock, opts) {
|
|
12
12
|
const isValidPromises = [];
|
|
13
13
|
const recvToValLatency = Date.now() / 1000 - (opts.seenTimestampSec ?? Date.now() / 1000);
|
|
14
|
+
const currentSyncCommitteeIndexed = preState0.epochCtx.currentSyncCommitteeIndexed;
|
|
14
15
|
// Verifies signatures after running state transition, so all SyncCommittee signed roots are known at this point.
|
|
15
16
|
// We must ensure block.slot <= state.slot before running getAllBlockSignatureSets().
|
|
16
17
|
// NOTE: If in the future multiple blocks signatures are verified at once, all blocks must be in the same epoch
|
|
@@ -22,7 +23,7 @@ export async function verifyBlocksSignatures(bls, logger, metrics, preState0, bl
|
|
|
22
23
|
Promise.resolve(true)
|
|
23
24
|
: //
|
|
24
25
|
// Verify signatures per block to track which block is invalid
|
|
25
|
-
bls.verifySignatureSets(getBlockSignatureSets(
|
|
26
|
+
bls.verifySignatureSets(getBlockSignatureSets(config, index2pubkey, currentSyncCommitteeIndexed, block, indexedAttestationsByBlock[i], {
|
|
26
27
|
skipProposerSignature: opts.validProposerSignature,
|
|
27
28
|
}));
|
|
28
29
|
// getBlockSignatureSets() takes 45ms in benchmarks for 2022Q2 mainnet blocks (100 sigs). When syncing a 32 blocks
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"verifyBlocksSignatures.js","sourceRoot":"","sources":["../../../src/chain/blocks/verifyBlocksSignatures.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"verifyBlocksSignatures.js","sourceRoot":"","sources":["../../../src/chain/blocks/verifyBlocksSignatures.ts"],"names":[],"mappings":"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"}
|
package/lib/chain/chain.d.ts
CHANGED
|
@@ -4,11 +4,10 @@ import { CompositeTypeAny, TreeView, Type } from "@chainsafe/ssz";
|
|
|
4
4
|
import { BeaconConfig } from "@lodestar/config";
|
|
5
5
|
import { CheckpointWithHex, IForkChoice, ProtoBlock } from "@lodestar/fork-choice";
|
|
6
6
|
import { BeaconStateAllForks, CachedBeaconStateAllForks, EpochShuffling, Index2PubkeyCache } from "@lodestar/state-transition";
|
|
7
|
-
import { BeaconBlock, BlindedBeaconBlock, Epoch, Root, RootHex, SignedBeaconBlock, Slot, Status, UintNum64, ValidatorIndex, Wei, phase0 } from "@lodestar/types";
|
|
7
|
+
import { BeaconBlock, BlindedBeaconBlock, Epoch, Root, RootHex, SignedBeaconBlock, Slot, Status, UintNum64, ValidatorIndex, Wei, phase0, rewards } from "@lodestar/types";
|
|
8
8
|
import { Logger } from "@lodestar/utils";
|
|
9
9
|
import { ProcessShutdownCallback } from "@lodestar/validator";
|
|
10
10
|
import { IBeaconDb } from "../db/index.js";
|
|
11
|
-
import { IEth1ForBlockProduction } from "../eth1/index.js";
|
|
12
11
|
import { IExecutionBuilder, IExecutionEngine } from "../execution/index.js";
|
|
13
12
|
import { Metrics } from "../metrics/index.js";
|
|
14
13
|
import { BufferPool } from "../util/bufferPool.js";
|
|
@@ -33,9 +32,6 @@ import { AssembledBlockType, BlockType, ProduceResult } from "./produceBlock/ind
|
|
|
33
32
|
import { BlockAttributes } from "./produceBlock/produceBlockBody.js";
|
|
34
33
|
import { QueuedStateRegenerator, RegenCaller } from "./regen/index.js";
|
|
35
34
|
import { ReprocessController } from "./reprocess.js";
|
|
36
|
-
import { AttestationsRewards } from "./rewards/attestationsRewards.js";
|
|
37
|
-
import { BlockRewards } from "./rewards/blockRewards.js";
|
|
38
|
-
import { SyncCommitteeRewards } from "./rewards/syncCommitteeRewards.js";
|
|
39
35
|
import { SeenAggregators, SeenAttesters, SeenBlockProposers, SeenContributionAndProof, SeenSyncCommitteeMessages } from "./seenCache/index.js";
|
|
40
36
|
import { SeenAggregatedAttestations } from "./seenCache/seenAggregateAndProof.js";
|
|
41
37
|
import { SeenAttestationDatas } from "./seenCache/seenAttestationData.js";
|
|
@@ -46,7 +42,6 @@ import { ValidatorMonitor } from "./validatorMonitor.js";
|
|
|
46
42
|
export declare class BeaconChain implements IBeaconChain {
|
|
47
43
|
readonly genesisTime: UintNum64;
|
|
48
44
|
readonly genesisValidatorsRoot: Root;
|
|
49
|
-
readonly eth1: IEth1ForBlockProduction;
|
|
50
45
|
readonly executionEngine: IExecutionEngine;
|
|
51
46
|
readonly executionBuilder?: IExecutionBuilder;
|
|
52
47
|
readonly config: BeaconConfig;
|
|
@@ -102,9 +97,11 @@ export declare class BeaconChain implements IBeaconChain {
|
|
|
102
97
|
private _earliestAvailableSlot;
|
|
103
98
|
get earliestAvailableSlot(): Slot;
|
|
104
99
|
set earliestAvailableSlot(slot: Slot);
|
|
105
|
-
constructor(opts: IChainOptions, { privateKey, config, db, dbName, dataDir, logger, processShutdownCallback, clock, metrics, validatorMonitor, anchorState, isAnchorStateFinalized,
|
|
100
|
+
constructor(opts: IChainOptions, { privateKey, config, pubkey2index, index2pubkey, db, dbName, dataDir, logger, processShutdownCallback, clock, metrics, validatorMonitor, anchorState, isAnchorStateFinalized, executionEngine, executionBuilder, }: {
|
|
106
101
|
privateKey: PrivateKey;
|
|
107
102
|
config: BeaconConfig;
|
|
103
|
+
pubkey2index: PubkeyIndexMap;
|
|
104
|
+
index2pubkey: Index2PubkeyCache;
|
|
108
105
|
db: IBeaconDb;
|
|
109
106
|
dbName: string;
|
|
110
107
|
dataDir: string;
|
|
@@ -114,9 +111,8 @@ export declare class BeaconChain implements IBeaconChain {
|
|
|
114
111
|
clock?: IClock;
|
|
115
112
|
metrics: Metrics | null;
|
|
116
113
|
validatorMonitor: ValidatorMonitor | null;
|
|
117
|
-
anchorState:
|
|
114
|
+
anchorState: CachedBeaconStateAllForks;
|
|
118
115
|
isAnchorStateFinalized: boolean;
|
|
119
|
-
eth1: IEth1ForBlockProduction;
|
|
120
116
|
executionEngine: IExecutionEngine;
|
|
121
117
|
executionBuilder?: IExecutionBuilder;
|
|
122
118
|
});
|
|
@@ -245,12 +241,12 @@ export declare class BeaconChain implements IBeaconChain {
|
|
|
245
241
|
updateBeaconProposerData(epoch: Epoch, proposers: ProposerPreparationData[]): Promise<void>;
|
|
246
242
|
private updateValidatorsCustodyRequirement;
|
|
247
243
|
updateBuilderStatus(clockSlot: Slot): void;
|
|
248
|
-
getBlockRewards(block: BeaconBlock | BlindedBeaconBlock): Promise<BlockRewards>;
|
|
244
|
+
getBlockRewards(block: BeaconBlock | BlindedBeaconBlock): Promise<rewards.BlockRewards>;
|
|
249
245
|
getAttestationsRewards(epoch: Epoch, validatorIds?: (ValidatorIndex | string)[]): Promise<{
|
|
250
|
-
rewards: AttestationsRewards;
|
|
246
|
+
rewards: rewards.AttestationsRewards;
|
|
251
247
|
executionOptimistic: boolean;
|
|
252
248
|
finalized: boolean;
|
|
253
249
|
}>;
|
|
254
|
-
getSyncCommitteeRewards(block: BeaconBlock | BlindedBeaconBlock, validatorIds?: (ValidatorIndex | string)[]): Promise<SyncCommitteeRewards>;
|
|
250
|
+
getSyncCommitteeRewards(block: BeaconBlock | BlindedBeaconBlock, validatorIds?: (ValidatorIndex | string)[]): Promise<rewards.SyncCommitteeRewards>;
|
|
255
251
|
}
|
|
256
252
|
//# sourceMappingURL=chain.d.ts.map
|
package/lib/chain/chain.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chain.d.ts","sourceRoot":"","sources":["../../src/chain/chain.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,UAAU,EAAC,MAAM,mBAAmB,CAAC;AAC7C,OAAO,EAAC,cAAc,EAAC,MAAM,6BAA6B,CAAC;AAC3D,OAAO,EAAC,gBAAgB,EAAE,QAAQ,EAAE,IAAI,EAAC,MAAM,gBAAgB,CAAC;AAChE,OAAO,EAAC,YAAY,EAAC,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAC,iBAAiB,
|
|
1
|
+
{"version":3,"file":"chain.d.ts","sourceRoot":"","sources":["../../src/chain/chain.ts"],"names":[],"mappings":"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"}
|
package/lib/chain/chain.js
CHANGED
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
import path from "node:path";
|
|
2
|
-
import {
|
|
3
|
-
import { ExecutionStatus, UpdateHeadOpt } from "@lodestar/fork-choice";
|
|
2
|
+
import { UpdateHeadOpt } from "@lodestar/fork-choice";
|
|
4
3
|
import { EFFECTIVE_BALANCE_INCREMENT, GENESIS_SLOT, SLOTS_PER_EPOCH, isForkPostElectra } from "@lodestar/params";
|
|
5
|
-
import { computeAnchorCheckpoint, computeEndSlotAtEpoch, computeEpochAtSlot, computeStartSlotAtEpoch,
|
|
4
|
+
import { computeAnchorCheckpoint, computeAttestationsRewards, computeBlockRewards, computeEndSlotAtEpoch, computeEpochAtSlot, computeStartSlotAtEpoch, computeSyncCommitteeRewards, getEffectiveBalanceIncrementsZeroInactive, getEffectiveBalancesFromStateBytes, processSlots, } from "@lodestar/state-transition";
|
|
6
5
|
import { isBlindedBeaconBlock, } from "@lodestar/types";
|
|
7
6
|
import { fromHex, gweiToWei, isErrorAborted, pruneSetToMax, sleep, toRootHex } from "@lodestar/utils";
|
|
8
7
|
import { GENESIS_EPOCH, ZERO_HASH } from "../constants/index.js";
|
|
@@ -32,9 +31,6 @@ import { BlockType } from "./produceBlock/index.js";
|
|
|
32
31
|
import { produceBlockBody, produceCommonBlockBody } from "./produceBlock/produceBlockBody.js";
|
|
33
32
|
import { QueuedStateRegenerator, RegenCaller } from "./regen/index.js";
|
|
34
33
|
import { ReprocessController } from "./reprocess.js";
|
|
35
|
-
import { computeAttestationsRewards } from "./rewards/attestationsRewards.js";
|
|
36
|
-
import { computeBlockRewards } from "./rewards/blockRewards.js";
|
|
37
|
-
import { computeSyncCommitteeRewards } from "./rewards/syncCommitteeRewards.js";
|
|
38
34
|
import { SeenAggregators, SeenAttesters, SeenBlockProposers, SeenContributionAndProof, SeenSyncCommitteeMessages, } from "./seenCache/index.js";
|
|
39
35
|
import { SeenAggregatedAttestations } from "./seenCache/seenAggregateAndProof.js";
|
|
40
36
|
import { SeenAttestationDatas } from "./seenCache/seenAttestationData.js";
|
|
@@ -58,7 +54,6 @@ const DEFAULT_MAX_CACHED_PRODUCED_RESULTS = 4;
|
|
|
58
54
|
export class BeaconChain {
|
|
59
55
|
genesisTime;
|
|
60
56
|
genesisValidatorsRoot;
|
|
61
|
-
eth1;
|
|
62
57
|
executionEngine;
|
|
63
58
|
executionBuilder;
|
|
64
59
|
// Expose config for convenience in modularized functions
|
|
@@ -82,7 +77,7 @@ export class BeaconChain {
|
|
|
82
77
|
aggregatedAttestationPool;
|
|
83
78
|
syncCommitteeMessagePool;
|
|
84
79
|
syncContributionAndProofPool;
|
|
85
|
-
opPool
|
|
80
|
+
opPool;
|
|
86
81
|
// Gossip seen cache
|
|
87
82
|
seenAttesters = new SeenAttesters();
|
|
88
83
|
seenAggregators = new SeenAggregators();
|
|
@@ -127,7 +122,7 @@ export class BeaconChain {
|
|
|
127
122
|
this.emitter.emit(ChainEvent.updateStatus);
|
|
128
123
|
}
|
|
129
124
|
}
|
|
130
|
-
constructor(opts, { privateKey, config, db, dbName, dataDir, logger, processShutdownCallback, clock, metrics, validatorMonitor, anchorState, isAnchorStateFinalized,
|
|
125
|
+
constructor(opts, { privateKey, config, pubkey2index, index2pubkey, db, dbName, dataDir, logger, processShutdownCallback, clock, metrics, validatorMonitor, anchorState, isAnchorStateFinalized, executionEngine, executionBuilder, }) {
|
|
131
126
|
this.opts = opts;
|
|
132
127
|
this.config = config;
|
|
133
128
|
this.db = db;
|
|
@@ -138,7 +133,6 @@ export class BeaconChain {
|
|
|
138
133
|
this.genesisTime = anchorState.genesisTime;
|
|
139
134
|
this.anchorStateLatestBlockSlot = anchorState.latestBlockHeader.slot;
|
|
140
135
|
this.genesisValidatorsRoot = anchorState.genesisValidatorsRoot;
|
|
141
|
-
this.eth1 = eth1;
|
|
142
136
|
this.executionEngine = executionEngine;
|
|
143
137
|
this.executionBuilder = executionBuilder;
|
|
144
138
|
const signal = this.abortController.signal;
|
|
@@ -154,6 +148,7 @@ export class BeaconChain {
|
|
|
154
148
|
this.aggregatedAttestationPool = new AggregatedAttestationPool(this.config, metrics);
|
|
155
149
|
this.syncCommitteeMessagePool = new SyncCommitteeMessagePool(config, clock, this.opts?.preaggregateSlotDistance);
|
|
156
150
|
this.syncContributionAndProofPool = new SyncContributionAndProofPool(config, clock, metrics, logger);
|
|
151
|
+
this.opPool = new OpPool(config);
|
|
157
152
|
this.seenAggregatedAttestations = new SeenAggregatedAttestations(metrics);
|
|
158
153
|
this.seenContributionAndProof = new SeenContributionAndProof(metrics);
|
|
159
154
|
this.seenAttestationDatas = new SeenAttestationDatas(metrics, this.opts?.attDataCacheSlotDistance);
|
|
@@ -176,36 +171,24 @@ export class BeaconChain {
|
|
|
176
171
|
metrics,
|
|
177
172
|
logger,
|
|
178
173
|
});
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
// pubkeys takes ~30 seconds for 350k keys (mainnet 2022Q2).
|
|
182
|
-
// When the BeaconStateCache is created in eth1 genesis builder it may be incorrect. Until we can ensure that
|
|
183
|
-
// it's safe to re-use _ANY_ BeaconStateCache, this option is disabled by default and only used in tests.
|
|
184
|
-
const cachedState = isCachedBeaconState(anchorState) && opts.skipCreateStateCacheIfAvailable
|
|
185
|
-
? anchorState
|
|
186
|
-
: createCachedBeaconState(anchorState, {
|
|
187
|
-
config,
|
|
188
|
-
pubkey2index: new PubkeyIndexMap(),
|
|
189
|
-
index2pubkey: [],
|
|
190
|
-
});
|
|
191
|
-
this._earliestAvailableSlot = cachedState.slot;
|
|
192
|
-
this.shufflingCache = cachedState.epochCtx.shufflingCache = new ShufflingCache(metrics, logger, this.opts, [
|
|
174
|
+
this._earliestAvailableSlot = anchorState.slot;
|
|
175
|
+
this.shufflingCache = anchorState.epochCtx.shufflingCache = new ShufflingCache(metrics, logger, this.opts, [
|
|
193
176
|
{
|
|
194
|
-
shuffling:
|
|
195
|
-
decisionRoot:
|
|
177
|
+
shuffling: anchorState.epochCtx.previousShuffling,
|
|
178
|
+
decisionRoot: anchorState.epochCtx.previousDecisionRoot,
|
|
196
179
|
},
|
|
197
180
|
{
|
|
198
|
-
shuffling:
|
|
199
|
-
decisionRoot:
|
|
181
|
+
shuffling: anchorState.epochCtx.currentShuffling,
|
|
182
|
+
decisionRoot: anchorState.epochCtx.currentDecisionRoot,
|
|
200
183
|
},
|
|
201
184
|
{
|
|
202
|
-
shuffling:
|
|
203
|
-
decisionRoot:
|
|
185
|
+
shuffling: anchorState.epochCtx.nextShuffling,
|
|
186
|
+
decisionRoot: anchorState.epochCtx.nextDecisionRoot,
|
|
204
187
|
},
|
|
205
188
|
]);
|
|
206
|
-
//
|
|
207
|
-
this.pubkey2index =
|
|
208
|
-
this.index2pubkey =
|
|
189
|
+
// Global cache of validators pubkey/index mapping
|
|
190
|
+
this.pubkey2index = pubkey2index;
|
|
191
|
+
this.index2pubkey = index2pubkey;
|
|
209
192
|
const fileDataStore = opts.nHistoricalStatesFileDataStore ?? true;
|
|
210
193
|
const blockStateCache = this.opts.nHistoricalStates
|
|
211
194
|
? new FIFOBlockStateCache(this.opts, { metrics })
|
|
@@ -218,6 +201,7 @@ export class BeaconChain {
|
|
|
218
201
|
if (this.opts.nHistoricalStates) {
|
|
219
202
|
this.cpStateDatastore = fileDataStore ? new FileCPStateDatastore(dataDir) : new DbCPStateDatastore(this.db);
|
|
220
203
|
checkpointStateCache = new PersistentCheckpointStateCache({
|
|
204
|
+
config,
|
|
221
205
|
metrics,
|
|
222
206
|
logger,
|
|
223
207
|
clock,
|
|
@@ -230,10 +214,10 @@ export class BeaconChain {
|
|
|
230
214
|
checkpointStateCache = new InMemoryCheckpointStateCache({ metrics });
|
|
231
215
|
}
|
|
232
216
|
const { checkpoint } = computeAnchorCheckpoint(config, anchorState);
|
|
233
|
-
blockStateCache.add(
|
|
234
|
-
blockStateCache.setHeadState(
|
|
235
|
-
checkpointStateCache.add(checkpoint,
|
|
236
|
-
const forkChoice = initializeForkChoice(config, emitter, clock.currentSlot,
|
|
217
|
+
blockStateCache.add(anchorState);
|
|
218
|
+
blockStateCache.setHeadState(anchorState);
|
|
219
|
+
checkpointStateCache.add(checkpoint, anchorState);
|
|
220
|
+
const forkChoice = initializeForkChoice(config, emitter, clock.currentSlot, anchorState, isAnchorStateFinalized, opts, this.justifiedBalancesGetter.bind(this), metrics, logger);
|
|
237
221
|
const regen = new QueuedStateRegenerator({
|
|
238
222
|
config,
|
|
239
223
|
forkChoice,
|
|
@@ -271,14 +255,6 @@ export class BeaconChain {
|
|
|
271
255
|
config,
|
|
272
256
|
});
|
|
273
257
|
this.archiveStore = new ArchiveStore({ db, chain: this, logger: logger, metrics }, { ...opts, dbName, anchorState: { finalizedCheckpoint: anchorState.finalizedCheckpoint } }, signal);
|
|
274
|
-
// Stop polling eth1 data if anchor state is in Electra AND deposit_requests_start_index is reached
|
|
275
|
-
const anchorStateFork = this.config.getForkName(anchorState.slot);
|
|
276
|
-
if (isForkPostElectra(anchorStateFork)) {
|
|
277
|
-
const { eth1DepositIndex, depositRequestsStartIndex } = anchorState;
|
|
278
|
-
if (eth1DepositIndex === Number(depositRequestsStartIndex)) {
|
|
279
|
-
this.eth1.stopPollingEth1Data();
|
|
280
|
-
}
|
|
281
|
-
}
|
|
282
258
|
// always run PrepareNextSlotScheduler except for fork_choice spec tests
|
|
283
259
|
if (!opts?.disablePrepareNextSlot) {
|
|
284
260
|
new PrepareNextSlotScheduler(this, this.config, metrics, this.logger, signal);
|
|
@@ -510,7 +486,7 @@ export class BeaconChain {
|
|
|
510
486
|
async produceBlockWrapper(blockType, { randaoReveal, graffiti, slot, feeRecipient, commonBlockBodyPromise, parentBlockRoot, }) {
|
|
511
487
|
const state = await this.regen.getBlockSlotState(toRootHex(parentBlockRoot), slot, { dontTransferCache: true }, RegenCaller.produceBlock);
|
|
512
488
|
const proposerIndex = state.epochCtx.getBeaconProposer(slot);
|
|
513
|
-
const proposerPubKey =
|
|
489
|
+
const proposerPubKey = this.index2pubkey[proposerIndex].toBytes();
|
|
514
490
|
const { body, produceResult, executionPayloadValue, shouldOverrideBuilder } = await produceBlockBody.call(this, blockType, state, {
|
|
515
491
|
randaoReveal,
|
|
516
492
|
graffiti,
|
|
@@ -847,16 +823,6 @@ export class BeaconChain {
|
|
|
847
823
|
this.seenAggregatedAttestations.prune(epoch);
|
|
848
824
|
this.seenBlockAttesters.prune(epoch);
|
|
849
825
|
this.beaconProposerCache.prune(epoch);
|
|
850
|
-
// Poll for merge block in the background to speed-up block production. Only if:
|
|
851
|
-
// - after BELLATRIX_FORK_EPOCH
|
|
852
|
-
// - Beacon node synced
|
|
853
|
-
// - head state not isMergeTransitionComplete
|
|
854
|
-
if (this.config.BELLATRIX_FORK_EPOCH - epoch < 1) {
|
|
855
|
-
const head = this.forkChoice.getHead();
|
|
856
|
-
if (epoch - computeEpochAtSlot(head.slot) < 5 && head.executionStatus === ExecutionStatus.PreMerge) {
|
|
857
|
-
this.eth1.startPollingMergeBlock();
|
|
858
|
-
}
|
|
859
|
-
}
|
|
860
826
|
}
|
|
861
827
|
onNewHead(head) {
|
|
862
828
|
this.syncContributionAndProofPool.prune(head.slot);
|
|
@@ -977,7 +943,7 @@ export class BeaconChain {
|
|
|
977
943
|
}
|
|
978
944
|
preState = processSlots(preState, block.slot); // Dial preState's slot to block.slot
|
|
979
945
|
const postState = this.regen.getStateSync(toRootHex(block.stateRoot)) ?? undefined;
|
|
980
|
-
return computeBlockRewards(block, preState.clone(), postState?.clone());
|
|
946
|
+
return computeBlockRewards(this.config, block, preState.clone(), postState?.clone());
|
|
981
947
|
}
|
|
982
948
|
async getAttestationsRewards(epoch, validatorIds) {
|
|
983
949
|
// We use end slot of (epoch + 1) to ensure we have seen all attestations. On-time or late. Any late attestation beyond this slot is not considered
|
|
@@ -992,7 +958,7 @@ export class BeaconChain {
|
|
|
992
958
|
if (cachedState === null) {
|
|
993
959
|
throw Error(`State is not in cache for slot ${slot}`);
|
|
994
960
|
}
|
|
995
|
-
const rewards = await computeAttestationsRewards(
|
|
961
|
+
const rewards = await computeAttestationsRewards(this.config, this.pubkey2index, cachedState, validatorIds);
|
|
996
962
|
return { rewards, executionOptimistic, finalized };
|
|
997
963
|
}
|
|
998
964
|
async getSyncCommitteeRewards(block, validatorIds) {
|
|
@@ -1001,7 +967,7 @@ export class BeaconChain {
|
|
|
1001
967
|
throw Error(`Pre-state is unavailable given block's parent root ${toRootHex(block.parentRoot)}`);
|
|
1002
968
|
}
|
|
1003
969
|
preState = processSlots(preState, block.slot); // Dial preState's slot to block.slot
|
|
1004
|
-
return computeSyncCommitteeRewards(block, preState.clone(), validatorIds);
|
|
970
|
+
return computeSyncCommitteeRewards(this.config, this.index2pubkey, block, preState.clone(), validatorIds);
|
|
1005
971
|
}
|
|
1006
972
|
}
|
|
1007
973
|
//# sourceMappingURL=chain.js.map
|