@lodestar/beacon-node 1.38.0 → 1.39.0-dev.0321dbcf04
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/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 +5 -6
- package/lib/chain/opPools/aggregatedAttestationPool.d.ts.map +1 -1
- package/lib/chain/opPools/aggregatedAttestationPool.js +7 -132
- 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 +33 -99
- 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 -3
- 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.d.ts.map +1 -1
- package/lib/chain/validation/blsToExecutionChange.js +10 -3
- package/lib/chain/validation/blsToExecutionChange.js.map +1 -1
- package/lib/chain/validation/dataColumnSidecar.d.ts.map +1 -1
- package/lib/chain/validation/dataColumnSidecar.js +2 -3
- package/lib/chain/validation/dataColumnSidecar.js.map +1 -1
- package/lib/chain/validation/proposerSlashing.js +3 -2
- 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 +11 -12
- package/lib/execution/engine/mock.d.ts.map +1 -1
- package/lib/execution/engine/mock.js +38 -22
- 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/network/peers/discover.d.ts.map +1 -1
- package/lib/network/peers/discover.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 +30 -12
- 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.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 +2 -2
- 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 +28 -27
- 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 +9 -184
- 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 +34 -133
- package/src/chain/stateCache/persistentCheckpointsCache.ts +15 -2
- package/src/chain/validation/aggregateAndProof.ts +12 -0
- package/src/chain/validation/attesterSlashing.ts +14 -2
- package/src/chain/validation/blobSidecar.ts +11 -3
- package/src/chain/validation/block.ts +1 -1
- package/src/chain/validation/blsToExecutionChange.ts +10 -8
- package/src/chain/validation/dataColumnSidecar.ts +8 -3
- package/src/chain/validation/proposerSlashing.ts +8 -2
- 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 +44 -30
- 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/network/peers/discover.ts +3 -3
- package/src/node/nodejs.ts +37 -13
- 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 +2 -2
- package/src/sync/backfill/verify.ts +4 -3
- 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
package/src/index.ts
CHANGED
|
@@ -2,11 +2,10 @@
|
|
|
2
2
|
|
|
3
3
|
export type {RestApiServerMetrics, RestApiServerModules, RestApiServerOpts} from "./api/rest/base.js";
|
|
4
4
|
export {RestApiServer} from "./api/rest/base.js";
|
|
5
|
-
export {checkAndPersistAnchorState, initStateFromDb
|
|
5
|
+
export {checkAndPersistAnchorState, initStateFromDb} from "./chain/index.js";
|
|
6
6
|
export {DbCPStateDatastore} from "./chain/stateCache/datastore/db.js";
|
|
7
7
|
export {FileCPStateDatastore} from "./chain/stateCache/datastore/file.js";
|
|
8
8
|
export {BeaconDb, type IBeaconDb} from "./db/index.js";
|
|
9
|
-
export {Eth1Provider, type IEth1Provider} from "./eth1/index.js";
|
|
10
9
|
// Export metrics utilities to de-duplicate validator metrics
|
|
11
10
|
export {
|
|
12
11
|
type HttpMetricsServer,
|
|
@@ -1619,150 +1619,6 @@ export function createLodestarMetrics(
|
|
|
1619
1619
|
}),
|
|
1620
1620
|
},
|
|
1621
1621
|
|
|
1622
|
-
eth1: {
|
|
1623
|
-
depositTrackerIsCaughtup: register.gauge({
|
|
1624
|
-
name: "lodestar_eth1_deposit_tracker_is_caughtup",
|
|
1625
|
-
help: "Eth1 deposit is caught up 0=false 1=true",
|
|
1626
|
-
}),
|
|
1627
|
-
depositTrackerUpdateErrors: register.gauge({
|
|
1628
|
-
name: "lodestar_eth1_deposit_tracker_update_errors_total",
|
|
1629
|
-
help: "Eth1 deposit update loop errors total",
|
|
1630
|
-
}),
|
|
1631
|
-
remoteHighestBlock: register.gauge({
|
|
1632
|
-
name: "lodestar_eth1_remote_highest_block",
|
|
1633
|
-
help: "Eth1 current highest block number",
|
|
1634
|
-
}),
|
|
1635
|
-
depositEventsFetched: register.gauge({
|
|
1636
|
-
name: "lodestar_eth1_deposit_events_fetched_total",
|
|
1637
|
-
help: "Eth1 deposit events fetched total",
|
|
1638
|
-
}),
|
|
1639
|
-
lastProcessedDepositBlockNumber: register.gauge({
|
|
1640
|
-
name: "lodestar_eth1_last_processed_deposit_block_number",
|
|
1641
|
-
help: "Eth1 deposit tracker lastProcessedDepositBlockNumber",
|
|
1642
|
-
}),
|
|
1643
|
-
blocksFetched: register.gauge({
|
|
1644
|
-
name: "lodestar_eth1_blocks_fetched_total",
|
|
1645
|
-
help: "Eth1 blocks fetched total",
|
|
1646
|
-
}),
|
|
1647
|
-
lastFetchedBlockBlockNumber: register.gauge({
|
|
1648
|
-
name: "lodestar_eth1_last_fetched_block_block_number",
|
|
1649
|
-
help: "Eth1 deposit tracker last fetched block's block number",
|
|
1650
|
-
}),
|
|
1651
|
-
lastFetchedBlockTimestamp: register.gauge({
|
|
1652
|
-
name: "lodestar_eth1_last_fetched_block_timestamp",
|
|
1653
|
-
help: "Eth1 deposit tracker last fetched block's timestamp",
|
|
1654
|
-
}),
|
|
1655
|
-
eth1FollowDistanceSecondsConfig: register.gauge({
|
|
1656
|
-
name: "lodestar_eth1_follow_distance_seconds_config",
|
|
1657
|
-
help: "Constant with value = SECONDS_PER_ETH1_BLOCK * ETH1_FOLLOW_DISTANCE",
|
|
1658
|
-
}),
|
|
1659
|
-
eth1FollowDistanceDynamic: register.gauge({
|
|
1660
|
-
name: "lodestar_eth1_follow_distance_dynamic",
|
|
1661
|
-
help: "Eth1 dynamic follow distance changed by the deposit tracker if blocks are slow",
|
|
1662
|
-
}),
|
|
1663
|
-
eth1GetBlocksBatchSizeDynamic: register.gauge({
|
|
1664
|
-
name: "lodestar_eth1_blocks_batch_size_dynamic",
|
|
1665
|
-
help: "Dynamic batch size to fetch blocks",
|
|
1666
|
-
}),
|
|
1667
|
-
eth1GetLogsBatchSizeDynamic: register.gauge({
|
|
1668
|
-
name: "lodestar_eth1_logs_batch_size_dynamic",
|
|
1669
|
-
help: "Dynamic batch size to fetch deposit logs",
|
|
1670
|
-
}),
|
|
1671
|
-
|
|
1672
|
-
// Merge Search info
|
|
1673
|
-
eth1MergeStatus: register.gauge({
|
|
1674
|
-
name: "lodestar_eth1_merge_status",
|
|
1675
|
-
help: "Eth1 Merge Status 0 PRE_MERGE 1 SEARCHING 2 FOUND 3 POST_MERGE",
|
|
1676
|
-
}),
|
|
1677
|
-
eth1MergeTDFactor: register.gauge({
|
|
1678
|
-
name: "lodestar_eth1_merge_td_factor",
|
|
1679
|
-
help: "TTD set for the merge",
|
|
1680
|
-
}),
|
|
1681
|
-
eth1MergeTTD: register.gauge({
|
|
1682
|
-
name: "lodestar_eth1_merge_ttd",
|
|
1683
|
-
help: "TTD set for the merge scaled down by td_factor",
|
|
1684
|
-
}),
|
|
1685
|
-
|
|
1686
|
-
eth1PollMergeBlockErrors: register.gauge({
|
|
1687
|
-
name: "lodestar_eth1_poll_merge_block_errors_total",
|
|
1688
|
-
help: "Total count of errors polling merge block",
|
|
1689
|
-
}),
|
|
1690
|
-
getTerminalPowBlockPromiseCacheHit: register.gauge({
|
|
1691
|
-
name: "lodestar_eth1_get_terminal_pow_block_promise_cache_hit_total",
|
|
1692
|
-
help: "Total count of skipped runs in poll merge block, because a previous promise existed",
|
|
1693
|
-
}),
|
|
1694
|
-
eth1ParentBlocksFetched: register.gauge({
|
|
1695
|
-
name: "lodestar_eth1_parent_blocks_fetched_total",
|
|
1696
|
-
help: "Total count of parent blocks fetched searching for merge block",
|
|
1697
|
-
}),
|
|
1698
|
-
|
|
1699
|
-
// Latest block details
|
|
1700
|
-
eth1LatestBlockTD: register.gauge({
|
|
1701
|
-
name: "lodestar_eth1_latest_block_ttd",
|
|
1702
|
-
help: "Eth1 latest Block td scaled down by td_factor",
|
|
1703
|
-
}),
|
|
1704
|
-
eth1LatestBlockNumber: register.gauge({
|
|
1705
|
-
name: "lodestar_eth1_latest_block_number",
|
|
1706
|
-
help: "Eth1 latest block number",
|
|
1707
|
-
}),
|
|
1708
|
-
eth1LatestBlockTimestamp: register.gauge({
|
|
1709
|
-
name: "lodestar_eth1_latest_block_timestamp",
|
|
1710
|
-
help: "Eth1 latest block timestamp",
|
|
1711
|
-
}),
|
|
1712
|
-
|
|
1713
|
-
// Merge details
|
|
1714
|
-
eth1MergeBlockDetails: register.gauge<{
|
|
1715
|
-
terminalBlockHash: string;
|
|
1716
|
-
terminalBlockNumber: string;
|
|
1717
|
-
terminalBlockTD: string;
|
|
1718
|
-
}>({
|
|
1719
|
-
name: "lodestar_eth1_merge_block_details",
|
|
1720
|
-
help: "If found then 1 with terminal block details",
|
|
1721
|
-
labelNames: ["terminalBlockHash", "terminalBlockNumber", "terminalBlockTD"],
|
|
1722
|
-
}),
|
|
1723
|
-
},
|
|
1724
|
-
|
|
1725
|
-
eth1HttpClient: {
|
|
1726
|
-
requestTime: register.histogram<{routeId: string}>({
|
|
1727
|
-
name: "lodestar_eth1_http_client_request_time_seconds",
|
|
1728
|
-
help: "eth1 JsonHttpClient - histogram or roundtrip request times",
|
|
1729
|
-
labelNames: ["routeId"],
|
|
1730
|
-
// Provide max resolution on problematic values around 1 second
|
|
1731
|
-
buckets: [0.1, 0.5, 1, 2, 5, 15],
|
|
1732
|
-
}),
|
|
1733
|
-
streamTime: register.histogram<{routeId: string}>({
|
|
1734
|
-
name: "lodestar_eth1_http_client_stream_time_seconds",
|
|
1735
|
-
help: "eth1 JsonHttpClient - streaming time by routeId",
|
|
1736
|
-
labelNames: ["routeId"],
|
|
1737
|
-
// Provide max resolution on problematic values around 1 second
|
|
1738
|
-
buckets: [0.1, 0.5, 1, 2, 5, 15],
|
|
1739
|
-
}),
|
|
1740
|
-
requestErrors: register.gauge<{routeId: string}>({
|
|
1741
|
-
name: "lodestar_eth1_http_client_request_errors_total",
|
|
1742
|
-
help: "eth1 JsonHttpClient - total count of request errors",
|
|
1743
|
-
labelNames: ["routeId"],
|
|
1744
|
-
}),
|
|
1745
|
-
retryCount: register.gauge<{routeId: string}>({
|
|
1746
|
-
name: "lodestar_eth1_http_client_request_retries_total",
|
|
1747
|
-
help: "eth1 JsonHttpClient - total count of request retries",
|
|
1748
|
-
labelNames: ["routeId"],
|
|
1749
|
-
}),
|
|
1750
|
-
requestUsedFallbackUrl: register.gauge<{routeId: string}>({
|
|
1751
|
-
name: "lodestar_eth1_http_client_request_used_fallback_url_total",
|
|
1752
|
-
help: "eth1 JsonHttpClient - total count of requests on fallback url(s)",
|
|
1753
|
-
labelNames: ["routeId"],
|
|
1754
|
-
}),
|
|
1755
|
-
activeRequests: register.gauge<{routeId: string}>({
|
|
1756
|
-
name: "lodestar_eth1_http_client_active_requests",
|
|
1757
|
-
help: "eth1 JsonHttpClient - current count of active requests",
|
|
1758
|
-
labelNames: ["routeId"],
|
|
1759
|
-
}),
|
|
1760
|
-
configUrlsCount: register.gauge({
|
|
1761
|
-
name: "lodestar_eth1_http_client_config_urls_count",
|
|
1762
|
-
help: "eth1 JsonHttpClient - static config urls count",
|
|
1763
|
-
}),
|
|
1764
|
-
},
|
|
1765
|
-
|
|
1766
1622
|
executionEnginerHttpClient: {
|
|
1767
1623
|
requestTime: register.histogram<{routeId: string}>({
|
|
1768
1624
|
name: "lodestar_execution_engine_http_client_request_time_seconds",
|
|
@@ -2,7 +2,7 @@ import EventEmitter from "node:events";
|
|
|
2
2
|
import {ResponseIncoming, ResponseOutgoing} from "@lodestar/reqresp";
|
|
3
3
|
import {AsyncIterableEventBus, IteratorEvent, RequestEvent} from "../../util/asyncIterableToEvents.js";
|
|
4
4
|
import {StrictEventEmitterSingleArg} from "../../util/strictEvents.js";
|
|
5
|
-
import {EventDirection} from "
|
|
5
|
+
import {EventDirection} from "../events.js";
|
|
6
6
|
import {IncomingRequestArgs, OutgoingRequestArgs} from "../reqresp/types.js";
|
|
7
7
|
|
|
8
8
|
export enum ReqRespBridgeEvent {
|
package/src/network/events.ts
CHANGED
|
@@ -3,7 +3,6 @@ import {PeerId, TopicValidatorResult} from "@libp2p/interface";
|
|
|
3
3
|
import {CustodyIndex, Status} from "@lodestar/types";
|
|
4
4
|
import {PeerIdStr} from "../util/peerId.js";
|
|
5
5
|
import {StrictEventEmitterSingleArg} from "../util/strictEvents.js";
|
|
6
|
-
import {EventDirection} from "../util/workerEvents.js";
|
|
7
6
|
import {PendingGossipsubMessage} from "./processor/types.js";
|
|
8
7
|
import {RequestTypedContainer} from "./reqresp/ReqRespBeaconNode.js";
|
|
9
8
|
|
|
@@ -38,6 +37,13 @@ export type NetworkEventData = {
|
|
|
38
37
|
};
|
|
39
38
|
};
|
|
40
39
|
|
|
40
|
+
export enum EventDirection {
|
|
41
|
+
workerToMain,
|
|
42
|
+
mainToWorker,
|
|
43
|
+
/** Event not emitted through worker boundary */
|
|
44
|
+
none,
|
|
45
|
+
}
|
|
46
|
+
|
|
41
47
|
export const networkEventDirection: Record<NetworkEvent, EventDirection> = {
|
|
42
48
|
[NetworkEvent.peerConnected]: EventDirection.workerToMain,
|
|
43
49
|
[NetworkEvent.peerDisconnected]: EventDirection.workerToMain,
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type {PeerId, PeerInfo, PrivateKey} from "@libp2p/interface";
|
|
1
|
+
import type {PeerId, PeerInfo, PendingDial, PrivateKey} from "@libp2p/interface";
|
|
2
2
|
import {Multiaddr} from "@multiformats/multiaddr";
|
|
3
3
|
import {ENR} from "@chainsafe/enr";
|
|
4
4
|
import {BeaconConfig} from "@lodestar/config";
|
|
@@ -217,7 +217,7 @@ export class PeerDiscovery {
|
|
|
217
217
|
const pendingDials = new Set(
|
|
218
218
|
this.libp2p.services.components.connectionManager
|
|
219
219
|
.getDialQueue()
|
|
220
|
-
.map((pendingDial) => pendingDial.peerId?.toString())
|
|
220
|
+
.map((pendingDial: PendingDial) => pendingDial.peerId?.toString())
|
|
221
221
|
);
|
|
222
222
|
for (const [id, cachedENR] of this.cachedENRs.entries()) {
|
|
223
223
|
if (
|
|
@@ -458,7 +458,7 @@ export class PeerDiscovery {
|
|
|
458
458
|
if (
|
|
459
459
|
this.libp2p.services.components.connectionManager
|
|
460
460
|
.getDialQueue()
|
|
461
|
-
.find((pendingDial) => pendingDial.peerId?.equals(peerId))
|
|
461
|
+
.find((pendingDial: PendingDial) => pendingDial.peerId?.equals(peerId))
|
|
462
462
|
) {
|
|
463
463
|
return DiscoveredPeerStatus.already_dialing;
|
|
464
464
|
}
|
package/src/node/nodejs.ts
CHANGED
|
@@ -2,18 +2,19 @@ import {setMaxListeners} from "node:events";
|
|
|
2
2
|
import {PrivateKey} from "@libp2p/interface";
|
|
3
3
|
import {Registry} from "prom-client";
|
|
4
4
|
import {hasher} from "@chainsafe/persistent-merkle-tree";
|
|
5
|
+
import {PubkeyIndexMap} from "@chainsafe/pubkey-index-map";
|
|
5
6
|
import {BeaconApiMethods} from "@lodestar/api/beacon/server";
|
|
6
7
|
import {BeaconConfig} from "@lodestar/config";
|
|
7
8
|
import type {LoggerNode} from "@lodestar/logger/node";
|
|
8
|
-
import {
|
|
9
|
+
import {ZERO_HASH_HEX} from "@lodestar/params";
|
|
10
|
+
import {CachedBeaconStateAllForks, Index2PubkeyCache, isExecutionCachedStateType} from "@lodestar/state-transition";
|
|
9
11
|
import {phase0} from "@lodestar/types";
|
|
10
|
-
import {sleep} from "@lodestar/utils";
|
|
12
|
+
import {sleep, toRootHex} from "@lodestar/utils";
|
|
11
13
|
import {ProcessShutdownCallback} from "@lodestar/validator";
|
|
12
14
|
import {BeaconRestApiServer, getApi} from "../api/index.js";
|
|
13
15
|
import {BeaconChain, IBeaconChain, initBeaconMetrics} from "../chain/index.js";
|
|
14
16
|
import {ValidatorMonitor, createValidatorMonitor} from "../chain/validatorMonitor.js";
|
|
15
17
|
import {IBeaconDb} from "../db/index.js";
|
|
16
|
-
import {initializeEth1ForBlockProduction} from "../eth1/index.js";
|
|
17
18
|
import {initializeExecutionBuilder, initializeExecutionEngine} from "../execution/index.js";
|
|
18
19
|
import {HttpMetricsServer, Metrics, createMetrics, getHttpMetricsServer} from "../metrics/index.js";
|
|
19
20
|
import {MonitoringService} from "../monitoring/index.js";
|
|
@@ -46,13 +47,15 @@ export type BeaconNodeModules = {
|
|
|
46
47
|
export type BeaconNodeInitModules = {
|
|
47
48
|
opts: IBeaconNodeOptions;
|
|
48
49
|
config: BeaconConfig;
|
|
50
|
+
pubkey2index: PubkeyIndexMap;
|
|
51
|
+
index2pubkey: Index2PubkeyCache;
|
|
49
52
|
db: IBeaconDb;
|
|
50
53
|
logger: LoggerNode;
|
|
51
54
|
processShutdownCallback: ProcessShutdownCallback;
|
|
52
55
|
privateKey: PrivateKey;
|
|
53
56
|
dataDir: string;
|
|
54
57
|
peerStoreDir?: string;
|
|
55
|
-
anchorState:
|
|
58
|
+
anchorState: CachedBeaconStateAllForks;
|
|
56
59
|
isAnchorStateFinalized: boolean;
|
|
57
60
|
wsCheckpoint?: phase0.Checkpoint;
|
|
58
61
|
metricsRegistries?: Registry[];
|
|
@@ -68,7 +71,6 @@ enum LoggerModule {
|
|
|
68
71
|
api = "api",
|
|
69
72
|
backfill = "backfill",
|
|
70
73
|
chain = "chain",
|
|
71
|
-
eth1 = "eth1",
|
|
72
74
|
execution = "execution",
|
|
73
75
|
metrics = "metrics",
|
|
74
76
|
monitoring = "monitoring",
|
|
@@ -148,6 +150,8 @@ export class BeaconNode {
|
|
|
148
150
|
static async init<T extends BeaconNode = BeaconNode>({
|
|
149
151
|
opts,
|
|
150
152
|
config,
|
|
153
|
+
pubkey2index,
|
|
154
|
+
index2pubkey,
|
|
151
155
|
db,
|
|
152
156
|
logger,
|
|
153
157
|
processShutdownCallback,
|
|
@@ -199,6 +203,17 @@ export class BeaconNode {
|
|
|
199
203
|
// TODO: Should this call be awaited?
|
|
200
204
|
await db.pruneHotDb();
|
|
201
205
|
|
|
206
|
+
// Delete deprecated eth1 data to free up disk space for users
|
|
207
|
+
logger.debug("Deleting deprecated eth1 data from database");
|
|
208
|
+
const startTime = Date.now();
|
|
209
|
+
db.deleteDeprecatedEth1Data()
|
|
210
|
+
.then(() => {
|
|
211
|
+
logger.debug("Deleted deprecated eth1 data", {durationMs: Date.now() - startTime});
|
|
212
|
+
})
|
|
213
|
+
.catch((e) => {
|
|
214
|
+
logger.error("Failed to delete deprecated eth1 data", {}, e);
|
|
215
|
+
});
|
|
216
|
+
|
|
202
217
|
const monitoring = opts.monitoring.endpoint
|
|
203
218
|
? new MonitoringService(
|
|
204
219
|
"beacon",
|
|
@@ -207,10 +222,26 @@ export class BeaconNode {
|
|
|
207
222
|
)
|
|
208
223
|
: null;
|
|
209
224
|
|
|
225
|
+
let executionEngineOpts = opts.executionEngine;
|
|
226
|
+
if (opts.executionEngine.mode === "mock") {
|
|
227
|
+
const eth1BlockHash = isExecutionCachedStateType(anchorState)
|
|
228
|
+
? toRootHex(anchorState.latestExecutionPayloadHeader.blockHash)
|
|
229
|
+
: undefined;
|
|
230
|
+
executionEngineOpts = {
|
|
231
|
+
...opts.executionEngine,
|
|
232
|
+
genesisBlockHash: ZERO_HASH_HEX,
|
|
233
|
+
eth1BlockHash,
|
|
234
|
+
genesisTime: anchorState.genesisTime,
|
|
235
|
+
config,
|
|
236
|
+
};
|
|
237
|
+
}
|
|
238
|
+
|
|
210
239
|
const chain = new BeaconChain(opts.chain, {
|
|
211
240
|
privateKey,
|
|
212
241
|
config,
|
|
213
242
|
clock,
|
|
243
|
+
pubkey2index,
|
|
244
|
+
index2pubkey,
|
|
214
245
|
dataDir,
|
|
215
246
|
db,
|
|
216
247
|
dbName: opts.db.name,
|
|
@@ -220,14 +251,7 @@ export class BeaconNode {
|
|
|
220
251
|
validatorMonitor,
|
|
221
252
|
anchorState,
|
|
222
253
|
isAnchorStateFinalized,
|
|
223
|
-
|
|
224
|
-
config,
|
|
225
|
-
db,
|
|
226
|
-
metrics,
|
|
227
|
-
logger: logger.child({module: LoggerModule.eth1}),
|
|
228
|
-
signal,
|
|
229
|
-
}),
|
|
230
|
-
executionEngine: initializeExecutionEngine(opts.executionEngine, {
|
|
254
|
+
executionEngine: initializeExecutionEngine(executionEngineOpts, {
|
|
231
255
|
metrics,
|
|
232
256
|
signal,
|
|
233
257
|
logger: logger.child({module: LoggerModule.execution}),
|
package/src/node/notifier.ts
CHANGED
|
@@ -36,7 +36,6 @@ export async function runNodeNotifier(modules: NodeNotifierModules): Promise<voi
|
|
|
36
36
|
const {network, chain, sync, config, logger, signal} = modules;
|
|
37
37
|
|
|
38
38
|
const headSlotTimeSeries = new TimeSeries({maxPoints: 10});
|
|
39
|
-
const tdTimeSeries = new TimeSeries({maxPoints: 50});
|
|
40
39
|
|
|
41
40
|
const SLOTS_PER_SYNC_COMMITTEE_PERIOD = SLOTS_PER_EPOCH * EPOCHS_PER_SYNC_COMMITTEE_PERIOD;
|
|
42
41
|
let hasLowPeerCount = false;
|
|
@@ -87,21 +86,6 @@ export async function runNodeNotifier(modules: NodeNotifierModules): Promise<voi
|
|
|
87
86
|
const executionInfo = getHeadExecutionInfo(config, clockEpoch, headState, headInfo);
|
|
88
87
|
const finalizedCheckpointRow = `finalized: ${prettyBytes(finalizedRoot)}:${finalizedEpoch}`;
|
|
89
88
|
|
|
90
|
-
// Log in TD progress in separate line to not clutter regular status update.
|
|
91
|
-
// This line will only exist between BELLATRIX_FORK_EPOCH and TTD, a window of some days / weeks max.
|
|
92
|
-
// Notifier log lines must be kept at a reasonable max width otherwise it's very hard to read
|
|
93
|
-
const tdProgress = chain.eth1.getTDProgress();
|
|
94
|
-
if (tdProgress !== null && !tdProgress.ttdHit) {
|
|
95
|
-
tdTimeSeries.addPoint(tdProgress.tdDiffScaled, tdProgress.timestamp);
|
|
96
|
-
|
|
97
|
-
const timestampTDD = tdTimeSeries.computeY0Point();
|
|
98
|
-
// It is possible to get ttd estimate with an error at imminent merge
|
|
99
|
-
const secToTTD = Math.max(Math.floor(timestampTDD - Date.now() / 1000), 0);
|
|
100
|
-
const timeLeft = Number.isFinite(secToTTD) ? prettyTimeDiffSec(secToTTD) : "?";
|
|
101
|
-
|
|
102
|
-
logger.info(`TTD in ${timeLeft} current TD ${tdProgress.td} / ${tdProgress.ttd}`);
|
|
103
|
-
}
|
|
104
|
-
|
|
105
89
|
let nodeState: string[];
|
|
106
90
|
switch (sync.state) {
|
|
107
91
|
case SyncState.SyncingFinalized:
|
package/src/node/options.ts
CHANGED
|
@@ -2,7 +2,6 @@ import {ApiOptions, defaultApiOptions} from "../api/options.js";
|
|
|
2
2
|
import {ArchiveMode, DEFAULT_ARCHIVE_MODE, IChainOptions, defaultChainOptions} from "../chain/options.js";
|
|
3
3
|
import {ValidatorMonitorOpts, defaultValidatorMonitorOpts} from "../chain/validatorMonitor.js";
|
|
4
4
|
import {DatabaseOptions, defaultDbOptions} from "../db/options.js";
|
|
5
|
-
import {Eth1Options, defaultEth1Options} from "../eth1/options.js";
|
|
6
5
|
import {
|
|
7
6
|
ExecutionBuilderOpts,
|
|
8
7
|
ExecutionEngineOpts,
|
|
@@ -26,7 +25,6 @@ export interface IBeaconNodeOptions {
|
|
|
26
25
|
api: ApiOptions;
|
|
27
26
|
chain: IChainOptions;
|
|
28
27
|
db: DatabaseOptions;
|
|
29
|
-
eth1: Eth1Options;
|
|
30
28
|
executionEngine: ExecutionEngineOpts;
|
|
31
29
|
executionBuilder: ExecutionBuilderOpts;
|
|
32
30
|
metrics: MetricsOptions;
|
|
@@ -40,7 +38,6 @@ export const defaultOptions: IBeaconNodeOptions = {
|
|
|
40
38
|
api: defaultApiOptions,
|
|
41
39
|
chain: defaultChainOptions,
|
|
42
40
|
db: defaultDbOptions,
|
|
43
|
-
eth1: defaultEth1Options,
|
|
44
41
|
executionEngine: defaultExecutionEngineOpts,
|
|
45
42
|
executionBuilder: defaultExecutionBuilderOpts,
|
|
46
43
|
metrics: defaultMetricsOptions,
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import {digest} from "@chainsafe/as-sha256";
|
|
2
2
|
import {Tree, toGindex} from "@chainsafe/persistent-merkle-tree";
|
|
3
|
+
import {ByteVectorType, CompositeViewDU, ListCompositeType} from "@chainsafe/ssz";
|
|
3
4
|
import {ChainConfig} from "@lodestar/config";
|
|
4
5
|
import {
|
|
5
6
|
BLS_WITHDRAWAL_PREFIX,
|
|
@@ -9,7 +10,8 @@ import {
|
|
|
9
10
|
} from "@lodestar/params";
|
|
10
11
|
import {ZERO_HASH, computeDomain, computeSigningRoot, interopSecretKeys} from "@lodestar/state-transition";
|
|
11
12
|
import {phase0, ssz} from "@lodestar/types";
|
|
12
|
-
|
|
13
|
+
|
|
14
|
+
export type DepositTree = CompositeViewDU<ListCompositeType<ByteVectorType>>;
|
|
13
15
|
|
|
14
16
|
/**
|
|
15
17
|
* Compute and return deposit data from other validators.
|
|
@@ -6,7 +6,7 @@ import {
|
|
|
6
6
|
initializeBeaconStateFromEth1,
|
|
7
7
|
} from "@lodestar/state-transition";
|
|
8
8
|
import {Bytes32, TimeSeconds, phase0, ssz, sszTypesFor} from "@lodestar/types";
|
|
9
|
-
import {DepositTree} from "
|
|
9
|
+
import {DepositTree} from "./deposits.js";
|
|
10
10
|
|
|
11
11
|
export const INTEROP_BLOCK_HASH = Buffer.alloc(32, "B");
|
|
12
12
|
export const INTEROP_TIMESTAMP = Math.pow(2, 40);
|
package/src/node/utils/state.ts
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import {ChainForkConfig} from "@lodestar/config";
|
|
2
2
|
import {BeaconStateAllForks} from "@lodestar/state-transition";
|
|
3
|
-
import {
|
|
4
|
-
import {IBeaconDb} from "../../db/index.js";
|
|
3
|
+
import {ssz} from "@lodestar/types";
|
|
5
4
|
import {interopDeposits} from "./interop/deposits.js";
|
|
6
5
|
import {InteropStateOpts, getInteropState} from "./interop/state.js";
|
|
7
6
|
|
|
@@ -12,26 +11,12 @@ export function initDevState(
|
|
|
12
11
|
config: ChainForkConfig,
|
|
13
12
|
validatorCount: number,
|
|
14
13
|
interopStateOpts: InteropStateOpts
|
|
15
|
-
):
|
|
14
|
+
): BeaconStateAllForks {
|
|
16
15
|
const deposits = interopDeposits(
|
|
17
16
|
config,
|
|
18
17
|
ssz.phase0.DepositDataRootList.defaultViewDU(),
|
|
19
18
|
validatorCount,
|
|
20
19
|
interopStateOpts
|
|
21
20
|
);
|
|
22
|
-
|
|
23
|
-
return {deposits, state};
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
export async function writeDeposits(db: IBeaconDb, deposits: phase0.Deposit[]): Promise<void> {
|
|
27
|
-
for (let i = 0; i < deposits.length; i++) {
|
|
28
|
-
await Promise.all([
|
|
29
|
-
db.depositEvent.put(i, {
|
|
30
|
-
blockNumber: i,
|
|
31
|
-
index: i,
|
|
32
|
-
depositData: deposits[i].data,
|
|
33
|
-
}),
|
|
34
|
-
db.depositDataRoot.put(i, ssz.phase0.DepositData.hashTreeRoot(deposits[i].data)),
|
|
35
|
-
]);
|
|
36
|
-
}
|
|
21
|
+
return getInteropState(config, interopStateOpts, deposits);
|
|
37
22
|
}
|
|
@@ -750,7 +750,7 @@ export class BackfillSync extends (EventEmitter as {new (): BackfillSyncEmitter}
|
|
|
750
750
|
|
|
751
751
|
// GENESIS_SLOT doesn't has valid signature
|
|
752
752
|
if (anchorBlock.message.slot === GENESIS_SLOT) return;
|
|
753
|
-
await verifyBlockProposerSignature(this.chain.
|
|
753
|
+
await verifyBlockProposerSignature(this.chain.config, this.chain.index2pubkey, this.chain.bls, [anchorBlock]);
|
|
754
754
|
|
|
755
755
|
// We can write to the disk if this is ahead of prevFinalizedCheckpointBlock otherwise
|
|
756
756
|
// we will need to go make checks on the top of sync loop before writing as it might
|
|
@@ -815,7 +815,7 @@ export class BackfillSync extends (EventEmitter as {new (): BackfillSyncEmitter}
|
|
|
815
815
|
|
|
816
816
|
// If any of the block's proposer signature fail, we can't trust this peer at all
|
|
817
817
|
if (verifiedBlocks.length > 0) {
|
|
818
|
-
await verifyBlockProposerSignature(this.chain.
|
|
818
|
+
await verifyBlockProposerSignature(this.chain.config, this.chain.index2pubkey, this.chain.bls, verifiedBlocks);
|
|
819
819
|
|
|
820
820
|
// This is bad, like super bad. Abort the backfill
|
|
821
821
|
if (!nextAnchor)
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {BeaconConfig} from "@lodestar/config";
|
|
2
2
|
import {GENESIS_SLOT} from "@lodestar/params";
|
|
3
|
-
import {
|
|
3
|
+
import {ISignatureSet, Index2PubkeyCache, getBlockProposerSignatureSet} from "@lodestar/state-transition";
|
|
4
4
|
import {Root, SignedBeaconBlock, Slot, ssz} from "@lodestar/types";
|
|
5
5
|
import {IBlsVerifier} from "../../chain/bls/index.js";
|
|
6
6
|
import {BackfillSyncError, BackfillSyncErrorCode} from "./errors.js";
|
|
@@ -41,14 +41,15 @@ export function verifyBlockSequence(
|
|
|
41
41
|
}
|
|
42
42
|
|
|
43
43
|
export async function verifyBlockProposerSignature(
|
|
44
|
+
config: BeaconConfig,
|
|
45
|
+
index2pubkey: Index2PubkeyCache,
|
|
44
46
|
bls: IBlsVerifier,
|
|
45
|
-
state: CachedBeaconStateAllForks,
|
|
46
47
|
blocks: SignedBeaconBlock[]
|
|
47
48
|
): Promise<void> {
|
|
48
49
|
if (blocks.length === 1 && blocks[0].message.slot === GENESIS_SLOT) return;
|
|
49
50
|
const signatures = blocks.reduce((sigs: ISignatureSet[], block) => {
|
|
50
51
|
// genesis block doesn't have valid signature
|
|
51
|
-
if (block.message.slot !== GENESIS_SLOT) sigs.push(getBlockProposerSignatureSet(
|
|
52
|
+
if (block.message.slot !== GENESIS_SLOT) sigs.push(getBlockProposerSignatureSet(config, index2pubkey, block));
|
|
52
53
|
return sigs;
|
|
53
54
|
}, []);
|
|
54
55
|
|
package/src/util/workerEvents.ts
CHANGED
|
@@ -1,9 +1,11 @@
|
|
|
1
1
|
import {MessagePort, Worker} from "node:worker_threads";
|
|
2
|
+
import {Message} from "@libp2p/interface";
|
|
2
3
|
import {Thread} from "@chainsafe/threads";
|
|
3
4
|
import {Logger} from "@lodestar/logger";
|
|
4
5
|
import {sleep} from "@lodestar/utils";
|
|
5
6
|
import {Metrics} from "../metrics/metrics.js";
|
|
6
7
|
import {NetworkCoreWorkerMetrics} from "../network/core/metrics.js";
|
|
8
|
+
import {EventDirection, NetworkEvent} from "../network/events.js";
|
|
7
9
|
import {StrictEventEmitterSingleArg} from "./strictEvents.js";
|
|
8
10
|
|
|
9
11
|
const NANO_TO_SECOND_CONVERSION = 1e9;
|
|
@@ -15,13 +17,6 @@ export type WorkerBridgeEvent<EventData> = {
|
|
|
15
17
|
data: EventData[keyof EventData];
|
|
16
18
|
};
|
|
17
19
|
|
|
18
|
-
export enum EventDirection {
|
|
19
|
-
workerToMain,
|
|
20
|
-
mainToWorker,
|
|
21
|
-
/** Event not emitted through worker boundary */
|
|
22
|
-
none,
|
|
23
|
-
}
|
|
24
|
-
|
|
25
20
|
/**
|
|
26
21
|
* Bridges events from worker to main thread
|
|
27
22
|
* Each event can only have one direction:
|
|
@@ -63,7 +58,13 @@ export function wireEventsOnWorkerThread<EventData>(
|
|
|
63
58
|
posted: process.hrtime(),
|
|
64
59
|
data,
|
|
65
60
|
};
|
|
66
|
-
|
|
61
|
+
let transferList: ArrayBuffer[] | undefined = undefined;
|
|
62
|
+
if (eventName === NetworkEvent.pendingGossipsubMessage) {
|
|
63
|
+
const payload = data as {msg: Message};
|
|
64
|
+
// Transfer the underlying ArrayBuffer to avoid copy for PendingGossipsubMessage
|
|
65
|
+
transferList = [payload.msg.data.buffer as ArrayBuffer];
|
|
66
|
+
}
|
|
67
|
+
parentPort.postMessage(workerEvent, transferList);
|
|
67
68
|
});
|
|
68
69
|
}
|
|
69
70
|
}
|
|
@@ -1,51 +0,0 @@
|
|
|
1
|
-
import { ChainForkConfig } from "@lodestar/config";
|
|
2
|
-
import { BeaconStateAllForks, CachedBeaconStateAllForks } from "@lodestar/state-transition";
|
|
3
|
-
import { Logger } from "@lodestar/utils";
|
|
4
|
-
import { DepositTree } from "../../db/repositories/depositDataRoot.js";
|
|
5
|
-
import { IEth1Provider } from "../../eth1/index.js";
|
|
6
|
-
import { GenesisResult, IGenesisBuilder } from "./interface.js";
|
|
7
|
-
export type GenesisBuilderKwargs = {
|
|
8
|
-
config: ChainForkConfig;
|
|
9
|
-
eth1Provider: IEth1Provider;
|
|
10
|
-
logger: Logger;
|
|
11
|
-
/** Use to restore pending progress */
|
|
12
|
-
pendingStatus?: {
|
|
13
|
-
state: BeaconStateAllForks;
|
|
14
|
-
depositTree: DepositTree;
|
|
15
|
-
lastProcessedBlockNumber: number;
|
|
16
|
-
};
|
|
17
|
-
signal?: AbortSignal;
|
|
18
|
-
maxBlocksPerPoll?: number;
|
|
19
|
-
};
|
|
20
|
-
export declare class GenesisBuilder implements IGenesisBuilder {
|
|
21
|
-
readonly state: CachedBeaconStateAllForks;
|
|
22
|
-
readonly depositTree: DepositTree;
|
|
23
|
-
/** Is null if no block has been processed yet */
|
|
24
|
-
lastProcessedBlockNumber: number | null;
|
|
25
|
-
private readonly config;
|
|
26
|
-
private readonly eth1Provider;
|
|
27
|
-
private readonly logger;
|
|
28
|
-
private readonly signal?;
|
|
29
|
-
private readonly eth1Params;
|
|
30
|
-
private readonly depositCache;
|
|
31
|
-
private readonly fromBlock;
|
|
32
|
-
private readonly logEvery;
|
|
33
|
-
private lastLog;
|
|
34
|
-
/** Current count of active validators in the state */
|
|
35
|
-
private activatedValidatorCount;
|
|
36
|
-
constructor({ config, eth1Provider, logger, signal, pendingStatus, maxBlocksPerPoll }: GenesisBuilderKwargs);
|
|
37
|
-
/**
|
|
38
|
-
* Get eth1 deposit events and blocks and apply to this.state until we found genesis.
|
|
39
|
-
*/
|
|
40
|
-
waitForGenesis(): Promise<GenesisResult>;
|
|
41
|
-
/**
|
|
42
|
-
* First phase of waiting for genesis.
|
|
43
|
-
* Stream deposits events in batches as big as possible without querying block data
|
|
44
|
-
* @returns Block number at which there are enough active validators is state for genesis
|
|
45
|
-
*/
|
|
46
|
-
private waitForGenesisValidators;
|
|
47
|
-
private applyDeposits;
|
|
48
|
-
/** Throttle genesis generation status log to prevent spamming */
|
|
49
|
-
private throttledLog;
|
|
50
|
-
}
|
|
51
|
-
//# sourceMappingURL=genesis.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"genesis.d.ts","sourceRoot":"","sources":["../../../src/chain/genesis/genesis.ts"],"names":[],"mappings":"AACA,OAAO,EAAe,eAAe,EAAC,MAAM,kBAAkB,CAAC;AAE/D,OAAO,EACL,mBAAmB,EACnB,yBAAyB,EAS1B,MAAM,4BAA4B,CAAC;AAEpC,OAAO,EAAC,MAAM,EAAC,MAAM,iBAAiB,CAAC;AACvC,OAAO,EAAC,WAAW,EAAC,MAAM,0CAA0C,CAAC;AACrE,OAAO,EAAC,aAAa,EAAC,MAAM,qBAAqB,CAAC;AAGlD,OAAO,EAAC,aAAa,EAAE,eAAe,EAAC,MAAM,gBAAgB,CAAC;AAE9D,MAAM,MAAM,oBAAoB,GAAG;IACjC,MAAM,EAAE,eAAe,CAAC;IACxB,YAAY,EAAE,aAAa,CAAC;IAC5B,MAAM,EAAE,MAAM,CAAC;IAEf,sCAAsC;IACtC,aAAa,CAAC,EAAE;QACd,KAAK,EAAE,mBAAmB,CAAC;QAC3B,WAAW,EAAE,WAAW,CAAC;QACzB,wBAAwB,EAAE,MAAM,CAAC;KAClC,CAAC;IAEF,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B,CAAC;AAEF,qBAAa,cAAe,YAAW,eAAe;IAEpD,QAAQ,CAAC,KAAK,EAAE,yBAAyB,CAAC;IAC1C,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAC;IAClC,iDAAiD;IACjD,wBAAwB,EAAE,MAAM,GAAG,IAAI,CAAQ;IAE/C,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAe;IACtC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAgB;IAC7C,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAChC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAc;IACtC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAoB;IAC/C,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAqB;IAClD,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;IACnC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAa;IACtC,OAAO,CAAC,OAAO,CAAK;IACpB,sDAAsD;IACtD,OAAO,CAAC,uBAAuB,CAAS;gBAE5B,EAAC,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,EAAE,aAAa,EAAE,gBAAgB,EAAC,EAAE,oBAAoB;IAmCzG;;OAEG;IACG,cAAc,IAAI,OAAO,CAAC,aAAa,CAAC;IAsC9C;;;;OAIG;YACW,wBAAwB;IAoBtC,OAAO,CAAC,aAAa;IAuBrB,iEAAiE;IACjE,OAAO,CAAC,YAAY;CAMrB"}
|