@lodestar/beacon-node 1.39.0-dev.3bf4734ba9 → 1.39.0-dev.4263377242
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/utils.d.ts +2 -7
- package/lib/api/impl/beacon/state/utils.d.ts.map +1 -1
- package/lib/api/impl/beacon/state/utils.js +0 -12
- package/lib/api/impl/beacon/state/utils.js.map +1 -1
- package/lib/api/impl/lodestar/index.js +1 -1
- package/lib/api/impl/lodestar/index.js.map +1 -1
- package/lib/api/impl/proof/index.d.ts.map +1 -1
- package/lib/api/impl/proof/index.js +1 -2
- package/lib/api/impl/proof/index.js.map +1 -1
- package/lib/api/impl/validator/index.d.ts.map +1 -1
- package/lib/api/impl/validator/index.js +1 -3
- package/lib/api/impl/validator/index.js.map +1 -1
- package/lib/chain/archiveStore/historicalState/getHistoricalState.d.ts.map +1 -1
- package/lib/chain/archiveStore/historicalState/getHistoricalState.js +5 -3
- package/lib/chain/archiveStore/historicalState/getHistoricalState.js.map +1 -1
- package/lib/chain/blocks/importBlock.d.ts.map +1 -1
- package/lib/chain/blocks/importBlock.js +12 -3
- package/lib/chain/blocks/importBlock.js.map +1 -1
- package/lib/chain/blocks/verifyBlock.d.ts.map +1 -1
- package/lib/chain/blocks/verifyBlock.js +9 -2
- package/lib/chain/blocks/verifyBlock.js.map +1 -1
- package/lib/chain/blocks/verifyBlocksExecutionPayloads.d.ts.map +1 -1
- package/lib/chain/blocks/verifyBlocksExecutionPayloads.js +4 -2
- package/lib/chain/blocks/verifyBlocksExecutionPayloads.js.map +1 -1
- package/lib/chain/blocks/verifyBlocksSignatures.d.ts +2 -1
- 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/blocks/verifyBlocksStateTransitionOnly.d.ts.map +1 -1
- package/lib/chain/blocks/verifyBlocksStateTransitionOnly.js +1 -0
- package/lib/chain/blocks/verifyBlocksStateTransitionOnly.js.map +1 -1
- package/lib/chain/chain.d.ts +11 -14
- package/lib/chain/chain.d.ts.map +1 -1
- package/lib/chain/chain.js +36 -50
- package/lib/chain/chain.js.map +1 -1
- package/lib/chain/forkChoice/index.d.ts.map +1 -1
- package/lib/chain/forkChoice/index.js +3 -3
- package/lib/chain/forkChoice/index.js.map +1 -1
- package/lib/chain/initState.d.ts +2 -15
- package/lib/chain/initState.d.ts.map +1 -1
- package/lib/chain/initState.js +6 -65
- package/lib/chain/initState.js.map +1 -1
- package/lib/chain/interface.d.ts +6 -11
- package/lib/chain/interface.d.ts.map +1 -1
- package/lib/chain/interface.js.map +1 -1
- package/lib/chain/lightClient/proofs.d.ts.map +1 -1
- package/lib/chain/lightClient/proofs.js +0 -2
- package/lib/chain/lightClient/proofs.js.map +1 -1
- package/lib/chain/opPools/aggregatedAttestationPool.d.ts +8 -12
- package/lib/chain/opPools/aggregatedAttestationPool.d.ts.map +1 -1
- package/lib/chain/opPools/aggregatedAttestationPool.js +13 -142
- 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 +14 -16
- package/lib/chain/opPools/opPool.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 +5 -28
- package/lib/chain/prepareNextSlot.js.map +1 -1
- package/lib/chain/produceBlock/produceBlockBody.d.ts +0 -1
- package/lib/chain/produceBlock/produceBlockBody.d.ts.map +1 -1
- package/lib/chain/produceBlock/produceBlockBody.js +10 -13
- package/lib/chain/produceBlock/produceBlockBody.js.map +1 -1
- package/lib/chain/regen/interface.d.ts +1 -5
- package/lib/chain/regen/interface.d.ts.map +1 -1
- package/lib/chain/regen/queued.d.ts +4 -7
- package/lib/chain/regen/queued.d.ts.map +1 -1
- package/lib/chain/regen/queued.js +15 -25
- package/lib/chain/regen/queued.js.map +1 -1
- package/lib/chain/regen/regen.d.ts +1 -1
- package/lib/chain/regen/regen.d.ts.map +1 -1
- package/lib/chain/regen/regen.js +13 -17
- package/lib/chain/regen/regen.js.map +1 -1
- package/lib/chain/shufflingCache.d.ts +16 -11
- package/lib/chain/shufflingCache.d.ts.map +1 -1
- package/lib/chain/shufflingCache.js +47 -41
- package/lib/chain/shufflingCache.js.map +1 -1
- package/lib/chain/stateCache/blockStateCacheImpl.d.ts +1 -2
- package/lib/chain/stateCache/blockStateCacheImpl.d.ts.map +1 -1
- package/lib/chain/stateCache/blockStateCacheImpl.js +2 -2
- package/lib/chain/stateCache/blockStateCacheImpl.js.map +1 -1
- package/lib/chain/stateCache/fifoBlockStateCache.d.ts +1 -2
- package/lib/chain/stateCache/fifoBlockStateCache.d.ts.map +1 -1
- package/lib/chain/stateCache/fifoBlockStateCache.js +4 -4
- package/lib/chain/stateCache/fifoBlockStateCache.js.map +1 -1
- package/lib/chain/stateCache/inMemoryCheckpointsCache.d.ts +4 -5
- package/lib/chain/stateCache/inMemoryCheckpointsCache.d.ts.map +1 -1
- package/lib/chain/stateCache/inMemoryCheckpointsCache.js +9 -10
- package/lib/chain/stateCache/inMemoryCheckpointsCache.js.map +1 -1
- package/lib/chain/stateCache/persistentCheckpointsCache.d.ts +9 -7
- package/lib/chain/stateCache/persistentCheckpointsCache.d.ts.map +1 -1
- package/lib/chain/stateCache/persistentCheckpointsCache.js +21 -19
- package/lib/chain/stateCache/persistentCheckpointsCache.js.map +1 -1
- package/lib/chain/stateCache/types.d.ts +5 -6
- package/lib/chain/stateCache/types.d.ts.map +1 -1
- package/lib/chain/stateCache/types.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/attestation.d.ts.map +1 -1
- package/lib/chain/validation/attestation.js +2 -2
- package/lib/chain/validation/attestation.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.d.ts.map +1 -1
- package/lib/chain/validation/block.js +5 -3
- 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 +2 -1
- package/lib/chain/validation/signatureSets/contributionAndProof.d.ts.map +1 -1
- package/lib/chain/validation/signatureSets/contributionAndProof.js +2 -2
- package/lib/chain/validation/signatureSets/contributionAndProof.js.map +1 -1
- package/lib/chain/validation/signatureSets/syncCommittee.d.ts +2 -1
- package/lib/chain/validation/signatureSets/syncCommittee.d.ts.map +1 -1
- package/lib/chain/validation/signatureSets/syncCommittee.js +2 -2
- 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 +2 -1
- package/lib/chain/validation/signatureSets/syncCommitteeSelectionProof.d.ts.map +1 -1
- package/lib/chain/validation/signatureSets/syncCommitteeSelectionProof.js +1 -2
- 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 +3 -3
- 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/checkpointState.d.ts +2 -6
- package/lib/db/repositories/checkpointState.d.ts.map +1 -1
- package/lib/db/repositories/checkpointState.js +3 -15
- package/lib/db/repositories/checkpointState.js.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/db/repositories/stateArchive.d.ts +9 -9
- package/lib/db/repositories/stateArchive.d.ts.map +1 -1
- package/lib/db/repositories/stateArchive.js +6 -21
- package/lib/db/repositories/stateArchive.js.map +1 -1
- package/lib/execution/engine/http.d.ts +1 -1
- package/lib/execution/engine/http.d.ts.map +1 -1
- package/lib/execution/engine/http.js +2 -3
- 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 +9 -6
- package/lib/execution/engine/mock.d.ts.map +1 -1
- package/lib/execution/engine/mock.js +35 -8
- 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 +1 -41
- package/lib/metrics/metrics/lodestar.d.ts.map +1 -1
- package/lib/metrics/metrics/lodestar.js +3 -107
- 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/network/reqresp/utils/dataColumnResponseValidation.js +1 -1
- package/lib/network/reqresp/utils/dataColumnResponseValidation.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 +9 -6
- 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 -4
- 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/sszBytes.js +1 -1
- package/lib/util/sszBytes.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 -26
- package/src/api/impl/beacon/blocks/utils.ts +1 -1
- package/src/api/impl/beacon/state/utils.ts +2 -22
- package/src/api/impl/lodestar/index.ts +1 -1
- package/src/api/impl/proof/index.ts +1 -2
- package/src/api/impl/validator/index.ts +1 -3
- package/src/chain/archiveStore/historicalState/getHistoricalState.ts +5 -3
- package/src/chain/blocks/importBlock.ts +13 -3
- package/src/chain/blocks/verifyBlock.ts +10 -3
- package/src/chain/blocks/verifyBlocksExecutionPayloads.ts +9 -2
- package/src/chain/blocks/verifyBlocksSignatures.ts +13 -3
- package/src/chain/blocks/verifyBlocksStateTransitionOnly.ts +1 -0
- package/src/chain/chain.ts +50 -62
- package/src/chain/forkChoice/index.ts +3 -2
- package/src/chain/initState.ts +6 -100
- package/src/chain/interface.ts +6 -10
- package/src/chain/lightClient/proofs.ts +0 -2
- package/src/chain/opPools/aggregatedAttestationPool.ts +23 -195
- package/src/chain/opPools/opPool.ts +13 -15
- package/src/chain/prepareNextSlot.ts +3 -34
- package/src/chain/produceBlock/produceBlockBody.ts +15 -14
- package/src/chain/regen/interface.ts +1 -5
- package/src/chain/regen/queued.ts +15 -34
- package/src/chain/regen/regen.ts +12 -18
- package/src/chain/shufflingCache.ts +67 -50
- package/src/chain/stateCache/blockStateCacheImpl.ts +2 -3
- package/src/chain/stateCache/fifoBlockStateCache.ts +4 -5
- package/src/chain/stateCache/inMemoryCheckpointsCache.ts +9 -15
- package/src/chain/stateCache/persistentCheckpointsCache.ts +32 -27
- package/src/chain/stateCache/types.ts +5 -10
- package/src/chain/validation/aggregateAndProof.ts +12 -0
- package/src/chain/validation/attestation.ts +3 -3
- package/src/chain/validation/attesterSlashing.ts +14 -2
- package/src/chain/validation/blobSidecar.ts +3 -3
- package/src/chain/validation/block.ts +6 -2
- package/src/chain/validation/blsToExecutionChange.ts +10 -8
- package/src/chain/validation/dataColumnSidecar.ts +3 -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 +3 -1
- package/src/chain/validation/signatureSets/syncCommittee.ts +3 -1
- package/src/chain/validation/signatureSets/syncCommitteeContribution.ts +3 -1
- package/src/chain/validation/signatureSets/syncCommitteeSelectionProof.ts +2 -1
- package/src/chain/validation/syncCommittee.ts +1 -1
- package/src/chain/validation/syncCommitteeContributionAndProof.ts +8 -3
- 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/checkpointState.ts +3 -19
- package/src/db/repositories/index.ts +0 -3
- package/src/db/repositories/stateArchive.ts +13 -27
- package/src/execution/engine/http.ts +8 -9
- 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 +41 -15
- 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 +3 -109
- 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/network/reqresp/utils/dataColumnResponseValidation.ts +1 -1
- package/src/node/nodejs.ts +37 -13
- package/src/node/notifier.ts +13 -7
- 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 -9
- package/src/sync/backfill/verify.ts +3 -8
- package/src/util/sszBytes.ts +1 -1
- 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 -36
- 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/index.d.ts +0 -31
- package/lib/eth1/index.d.ts.map +0 -1
- package/lib/eth1/index.js +0 -71
- package/lib/eth1/index.js.map +0 -1
- package/lib/eth1/interface.d.ts +0 -74
- 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 -197
- 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/index.ts +0 -94
- package/src/eth1/interface.ts +0 -87
- 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/db/buckets.ts
CHANGED
|
@@ -16,14 +16,16 @@ export enum Bucket {
|
|
|
16
16
|
index_mainChain = 6, // Slot -> Root<BeaconBlock>
|
|
17
17
|
// justified, finalized state and block hashes
|
|
18
18
|
index_chainInfo = 7, // Key -> Number64 | stateHash | blockHash
|
|
19
|
-
|
|
20
|
-
phase0_eth1Data = 8,
|
|
21
|
-
|
|
19
|
+
/** @deprecated Eth1 deposit tracking is not required since electra, only kept around to delete data from existing databases */
|
|
20
|
+
phase0_eth1Data = 8,
|
|
21
|
+
/** @deprecated Eth1 deposit tracking is not required since electra, only kept around to delete data from existing databases */
|
|
22
|
+
index_depositDataRoot = 9,
|
|
22
23
|
|
|
23
24
|
// op pool
|
|
24
25
|
// phase0_attestation = 10, // DEPRECATED on v0.25.0
|
|
25
26
|
// phase0_aggregateAndProof = 11, // Root -> AggregateAndProof, DEPRECATED on v.27.0
|
|
26
|
-
|
|
27
|
+
/** @deprecated Eth1 deposit tracking is not required since electra, only kept around to delete data from existing databases */
|
|
28
|
+
phase0_depositData = 12,
|
|
27
29
|
phase0_exit = 13, // ValidatorIndex -> VoluntaryExit
|
|
28
30
|
phase0_proposerSlashing = 14, // ValidatorIndex -> ProposerSlashing
|
|
29
31
|
allForks_attesterSlashing = 15, // Root -> AttesterSlashing
|
|
@@ -32,15 +34,18 @@ export enum Bucket {
|
|
|
32
34
|
allForks_checkpointState = 17, // Root -> BeaconState
|
|
33
35
|
|
|
34
36
|
// allForks_pendingBlock = 25, // Root -> SignedBeaconBlock // DEPRECATED on v0.30.0
|
|
35
|
-
|
|
37
|
+
/** @deprecated Eth1 deposit tracking is not required since electra, only kept around to delete data from existing databases */
|
|
38
|
+
phase0_depositEvent = 19,
|
|
36
39
|
|
|
37
40
|
index_stateArchiveRootIndex = 26, // State Root -> slot
|
|
38
41
|
|
|
39
42
|
deneb_blobSidecars = 27, // DENEB BeaconBlockRoot -> BlobSidecars
|
|
40
43
|
deneb_blobSidecarsArchive = 28, // DENEB BeaconBlockSlot -> BlobSidecars
|
|
41
44
|
|
|
42
|
-
|
|
43
|
-
|
|
45
|
+
/** @deprecated Genesis from eth1 is no longer supported, only kept around to delete data from existing databases */
|
|
46
|
+
phase0_preGenesisState = 30,
|
|
47
|
+
/** @deprecated Genesis from eth1 is no longer supported, only kept around to delete data from existing databases */
|
|
48
|
+
phase0_preGenesisStateLastProcessedBlock = 31,
|
|
44
49
|
|
|
45
50
|
// Lightclient server
|
|
46
51
|
// altair_bestUpdatePerCommitteePeriod = 30, // DEPRECATED on v0.32.0
|
package/src/db/interface.ts
CHANGED
|
@@ -12,16 +12,12 @@ import {
|
|
|
12
12
|
CheckpointHeaderRepository,
|
|
13
13
|
DataColumnSidecarArchiveRepository,
|
|
14
14
|
DataColumnSidecarRepository,
|
|
15
|
-
DepositDataRootRepository,
|
|
16
|
-
DepositEventRepository,
|
|
17
|
-
Eth1DataRepository,
|
|
18
15
|
ProposerSlashingRepository,
|
|
19
16
|
StateArchiveRepository,
|
|
20
17
|
SyncCommitteeRepository,
|
|
21
18
|
SyncCommitteeWitnessRepository,
|
|
22
19
|
VoluntaryExitRepository,
|
|
23
20
|
} from "./repositories/index.js";
|
|
24
|
-
import {PreGenesisState, PreGenesisStateLastProcessedBlock} from "./single/index.js";
|
|
25
21
|
|
|
26
22
|
/**
|
|
27
23
|
* The DB service manages the data layer of the beacon chain
|
|
@@ -48,17 +44,8 @@ export interface IBeaconDb {
|
|
|
48
44
|
voluntaryExit: VoluntaryExitRepository;
|
|
49
45
|
proposerSlashing: ProposerSlashingRepository;
|
|
50
46
|
attesterSlashing: AttesterSlashingRepository;
|
|
51
|
-
depositEvent: DepositEventRepository;
|
|
52
47
|
blsToExecutionChange: BLSToExecutionChangeRepository;
|
|
53
48
|
|
|
54
|
-
// eth1 processing
|
|
55
|
-
preGenesisState: PreGenesisState;
|
|
56
|
-
preGenesisStateLastProcessedBlock: PreGenesisStateLastProcessedBlock;
|
|
57
|
-
|
|
58
|
-
// all deposit data roots and merkle tree
|
|
59
|
-
depositDataRoot: DepositDataRootRepository;
|
|
60
|
-
eth1Data: Eth1DataRepository;
|
|
61
|
-
|
|
62
49
|
// lightclient
|
|
63
50
|
bestLightClientUpdate: BestLightClientUpdateRepository;
|
|
64
51
|
checkpointHeader: CheckpointHeaderRepository;
|
|
@@ -69,6 +56,8 @@ export interface IBeaconDb {
|
|
|
69
56
|
|
|
70
57
|
pruneHotDb(): Promise<void>;
|
|
71
58
|
|
|
59
|
+
deleteDeprecatedEth1Data(): Promise<void>;
|
|
60
|
+
|
|
72
61
|
/** Close the connection to the db instance and close the db store. */
|
|
73
62
|
close(): Promise<void>;
|
|
74
63
|
/** To inject metrics after CLI initialization */
|
|
@@ -1,31 +1,15 @@
|
|
|
1
1
|
import {ChainForkConfig} from "@lodestar/config";
|
|
2
|
-
import {
|
|
3
|
-
import {BeaconStateAllForks} from "@lodestar/state-transition";
|
|
4
|
-
import {ssz} from "@lodestar/types";
|
|
2
|
+
import {BinaryRepository, Db} from "@lodestar/db";
|
|
5
3
|
import {Bucket, getBucketNameByValue} from "../buckets.js";
|
|
6
4
|
|
|
7
5
|
/**
|
|
8
6
|
* Store temporary checkpoint states.
|
|
9
7
|
* We should only put/get binary data from this repository, consumer will load it into an existing state ViewDU object.
|
|
10
8
|
*/
|
|
11
|
-
export class CheckpointStateRepository extends
|
|
9
|
+
export class CheckpointStateRepository extends BinaryRepository<Uint8Array> {
|
|
12
10
|
constructor(config: ChainForkConfig, db: Db) {
|
|
13
|
-
// Pick some type but won't be used. Casted to any because no type can match `BeaconStateAllForks`
|
|
14
|
-
const type = ssz.phase0.BeaconState;
|
|
15
11
|
const bucket = Bucket.allForks_checkpointState;
|
|
16
12
|
// biome-ignore lint/suspicious/noExplicitAny: The type is complex to specify a proper override
|
|
17
|
-
super(config, db, bucket,
|
|
18
|
-
}
|
|
19
|
-
|
|
20
|
-
getId(): Uint8Array {
|
|
21
|
-
throw Error("CheckpointStateRepository does not work with value");
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
encodeValue(): Uint8Array {
|
|
25
|
-
throw Error("CheckpointStateRepository does not work with value");
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
decodeValue(): BeaconStateAllForks {
|
|
29
|
-
throw Error("CheckpointStateRepository does not work with value");
|
|
13
|
+
super(config, db, bucket, getBucketNameByValue(bucket));
|
|
30
14
|
}
|
|
31
15
|
}
|
|
@@ -8,9 +8,6 @@ export {BlockArchiveRepository} from "./blockArchive.js";
|
|
|
8
8
|
export {BLSToExecutionChangeRepository} from "./blsToExecutionChange.js";
|
|
9
9
|
export {DataColumnSidecarRepository} from "./dataColumnSidecar.js";
|
|
10
10
|
export {DataColumnSidecarArchiveRepository} from "./dataColumnSidecarArchive.js";
|
|
11
|
-
export {DepositDataRootRepository} from "./depositDataRoot.js";
|
|
12
|
-
export {DepositEventRepository} from "./depositEvent.js";
|
|
13
|
-
export {Eth1DataRepository} from "./eth1Data.js";
|
|
14
11
|
export {BestLightClientUpdateRepository} from "./lightclientBestUpdate.js";
|
|
15
12
|
export {CheckpointHeaderRepository} from "./lightclientCheckpointHeader.js";
|
|
16
13
|
export {SyncCommitteeRepository} from "./lightclientSyncCommittee.js";
|
|
@@ -1,39 +1,25 @@
|
|
|
1
1
|
import {ChainForkConfig} from "@lodestar/config";
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {Epoch, Root, RootHex, Slot, ssz} from "@lodestar/types";
|
|
2
|
+
import {BinaryRepository, Db} from "@lodestar/db";
|
|
3
|
+
import {Root, RootHex, Slot} from "@lodestar/types";
|
|
5
4
|
import {bytesToInt, toHex} from "@lodestar/utils";
|
|
6
|
-
import {getStateTypeFromBytes} from "../../util/multifork.js";
|
|
7
5
|
import {Bucket, getBucketNameByValue} from "../buckets.js";
|
|
8
6
|
import {getRootIndex, getRootIndexKey, storeRootIndex} from "./stateArchiveIndex.js";
|
|
9
7
|
|
|
10
|
-
export
|
|
8
|
+
export type BeaconStateArchive = {
|
|
9
|
+
serialize(): Uint8Array;
|
|
10
|
+
hashTreeRoot(): Root;
|
|
11
|
+
};
|
|
12
|
+
|
|
13
|
+
export class StateArchiveRepository extends BinaryRepository<Slot> {
|
|
11
14
|
constructor(config: ChainForkConfig, db: Db) {
|
|
12
|
-
// Pick some type but won't be used. Casted to any because no type can match `BeaconStateAllForks`
|
|
13
|
-
// biome-ignore lint/suspicious/noExplicitAny: We need to use `any` type here
|
|
14
|
-
const type = ssz.phase0.BeaconState as any;
|
|
15
15
|
const bucket = Bucket.allForks_stateArchive;
|
|
16
|
-
super(config, db, bucket,
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
// Overrides for multi-fork
|
|
20
|
-
|
|
21
|
-
encodeValue(value: BeaconStateAllForks): Uint8Array {
|
|
22
|
-
return value.serialize();
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
decodeValue(data: Uint8Array): BeaconStateAllForks {
|
|
26
|
-
return getStateTypeFromBytes(this.config, data).deserializeToViewDU(data);
|
|
16
|
+
super(config, db, bucket, getBucketNameByValue(bucket));
|
|
27
17
|
}
|
|
28
18
|
|
|
29
19
|
// Handle key as slot
|
|
30
20
|
|
|
31
|
-
async put(key: Slot, value:
|
|
32
|
-
await Promise.all([super.
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
getId(state: BeaconStateAllForks): Epoch {
|
|
36
|
-
return state.slot;
|
|
21
|
+
async put(key: Slot, value: BeaconStateArchive): Promise<void> {
|
|
22
|
+
await Promise.all([super.putBinary(key, value.serialize()), storeRootIndex(this.db, key, value.hashTreeRoot())]);
|
|
37
23
|
}
|
|
38
24
|
|
|
39
25
|
decodeKey(data: Uint8Array): number {
|
|
@@ -42,10 +28,10 @@ export class StateArchiveRepository extends Repository<Slot, BeaconStateAllForks
|
|
|
42
28
|
|
|
43
29
|
// Index Root -> Slot
|
|
44
30
|
|
|
45
|
-
async
|
|
31
|
+
async getBinaryByRoot(stateRoot: Root): Promise<Uint8Array | null> {
|
|
46
32
|
const slot = await this.getSlotByRoot(stateRoot);
|
|
47
33
|
if (slot !== null && Number.isInteger(slot)) {
|
|
48
|
-
return this.
|
|
34
|
+
return this.getBinary(slot);
|
|
49
35
|
}
|
|
50
36
|
return null;
|
|
51
37
|
}
|
|
@@ -4,14 +4,6 @@ import {BlobsBundle, ExecutionPayload, ExecutionRequests, Root, RootHex, Wei} fr
|
|
|
4
4
|
import {BlobAndProof} from "@lodestar/types/deneb";
|
|
5
5
|
import {BlobAndProofV2} from "@lodestar/types/fulu";
|
|
6
6
|
import {strip0xPrefix} from "@lodestar/utils";
|
|
7
|
-
import {
|
|
8
|
-
ErrorJsonRpcResponse,
|
|
9
|
-
HttpRpcError,
|
|
10
|
-
IJsonRpcHttpClient,
|
|
11
|
-
JsonRpcHttpClientEvent,
|
|
12
|
-
ReqOpts,
|
|
13
|
-
} from "../../eth1/provider/jsonRpcHttpClient.js";
|
|
14
|
-
import {bytesToData, numToQuantity} from "../../eth1/provider/utils.js";
|
|
15
7
|
import {Metrics} from "../../metrics/index.js";
|
|
16
8
|
import {EPOCHS_PER_BATCH} from "../../sync/constants.js";
|
|
17
9
|
import {getLodestarClientVersion} from "../../util/metadata.js";
|
|
@@ -27,6 +19,13 @@ import {
|
|
|
27
19
|
PayloadId,
|
|
28
20
|
VersionedHashes,
|
|
29
21
|
} from "./interface.js";
|
|
22
|
+
import {
|
|
23
|
+
ErrorJsonRpcResponse,
|
|
24
|
+
HttpRpcError,
|
|
25
|
+
IJsonRpcHttpClient,
|
|
26
|
+
JsonRpcHttpClientEvent,
|
|
27
|
+
ReqOpts,
|
|
28
|
+
} from "./jsonRpcHttpClient.js";
|
|
30
29
|
import {PayloadIdCache} from "./payloadIdCache.js";
|
|
31
30
|
import {
|
|
32
31
|
BLOB_AND_PROOF_V2_RPC_BYTES,
|
|
@@ -45,7 +44,7 @@ import {
|
|
|
45
44
|
serializePayloadAttributes,
|
|
46
45
|
serializeVersionedHashes,
|
|
47
46
|
} from "./types.js";
|
|
48
|
-
import {getExecutionEngineState} from "./utils.js";
|
|
47
|
+
import {bytesToData, getExecutionEngineState, numToQuantity} from "./utils.js";
|
|
49
48
|
|
|
50
49
|
export type ExecutionEngineModules = {
|
|
51
50
|
signal: AbortSignal;
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import {fromHex, toPrintableUrl} from "@lodestar/utils";
|
|
2
|
-
import {JsonRpcHttpClient} from "../../eth1/provider/jsonRpcHttpClient.js";
|
|
3
2
|
import {ExecutionEngineDisabled} from "./disabled.js";
|
|
4
3
|
import {
|
|
5
4
|
ExecutionEngineHttp,
|
|
@@ -8,6 +7,7 @@ import {
|
|
|
8
7
|
defaultExecutionEngineHttpOpts,
|
|
9
8
|
} from "./http.js";
|
|
10
9
|
import {IExecutionEngine} from "./interface.js";
|
|
10
|
+
import {JsonRpcHttpClient} from "./jsonRpcHttpClient.js";
|
|
11
11
|
import {ExecutionEngineMockBackend, ExecutionEngineMockOpts} from "./mock.js";
|
|
12
12
|
import {ExecutionEngineMockJsonRpcClient, JsonRpcBackend} from "./utils.js";
|
|
13
13
|
|
|
@@ -9,9 +9,9 @@ import {
|
|
|
9
9
|
import {BlobsBundle, ExecutionPayload, ExecutionRequests, Root, RootHex, Wei, capella} from "@lodestar/types";
|
|
10
10
|
import {BlobAndProof} from "@lodestar/types/deneb";
|
|
11
11
|
import {BlobAndProofV2} from "@lodestar/types/fulu";
|
|
12
|
-
import {DATA} from "../../eth1/provider/utils.js";
|
|
13
12
|
import {PayloadId, PayloadIdCache, WithdrawalV1} from "./payloadIdCache.js";
|
|
14
13
|
import {ExecutionPayloadBody} from "./types.js";
|
|
14
|
+
import {DATA} from "./utils.js";
|
|
15
15
|
|
|
16
16
|
export {PayloadIdCache, type PayloadId, type WithdrawalV1};
|
|
17
17
|
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import {EventEmitter} from "node:events";
|
|
2
2
|
import {StrictEventEmitter} from "strict-event-emitter-types";
|
|
3
3
|
import {ErrorAborted, Gauge, Histogram, TimeoutError, fetch, isValidHttpUrl, retry} from "@lodestar/utils";
|
|
4
|
-
import {IJson, RpcPayload} from "../interface.js";
|
|
5
4
|
import {JwtClaim, encodeJwtToken} from "./jwt.js";
|
|
5
|
+
import {IJson, RpcPayload} from "./utils.js";
|
|
6
6
|
|
|
7
7
|
export enum JsonRpcHttpClientEvent {
|
|
8
8
|
/**
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import crypto from "node:crypto";
|
|
2
|
+
import {ChainConfig} from "@lodestar/config";
|
|
2
3
|
import {
|
|
3
4
|
BLOB_TX_TYPE,
|
|
4
5
|
BYTES_PER_FIELD_ELEMENT,
|
|
@@ -7,11 +8,12 @@ import {
|
|
|
7
8
|
ForkPostBellatrix,
|
|
8
9
|
ForkPostCapella,
|
|
9
10
|
ForkSeq,
|
|
11
|
+
SLOTS_PER_EPOCH,
|
|
10
12
|
} from "@lodestar/params";
|
|
13
|
+
import {computeTimeAtSlot} from "@lodestar/state-transition";
|
|
11
14
|
import {ExecutionPayload, RootHex, bellatrix, deneb, ssz} from "@lodestar/types";
|
|
12
15
|
import {fromHex, toRootHex} from "@lodestar/utils";
|
|
13
16
|
import {ZERO_HASH_HEX} from "../../constants/index.js";
|
|
14
|
-
import {quantityToNum} from "../../eth1/provider/utils.js";
|
|
15
17
|
import {INTEROP_BLOCK_HASH} from "../../node/utils/interop/state.js";
|
|
16
18
|
import {kzgCommitmentToVersionedHash} from "../../util/blobs.js";
|
|
17
19
|
import {kzg} from "../../util/kzg.js";
|
|
@@ -29,20 +31,17 @@ import {
|
|
|
29
31
|
serializeExecutionPayload,
|
|
30
32
|
serializeExecutionRequests,
|
|
31
33
|
} from "./types.js";
|
|
32
|
-
import {JsonRpcBackend} from "./utils.js";
|
|
34
|
+
import {JsonRpcBackend, quantityToNum} from "./utils.js";
|
|
33
35
|
|
|
34
36
|
const INTEROP_GAS_LIMIT = 30e6;
|
|
35
37
|
const PRUNE_PAYLOAD_ID_AFTER_MS = 5000;
|
|
36
38
|
|
|
37
39
|
export type ExecutionEngineMockOpts = {
|
|
38
|
-
genesisBlockHash
|
|
40
|
+
genesisBlockHash?: string;
|
|
39
41
|
eth1BlockHash?: string;
|
|
40
42
|
onlyPredefinedResponses?: boolean;
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
electraForkTimestamp?: number;
|
|
44
|
-
fuluForkTimestamp?: number;
|
|
45
|
-
gloasForkTimestamp?: number;
|
|
43
|
+
genesisTime?: number;
|
|
44
|
+
config?: ChainConfig;
|
|
46
45
|
};
|
|
47
46
|
|
|
48
47
|
type ExecutionBlock = {
|
|
@@ -75,17 +74,21 @@ export class ExecutionEngineMockBackend implements JsonRpcBackend {
|
|
|
75
74
|
/** Preparing payloads to be retrieved via engine_getPayloadV1 */
|
|
76
75
|
private readonly preparingPayloads = new Map<number, PreparedPayload>();
|
|
77
76
|
private readonly payloadsForDeletion = new Map<number, number>();
|
|
78
|
-
|
|
79
77
|
private readonly predefinedPayloadStatuses = new Map<RootHex, PayloadStatus>();
|
|
80
78
|
|
|
81
79
|
private payloadId = 0;
|
|
80
|
+
private capellaForkTimestamp: number;
|
|
81
|
+
private denebForkTimestamp: number;
|
|
82
|
+
private electraForkTimestamp: number;
|
|
83
|
+
private fuluForkTimestamp: number;
|
|
84
|
+
private gloasForkTimestamp: number;
|
|
82
85
|
|
|
83
86
|
readonly handlers: {
|
|
84
87
|
[K in keyof EngineApiRpcParamTypes]: (...args: EngineApiRpcParamTypes[K]) => EngineApiRpcReturnTypes[K];
|
|
85
88
|
};
|
|
86
89
|
|
|
87
90
|
constructor(private readonly opts: ExecutionEngineMockOpts) {
|
|
88
|
-
this.validBlocks.set(opts.genesisBlockHash, {
|
|
91
|
+
this.validBlocks.set(opts.genesisBlockHash ?? ZERO_HASH_HEX, {
|
|
89
92
|
parentHash: ZERO_HASH_HEX,
|
|
90
93
|
blockHash: ZERO_HASH_HEX,
|
|
91
94
|
timestamp: 0,
|
|
@@ -101,6 +104,29 @@ export class ExecutionEngineMockBackend implements JsonRpcBackend {
|
|
|
101
104
|
blockNumber: 1,
|
|
102
105
|
});
|
|
103
106
|
|
|
107
|
+
const {config} = opts;
|
|
108
|
+
|
|
109
|
+
this.capellaForkTimestamp =
|
|
110
|
+
opts.genesisTime && config
|
|
111
|
+
? computeTimeAtSlot(config, config.CAPELLA_FORK_EPOCH * SLOTS_PER_EPOCH, opts.genesisTime)
|
|
112
|
+
: Infinity;
|
|
113
|
+
this.denebForkTimestamp =
|
|
114
|
+
opts.genesisTime && config
|
|
115
|
+
? computeTimeAtSlot(config, config.DENEB_FORK_EPOCH * SLOTS_PER_EPOCH, opts.genesisTime)
|
|
116
|
+
: Infinity;
|
|
117
|
+
this.electraForkTimestamp =
|
|
118
|
+
opts.genesisTime && config
|
|
119
|
+
? computeTimeAtSlot(config, config.ELECTRA_FORK_EPOCH * SLOTS_PER_EPOCH, opts.genesisTime)
|
|
120
|
+
: Infinity;
|
|
121
|
+
this.fuluForkTimestamp =
|
|
122
|
+
opts.genesisTime && config
|
|
123
|
+
? computeTimeAtSlot(config, config.FULU_FORK_EPOCH * SLOTS_PER_EPOCH, opts.genesisTime)
|
|
124
|
+
: Infinity;
|
|
125
|
+
this.gloasForkTimestamp =
|
|
126
|
+
opts.genesisTime && config
|
|
127
|
+
? computeTimeAtSlot(config, config.GLOAS_FORK_EPOCH * SLOTS_PER_EPOCH, opts.genesisTime)
|
|
128
|
+
: Infinity;
|
|
129
|
+
|
|
104
130
|
this.handlers = {
|
|
105
131
|
engine_newPayloadV1: this.notifyNewPayload.bind(this),
|
|
106
132
|
engine_newPayloadV2: this.notifyNewPayload.bind(this),
|
|
@@ -449,11 +475,11 @@ export class ExecutionEngineMockBackend implements JsonRpcBackend {
|
|
|
449
475
|
}
|
|
450
476
|
|
|
451
477
|
private timestampToFork(timestamp: number): ForkPostBellatrix {
|
|
452
|
-
if (timestamp >=
|
|
453
|
-
if (timestamp >=
|
|
454
|
-
if (timestamp >=
|
|
455
|
-
if (timestamp >=
|
|
456
|
-
if (timestamp >=
|
|
478
|
+
if (timestamp >= this.gloasForkTimestamp) return ForkName.gloas;
|
|
479
|
+
if (timestamp >= this.fuluForkTimestamp) return ForkName.fulu;
|
|
480
|
+
if (timestamp >= this.electraForkTimestamp) return ForkName.electra;
|
|
481
|
+
if (timestamp >= this.denebForkTimestamp) return ForkName.deneb;
|
|
482
|
+
if (timestamp >= this.capellaForkTimestamp) return ForkName.capella;
|
|
457
483
|
return ForkName.bellatrix;
|
|
458
484
|
}
|
|
459
485
|
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import {SLOTS_PER_EPOCH} from "@lodestar/params";
|
|
2
2
|
import {pruneSetToMax} from "@lodestar/utils";
|
|
3
|
-
import {DATA, QUANTITY} from "../../eth1/provider/utils.js";
|
|
4
3
|
import {PayloadAttributesRpc} from "./types.js";
|
|
4
|
+
import {DATA, QUANTITY} from "./utils.js";
|
|
5
5
|
|
|
6
6
|
// Idealy this only need to be set to the max head reorgs number
|
|
7
7
|
const MAX_PAYLOAD_IDS = SLOTS_PER_EPOCH;
|
|
@@ -23,6 +23,14 @@ import {
|
|
|
23
23
|
} from "@lodestar/types";
|
|
24
24
|
import {BlobAndProof} from "@lodestar/types/deneb";
|
|
25
25
|
import {BlobAndProofV2} from "@lodestar/types/fulu";
|
|
26
|
+
import {
|
|
27
|
+
ExecutionPayloadStatus,
|
|
28
|
+
ExecutionRequestType,
|
|
29
|
+
PayloadAttributes,
|
|
30
|
+
VersionedHashes,
|
|
31
|
+
isExecutionRequestType,
|
|
32
|
+
} from "./interface.js";
|
|
33
|
+
import {WithdrawalV1} from "./payloadIdCache.js";
|
|
26
34
|
import {
|
|
27
35
|
DATA,
|
|
28
36
|
QUANTITY,
|
|
@@ -32,15 +40,7 @@ import {
|
|
|
32
40
|
numToQuantity,
|
|
33
41
|
quantityToBigint,
|
|
34
42
|
quantityToNum,
|
|
35
|
-
} from "
|
|
36
|
-
import {
|
|
37
|
-
ExecutionPayloadStatus,
|
|
38
|
-
ExecutionRequestType,
|
|
39
|
-
PayloadAttributes,
|
|
40
|
-
VersionedHashes,
|
|
41
|
-
isExecutionRequestType,
|
|
42
|
-
} from "./interface.js";
|
|
43
|
-
import {WithdrawalV1} from "./payloadIdCache.js";
|
|
43
|
+
} from "./utils.js";
|
|
44
44
|
|
|
45
45
|
export type EngineApiRpcParamTypes = {
|
|
46
46
|
/**
|
|
@@ -1,14 +1,120 @@
|
|
|
1
|
-
import {isErrorAborted, isFetchError} from "@lodestar/utils";
|
|
2
|
-
import {
|
|
1
|
+
import {bigIntToBytes, bytesToBigInt, fromHex, fromHexInto, isErrorAborted, isFetchError, toHex} from "@lodestar/utils";
|
|
2
|
+
import {isQueueErrorAborted} from "../../util/queue/errors.js";
|
|
3
|
+
import {ExecutionEngineState, ExecutionPayloadStatus} from "./interface.js";
|
|
3
4
|
import {
|
|
4
5
|
ErrorJsonRpcResponse,
|
|
5
6
|
HttpRpcError,
|
|
6
7
|
IJsonRpcHttpClient,
|
|
7
8
|
JsonRpcHttpClientEvent,
|
|
8
9
|
JsonRpcHttpClientEventEmitter,
|
|
9
|
-
} from "
|
|
10
|
-
|
|
11
|
-
|
|
10
|
+
} from "./jsonRpcHttpClient.js";
|
|
11
|
+
|
|
12
|
+
/** QUANTITY as defined in ethereum execution layer JSON RPC https://eth.wiki/json-rpc/API */
|
|
13
|
+
export type QUANTITY = string;
|
|
14
|
+
/** DATA as defined in ethereum execution layer JSON RPC https://eth.wiki/json-rpc/API */
|
|
15
|
+
export type DATA = string;
|
|
16
|
+
|
|
17
|
+
export const rootHexRegex = /^0x[a-fA-F0-9]{64}$/;
|
|
18
|
+
|
|
19
|
+
export type IJson = string | number | boolean | undefined | IJson[] | {[key: string]: IJson};
|
|
20
|
+
|
|
21
|
+
export interface RpcPayload<P = IJson[]> {
|
|
22
|
+
method: string;
|
|
23
|
+
params: P;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
/**
|
|
27
|
+
* QUANTITY as defined in ethereum execution layer JSON RPC https://eth.wiki/json-rpc/API
|
|
28
|
+
*
|
|
29
|
+
* When encoding QUANTITIES (integers, numbers): encode as hex, prefix with “0x”, the most compact representation (slight exception: zero should be represented as “0x0”). Examples:
|
|
30
|
+
* - 0x41 (65 in decimal)
|
|
31
|
+
* - 0x400 (1024 in decimal)
|
|
32
|
+
* - WRONG: 0x (should always have at least one digit - zero is “0x0”)
|
|
33
|
+
* - WRONG: 0x0400 (no leading zeroes allowed)
|
|
34
|
+
* - WRONG: ff (must be prefixed 0x)
|
|
35
|
+
*/
|
|
36
|
+
export function numToQuantity(num: number | bigint): QUANTITY {
|
|
37
|
+
return "0x" + num.toString(16);
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
/**
|
|
41
|
+
* QUANTITY as defined in ethereum execution layer JSON RPC https://eth.wiki/json-rpc/API
|
|
42
|
+
*/
|
|
43
|
+
export function quantityToNum(hex: QUANTITY, id = ""): number {
|
|
44
|
+
const num = parseInt(hex, 16);
|
|
45
|
+
if (Number.isNaN(num) || num < 0) throw Error(`Invalid hex decimal ${id} '${hex}'`);
|
|
46
|
+
return num;
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
/**
|
|
50
|
+
* QUANTITY as defined in ethereum execution layer JSON RPC https://eth.wiki/json-rpc/API.
|
|
51
|
+
* Typesafe fn to convert hex string to bigint. The BigInt constructor param is any
|
|
52
|
+
*/
|
|
53
|
+
export function quantityToBigint(hex: QUANTITY, id = ""): bigint {
|
|
54
|
+
try {
|
|
55
|
+
return BigInt(hex);
|
|
56
|
+
} catch (e) {
|
|
57
|
+
throw Error(`Invalid hex bigint ${id} '${hex}': ${(e as Error).message}`);
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
/**
|
|
62
|
+
* QUANTITY as defined in ethereum execution layer JSON RPC https://eth.wiki/json-rpc/API.
|
|
63
|
+
*/
|
|
64
|
+
export function quantityToBytes(hex: QUANTITY): Uint8Array {
|
|
65
|
+
const bn = quantityToBigint(hex);
|
|
66
|
+
return bigIntToBytes(bn, 32, "le");
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
/**
|
|
70
|
+
* QUANTITY as defined in ethereum execution layer JSON RPC https://eth.wiki/json-rpc/API.
|
|
71
|
+
* Compress a 32 ByteVector into a QUANTITY
|
|
72
|
+
*/
|
|
73
|
+
export function bytesToQuantity(bytes: Uint8Array): QUANTITY {
|
|
74
|
+
const bn = bytesToBigInt(bytes, "le");
|
|
75
|
+
return numToQuantity(bn);
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
/**
|
|
79
|
+
* DATA as defined in ethereum execution layer JSON RPC https://eth.wiki/json-rpc/API
|
|
80
|
+
*
|
|
81
|
+
* When encoding UNFORMATTED DATA (byte arrays, account addresses, hashes, bytecode arrays): encode as hex, prefix with
|
|
82
|
+
* “0x”, two hex digits per byte. Examples:
|
|
83
|
+
*
|
|
84
|
+
* - 0x41 (size 1, “A”)
|
|
85
|
+
* - 0x004200 (size 3, “\0B\0”)
|
|
86
|
+
* - 0x (size 0, “”)
|
|
87
|
+
* - WRONG: 0xf0f0f (must be even number of digits)
|
|
88
|
+
* - WRONG: 004200 (must be prefixed 0x)
|
|
89
|
+
*/
|
|
90
|
+
export function bytesToData(bytes: Uint8Array): DATA {
|
|
91
|
+
return toHex(bytes);
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
/**
|
|
95
|
+
* DATA as defined in ethereum execution layer JSON RPC https://eth.wiki/json-rpc/API
|
|
96
|
+
*/
|
|
97
|
+
export function dataToBytes(hex: DATA, fixedLength: number | null): Uint8Array {
|
|
98
|
+
try {
|
|
99
|
+
const bytes = fromHex(hex);
|
|
100
|
+
if (fixedLength != null && bytes.length !== fixedLength) {
|
|
101
|
+
throw Error(`Wrong data length ${bytes.length} expected ${fixedLength}`);
|
|
102
|
+
}
|
|
103
|
+
return bytes;
|
|
104
|
+
} catch (e) {
|
|
105
|
+
(e as Error).message = `Invalid hex string: ${(e as Error).message}`;
|
|
106
|
+
throw e;
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
/**
|
|
111
|
+
* Convert DATA into a preallocated buffer
|
|
112
|
+
* fromHexInto will throw if buffer's length is not the same as the decoded hex length
|
|
113
|
+
*/
|
|
114
|
+
export function dataIntoBytes(hex: DATA, buffer: Uint8Array): Uint8Array {
|
|
115
|
+
fromHexInto(hex, buffer);
|
|
116
|
+
return buffer;
|
|
117
|
+
}
|
|
12
118
|
|
|
13
119
|
export type JsonRpcBackend = {
|
|
14
120
|
// biome-ignore lint/suspicious/noExplicitAny: We need to use `any` type here
|
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
|
|
5
|
+
export {checkAndPersistAnchorState} 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,
|