@lodestar/beacon-node 1.43.0-dev.2740f92909 → 1.43.0-dev.2fba242f5d
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/api/impl/beacon/blocks/index.d.ts.map +1 -1
- package/lib/api/impl/beacon/blocks/index.js +17 -9
- package/lib/api/impl/beacon/blocks/index.js.map +1 -1
- package/lib/api/impl/beacon/pool/index.d.ts.map +1 -1
- package/lib/api/impl/beacon/pool/index.js +45 -2
- package/lib/api/impl/beacon/pool/index.js.map +1 -1
- package/lib/api/impl/beacon/state/utils.d.ts +2 -2
- package/lib/api/impl/beacon/state/utils.d.ts.map +1 -1
- package/lib/api/impl/beacon/state/utils.js.map +1 -1
- package/lib/api/impl/debug/index.d.ts.map +1 -1
- package/lib/api/impl/debug/index.js +0 -1
- package/lib/api/impl/debug/index.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/validator/index.d.ts.map +1 -1
- package/lib/api/impl/validator/index.js +67 -5
- package/lib/api/impl/validator/index.js.map +1 -1
- package/lib/chain/GetBlobsTracker.d.ts +1 -1
- package/lib/chain/GetBlobsTracker.d.ts.map +1 -1
- package/lib/chain/GetBlobsTracker.js +1 -2
- package/lib/chain/GetBlobsTracker.js.map +1 -1
- package/lib/chain/archiveStore/archiveStore.d.ts.map +1 -1
- package/lib/chain/archiveStore/archiveStore.js.map +1 -1
- package/lib/chain/archiveStore/interface.d.ts +4 -4
- package/lib/chain/archiveStore/interface.d.ts.map +1 -1
- package/lib/chain/archiveStore/strategies/frequencyStateArchiveStrategy.d.ts +4 -4
- package/lib/chain/archiveStore/strategies/frequencyStateArchiveStrategy.d.ts.map +1 -1
- package/lib/chain/archiveStore/strategies/frequencyStateArchiveStrategy.js +2 -4
- package/lib/chain/archiveStore/strategies/frequencyStateArchiveStrategy.js.map +1 -1
- package/lib/chain/archiveStore/utils/archiveBlocks.d.ts +2 -2
- package/lib/chain/archiveStore/utils/archiveBlocks.d.ts.map +1 -1
- package/lib/chain/archiveStore/utils/archiveBlocks.js +110 -58
- package/lib/chain/archiveStore/utils/archiveBlocks.js.map +1 -1
- package/lib/chain/blocks/importBlock.d.ts.map +1 -1
- package/lib/chain/blocks/importBlock.js +49 -53
- package/lib/chain/blocks/importBlock.js.map +1 -1
- package/lib/chain/blocks/importExecutionPayload.d.ts +28 -14
- package/lib/chain/blocks/importExecutionPayload.d.ts.map +1 -1
- package/lib/chain/blocks/importExecutionPayload.js +88 -88
- package/lib/chain/blocks/importExecutionPayload.js.map +1 -1
- package/lib/chain/blocks/index.d.ts +5 -3
- package/lib/chain/blocks/index.d.ts.map +1 -1
- package/lib/chain/blocks/index.js +59 -26
- package/lib/chain/blocks/index.js.map +1 -1
- package/lib/chain/blocks/payloadEnvelopeInput/payloadEnvelopeInput.d.ts +4 -0
- package/lib/chain/blocks/payloadEnvelopeInput/payloadEnvelopeInput.d.ts.map +1 -1
- package/lib/chain/blocks/payloadEnvelopeInput/payloadEnvelopeInput.js +25 -1
- package/lib/chain/blocks/payloadEnvelopeInput/payloadEnvelopeInput.js.map +1 -1
- package/lib/chain/blocks/payloadEnvelopeInput/types.d.ts +1 -0
- package/lib/chain/blocks/payloadEnvelopeInput/types.d.ts.map +1 -1
- package/lib/chain/blocks/payloadEnvelopeProcessor.d.ts +5 -0
- package/lib/chain/blocks/payloadEnvelopeProcessor.d.ts.map +1 -1
- package/lib/chain/blocks/payloadEnvelopeProcessor.js +7 -5
- package/lib/chain/blocks/payloadEnvelopeProcessor.js.map +1 -1
- package/lib/chain/blocks/types.d.ts +16 -21
- package/lib/chain/blocks/types.d.ts.map +1 -1
- package/lib/chain/blocks/utils/chainSegment.d.ts +23 -2
- package/lib/chain/blocks/utils/chainSegment.d.ts.map +1 -1
- package/lib/chain/blocks/utils/chainSegment.js +89 -12
- package/lib/chain/blocks/utils/chainSegment.js.map +1 -1
- package/lib/chain/blocks/verifyBlock.d.ts +5 -3
- package/lib/chain/blocks/verifyBlock.d.ts.map +1 -1
- package/lib/chain/blocks/verifyBlock.js +50 -7
- package/lib/chain/blocks/verifyBlock.js.map +1 -1
- package/lib/chain/blocks/verifyBlocksExecutionPayloads.d.ts +0 -4
- package/lib/chain/blocks/verifyBlocksExecutionPayloads.d.ts.map +1 -1
- package/lib/chain/blocks/verifyBlocksExecutionPayloads.js +5 -2
- package/lib/chain/blocks/verifyBlocksExecutionPayloads.js.map +1 -1
- package/lib/chain/blocks/verifyBlocksSanityChecks.d.ts +2 -1
- package/lib/chain/blocks/verifyBlocksSanityChecks.d.ts.map +1 -1
- package/lib/chain/blocks/verifyBlocksSanityChecks.js +25 -5
- package/lib/chain/blocks/verifyBlocksSanityChecks.js.map +1 -1
- package/lib/chain/blocks/verifyExecutionPayloadEnvelope.d.ts +24 -0
- package/lib/chain/blocks/verifyExecutionPayloadEnvelope.d.ts.map +1 -0
- package/lib/chain/blocks/verifyExecutionPayloadEnvelope.js +76 -0
- package/lib/chain/blocks/verifyExecutionPayloadEnvelope.js.map +1 -0
- package/lib/chain/blocks/verifyPayloadsDataAvailability.d.ts +14 -0
- package/lib/chain/blocks/verifyPayloadsDataAvailability.d.ts.map +1 -0
- package/lib/chain/blocks/verifyPayloadsDataAvailability.js +30 -0
- package/lib/chain/blocks/verifyPayloadsDataAvailability.js.map +1 -0
- package/lib/chain/blocks/writePayloadEnvelopeInputToDb.d.ts +1 -1
- package/lib/chain/blocks/writePayloadEnvelopeInputToDb.d.ts.map +1 -1
- package/lib/chain/blocks/writePayloadEnvelopeInputToDb.js +2 -11
- package/lib/chain/blocks/writePayloadEnvelopeInputToDb.js.map +1 -1
- package/lib/chain/chain.d.ts +8 -6
- package/lib/chain/chain.d.ts.map +1 -1
- package/lib/chain/chain.js +38 -43
- package/lib/chain/chain.js.map +1 -1
- package/lib/chain/emitter.d.ts +16 -15
- package/lib/chain/emitter.d.ts.map +1 -1
- package/lib/chain/emitter.js +5 -4
- package/lib/chain/emitter.js.map +1 -1
- package/lib/chain/errors/attestationError.d.ts +8 -1
- package/lib/chain/errors/attestationError.d.ts.map +1 -1
- package/lib/chain/errors/attestationError.js +4 -0
- package/lib/chain/errors/attestationError.js.map +1 -1
- package/lib/chain/errors/blockError.d.ts +8 -1
- package/lib/chain/errors/blockError.d.ts.map +1 -1
- package/lib/chain/errors/blockError.js +2 -0
- package/lib/chain/errors/blockError.js.map +1 -1
- package/lib/chain/errors/executionPayloadBid.d.ts +5 -0
- package/lib/chain/errors/executionPayloadBid.d.ts.map +1 -1
- package/lib/chain/errors/executionPayloadBid.js +1 -0
- package/lib/chain/errors/executionPayloadBid.js.map +1 -1
- package/lib/chain/errors/executionPayloadEnvelope.d.ts +5 -0
- package/lib/chain/errors/executionPayloadEnvelope.d.ts.map +1 -1
- package/lib/chain/errors/executionPayloadEnvelope.js +1 -0
- package/lib/chain/errors/executionPayloadEnvelope.js.map +1 -1
- package/lib/chain/errors/index.d.ts +1 -0
- package/lib/chain/errors/index.d.ts.map +1 -1
- package/lib/chain/errors/index.js +1 -0
- package/lib/chain/errors/index.js.map +1 -1
- package/lib/chain/errors/proposerPreferences.d.ts +33 -0
- package/lib/chain/errors/proposerPreferences.d.ts.map +1 -0
- package/lib/chain/errors/proposerPreferences.js +13 -0
- package/lib/chain/errors/proposerPreferences.js.map +1 -0
- package/lib/chain/forkChoice/index.d.ts.map +1 -1
- package/lib/chain/forkChoice/index.js +11 -15
- package/lib/chain/forkChoice/index.js.map +1 -1
- package/lib/chain/interface.d.ts +7 -5
- package/lib/chain/interface.d.ts.map +1 -1
- package/lib/chain/interface.js.map +1 -1
- package/lib/chain/opPools/payloadAttestationPool.d.ts +3 -2
- package/lib/chain/opPools/payloadAttestationPool.d.ts.map +1 -1
- package/lib/chain/opPools/payloadAttestationPool.js +26 -4
- package/lib/chain/opPools/payloadAttestationPool.js.map +1 -1
- package/lib/chain/prepareNextSlot.d.ts.map +1 -1
- package/lib/chain/prepareNextSlot.js +47 -23
- package/lib/chain/prepareNextSlot.js.map +1 -1
- package/lib/chain/produceBlock/computeNewStateRoot.d.ts +3 -9
- package/lib/chain/produceBlock/computeNewStateRoot.d.ts.map +1 -1
- package/lib/chain/produceBlock/computeNewStateRoot.js +5 -32
- package/lib/chain/produceBlock/computeNewStateRoot.js.map +1 -1
- package/lib/chain/produceBlock/produceBlockBody.d.ts +12 -8
- package/lib/chain/produceBlock/produceBlockBody.d.ts.map +1 -1
- package/lib/chain/produceBlock/produceBlockBody.js +67 -25
- package/lib/chain/produceBlock/produceBlockBody.js.map +1 -1
- package/lib/chain/regen/errors.d.ts +1 -11
- package/lib/chain/regen/errors.d.ts.map +1 -1
- package/lib/chain/regen/errors.js +0 -2
- package/lib/chain/regen/errors.js.map +1 -1
- package/lib/chain/regen/interface.d.ts +7 -12
- package/lib/chain/regen/interface.d.ts.map +1 -1
- package/lib/chain/regen/interface.js +1 -0
- package/lib/chain/regen/interface.js.map +1 -1
- package/lib/chain/regen/queued.d.ts +6 -11
- package/lib/chain/regen/queued.d.ts.map +1 -1
- package/lib/chain/regen/queued.js +9 -44
- package/lib/chain/regen/queued.js.map +1 -1
- package/lib/chain/regen/regen.d.ts +0 -5
- package/lib/chain/regen/regen.d.ts.map +1 -1
- package/lib/chain/regen/regen.js +8 -38
- package/lib/chain/regen/regen.js.map +1 -1
- package/lib/chain/seenCache/index.d.ts +1 -0
- package/lib/chain/seenCache/index.d.ts.map +1 -1
- package/lib/chain/seenCache/index.js +1 -0
- package/lib/chain/seenCache/index.js.map +1 -1
- package/lib/chain/seenCache/seenPayloadEnvelopeInput.d.ts +19 -6
- package/lib/chain/seenCache/seenPayloadEnvelopeInput.d.ts.map +1 -1
- package/lib/chain/seenCache/seenPayloadEnvelopeInput.js +40 -22
- package/lib/chain/seenCache/seenPayloadEnvelopeInput.js.map +1 -1
- package/lib/chain/seenCache/seenProposerPreferences.d.ts +15 -0
- package/lib/chain/seenCache/seenProposerPreferences.d.ts.map +1 -0
- package/lib/chain/seenCache/seenProposerPreferences.js +25 -0
- package/lib/chain/seenCache/seenProposerPreferences.js.map +1 -0
- package/lib/chain/stateCache/datastore/db.d.ts +5 -4
- package/lib/chain/stateCache/datastore/db.d.ts.map +1 -1
- package/lib/chain/stateCache/datastore/db.js +10 -32
- package/lib/chain/stateCache/datastore/db.js.map +1 -1
- package/lib/chain/stateCache/datastore/file.d.ts +1 -1
- package/lib/chain/stateCache/datastore/file.d.ts.map +1 -1
- package/lib/chain/stateCache/datastore/file.js +5 -5
- package/lib/chain/stateCache/datastore/file.js.map +1 -1
- package/lib/chain/stateCache/datastore/types.d.ts +1 -1
- package/lib/chain/stateCache/datastore/types.d.ts.map +1 -1
- package/lib/chain/stateCache/fifoBlockStateCache.d.ts +1 -7
- package/lib/chain/stateCache/fifoBlockStateCache.d.ts.map +1 -1
- package/lib/chain/stateCache/fifoBlockStateCache.js +0 -8
- package/lib/chain/stateCache/fifoBlockStateCache.js.map +1 -1
- package/lib/chain/stateCache/persistentCheckpointsCache.d.ts +13 -30
- package/lib/chain/stateCache/persistentCheckpointsCache.d.ts.map +1 -1
- package/lib/chain/stateCache/persistentCheckpointsCache.js +120 -216
- package/lib/chain/stateCache/persistentCheckpointsCache.js.map +1 -1
- package/lib/chain/stateCache/types.d.ts +8 -15
- 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 +12 -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 +12 -0
- package/lib/chain/validation/attestation.js.map +1 -1
- package/lib/chain/validation/block.d.ts.map +1 -1
- package/lib/chain/validation/block.js +1 -0
- package/lib/chain/validation/block.js.map +1 -1
- package/lib/chain/validation/executionPayloadBid.d.ts.map +1 -1
- package/lib/chain/validation/executionPayloadBid.js +13 -1
- package/lib/chain/validation/executionPayloadBid.js.map +1 -1
- package/lib/chain/validation/executionPayloadEnvelope.d.ts.map +1 -1
- package/lib/chain/validation/executionPayloadEnvelope.js +21 -11
- package/lib/chain/validation/executionPayloadEnvelope.js.map +1 -1
- package/lib/chain/validation/payloadAttestationMessage.d.ts.map +1 -1
- package/lib/chain/validation/payloadAttestationMessage.js +4 -3
- package/lib/chain/validation/payloadAttestationMessage.js.map +1 -1
- package/lib/chain/validation/proposerPreferences.d.ts +8 -0
- package/lib/chain/validation/proposerPreferences.d.ts.map +1 -0
- package/lib/chain/validation/proposerPreferences.js +69 -0
- package/lib/chain/validation/proposerPreferences.js.map +1 -0
- package/lib/db/repositories/executionPayloadEnvelopeArchive.js +1 -1
- package/lib/db/repositories/executionPayloadEnvelopeArchive.js.map +1 -1
- package/lib/execution/engine/http.d.ts.map +1 -1
- package/lib/execution/engine/http.js +21 -14
- package/lib/execution/engine/http.js.map +1 -1
- package/lib/execution/engine/interface.d.ts +1 -0
- package/lib/execution/engine/interface.d.ts.map +1 -1
- package/lib/execution/engine/mock.d.ts.map +1 -1
- package/lib/execution/engine/mock.js +6 -0
- package/lib/execution/engine/mock.js.map +1 -1
- package/lib/execution/engine/types.d.ts +20 -0
- package/lib/execution/engine/types.d.ts.map +1 -1
- package/lib/execution/engine/types.js +18 -0
- package/lib/execution/engine/types.js.map +1 -1
- package/lib/metrics/metrics/lodestar.d.ts +1 -0
- package/lib/metrics/metrics/lodestar.d.ts.map +1 -1
- package/lib/metrics/metrics/lodestar.js +4 -0
- package/lib/metrics/metrics/lodestar.js.map +1 -1
- package/lib/network/gossip/interface.d.ts +7 -1
- package/lib/network/gossip/interface.d.ts.map +1 -1
- package/lib/network/gossip/interface.js +1 -0
- package/lib/network/gossip/interface.js.map +1 -1
- package/lib/network/gossip/scoringParameters.d.ts.map +1 -1
- package/lib/network/gossip/scoringParameters.js +12 -1
- package/lib/network/gossip/scoringParameters.js.map +1 -1
- package/lib/network/gossip/topic.d.ts +30 -748
- package/lib/network/gossip/topic.d.ts.map +1 -1
- package/lib/network/gossip/topic.js +6 -0
- package/lib/network/gossip/topic.js.map +1 -1
- package/lib/network/interface.d.ts +1 -0
- package/lib/network/interface.d.ts.map +1 -1
- package/lib/network/network.d.ts +1 -0
- package/lib/network/network.d.ts.map +1 -1
- package/lib/network/network.js +6 -1
- package/lib/network/network.js.map +1 -1
- package/lib/network/processor/gossipHandlers.d.ts.map +1 -1
- package/lib/network/processor/gossipHandlers.js +46 -22
- package/lib/network/processor/gossipHandlers.js.map +1 -1
- package/lib/network/processor/gossipQueues/index.d.ts.map +1 -1
- package/lib/network/processor/gossipQueues/index.js +5 -0
- package/lib/network/processor/gossipQueues/index.js.map +1 -1
- package/lib/network/processor/index.d.ts.map +1 -1
- package/lib/network/processor/index.js +6 -5
- package/lib/network/processor/index.js.map +1 -1
- package/lib/network/reqresp/handlers/beaconBlocksByRange.d.ts.map +1 -1
- package/lib/network/reqresp/handlers/beaconBlocksByRange.js +14 -6
- package/lib/network/reqresp/handlers/beaconBlocksByRange.js.map +1 -1
- package/lib/network/reqresp/handlers/blobSidecarsByRange.d.ts.map +1 -1
- package/lib/network/reqresp/handlers/blobSidecarsByRange.js +11 -5
- package/lib/network/reqresp/handlers/blobSidecarsByRange.js.map +1 -1
- package/lib/network/reqresp/handlers/dataColumnSidecarsByRange.d.ts.map +1 -1
- package/lib/network/reqresp/handlers/dataColumnSidecarsByRange.js +17 -5
- package/lib/network/reqresp/handlers/dataColumnSidecarsByRange.js.map +1 -1
- package/lib/network/reqresp/handlers/executionPayloadEnvelopesByRange.d.ts.map +1 -1
- package/lib/network/reqresp/handlers/executionPayloadEnvelopesByRange.js +7 -4
- package/lib/network/reqresp/handlers/executionPayloadEnvelopesByRange.js.map +1 -1
- package/lib/node/nodejs.d.ts.map +1 -1
- package/lib/node/nodejs.js +6 -4
- package/lib/node/nodejs.js.map +1 -1
- package/lib/sync/range/batch.d.ts +23 -2
- package/lib/sync/range/batch.d.ts.map +1 -1
- package/lib/sync/range/batch.js +84 -33
- package/lib/sync/range/batch.js.map +1 -1
- package/lib/sync/range/chain.d.ts +6 -2
- package/lib/sync/range/chain.d.ts.map +1 -1
- package/lib/sync/range/chain.js +26 -7
- package/lib/sync/range/chain.js.map +1 -1
- package/lib/sync/range/range.d.ts.map +1 -1
- package/lib/sync/range/range.js +17 -6
- package/lib/sync/range/range.js.map +1 -1
- package/lib/sync/types.d.ts +34 -0
- package/lib/sync/types.d.ts.map +1 -1
- package/lib/sync/types.js +34 -0
- package/lib/sync/types.js.map +1 -1
- package/lib/sync/unknownBlock.d.ts +22 -1
- package/lib/sync/unknownBlock.d.ts.map +1 -1
- package/lib/sync/unknownBlock.js +602 -53
- package/lib/sync/unknownBlock.js.map +1 -1
- package/lib/sync/utils/downloadByRange.d.ts +46 -10
- package/lib/sync/utils/downloadByRange.d.ts.map +1 -1
- package/lib/sync/utils/downloadByRange.js +164 -24
- package/lib/sync/utils/downloadByRange.js.map +1 -1
- package/lib/sync/utils/downloadByRoot.d.ts.map +1 -1
- package/lib/sync/utils/downloadByRoot.js +16 -2
- package/lib/sync/utils/downloadByRoot.js.map +1 -1
- package/lib/sync/utils/pendingBlocksTree.d.ts +0 -1
- package/lib/sync/utils/pendingBlocksTree.d.ts.map +1 -1
- package/lib/sync/utils/pendingBlocksTree.js +0 -9
- package/lib/sync/utils/pendingBlocksTree.js.map +1 -1
- package/lib/util/sszBytes.d.ts.map +1 -1
- package/lib/util/sszBytes.js +16 -3
- package/lib/util/sszBytes.js.map +1 -1
- package/package.json +17 -16
- package/src/api/impl/beacon/blocks/index.ts +22 -9
- package/src/api/impl/beacon/pool/index.ts +83 -1
- package/src/api/impl/beacon/state/utils.ts +2 -2
- package/src/api/impl/debug/index.ts +0 -1
- package/src/api/impl/lodestar/index.ts +1 -1
- package/src/api/impl/validator/index.ts +83 -6
- package/src/chain/GetBlobsTracker.ts +1 -2
- package/src/chain/archiveStore/archiveStore.ts +5 -5
- package/src/chain/archiveStore/interface.ts +4 -4
- package/src/chain/archiveStore/strategies/frequencyStateArchiveStrategy.ts +6 -8
- package/src/chain/archiveStore/utils/archiveBlocks.ts +153 -94
- package/src/chain/blocks/importBlock.ts +50 -77
- package/src/chain/blocks/importExecutionPayload.ts +109 -101
- package/src/chain/blocks/index.ts +74 -24
- package/src/chain/blocks/payloadEnvelopeInput/payloadEnvelopeInput.ts +33 -1
- package/src/chain/blocks/payloadEnvelopeInput/types.ts +1 -0
- package/src/chain/blocks/payloadEnvelopeProcessor.ts +7 -6
- package/src/chain/blocks/types.ts +16 -26
- package/src/chain/blocks/utils/chainSegment.ts +114 -17
- package/src/chain/blocks/verifyBlock.ts +70 -9
- package/src/chain/blocks/verifyBlocksExecutionPayloads.ts +6 -4
- package/src/chain/blocks/verifyBlocksSanityChecks.ts +26 -7
- package/src/chain/blocks/verifyExecutionPayloadEnvelope.ts +129 -0
- package/src/chain/blocks/verifyPayloadsDataAvailability.ts +41 -0
- package/src/chain/blocks/writePayloadEnvelopeInputToDb.ts +9 -18
- package/src/chain/chain.ts +53 -65
- package/src/chain/emitter.ts +15 -14
- package/src/chain/errors/attestationError.ts +6 -1
- package/src/chain/errors/blockError.ts +4 -1
- package/src/chain/errors/executionPayloadBid.ts +6 -0
- package/src/chain/errors/executionPayloadEnvelope.ts +6 -0
- package/src/chain/errors/index.ts +1 -0
- package/src/chain/errors/proposerPreferences.ts +39 -0
- package/src/chain/forkChoice/index.ts +8 -20
- package/src/chain/interface.ts +11 -3
- package/src/chain/opPools/payloadAttestationPool.ts +29 -8
- package/src/chain/prepareNextSlot.ts +55 -24
- package/src/chain/produceBlock/computeNewStateRoot.ts +6 -43
- package/src/chain/produceBlock/produceBlockBody.ts +89 -27
- package/src/chain/regen/errors.ts +1 -6
- package/src/chain/regen/interface.ts +7 -12
- package/src/chain/regen/queued.ts +14 -55
- package/src/chain/regen/regen.ts +10 -43
- package/src/chain/seenCache/index.ts +1 -0
- package/src/chain/seenCache/seenPayloadEnvelopeInput.ts +47 -25
- package/src/chain/seenCache/seenProposerPreferences.ts +29 -0
- package/src/chain/stateCache/datastore/db.ts +10 -33
- package/src/chain/stateCache/datastore/file.ts +5 -6
- package/src/chain/stateCache/datastore/types.ts +2 -3
- package/src/chain/stateCache/fifoBlockStateCache.ts +1 -10
- package/src/chain/stateCache/persistentCheckpointsCache.ts +139 -247
- package/src/chain/stateCache/types.ts +8 -14
- package/src/chain/validation/aggregateAndProof.ts +13 -0
- package/src/chain/validation/attestation.ts +13 -0
- package/src/chain/validation/block.ts +1 -0
- package/src/chain/validation/executionPayloadBid.ts +14 -0
- package/src/chain/validation/executionPayloadEnvelope.ts +22 -12
- package/src/chain/validation/payloadAttestationMessage.ts +5 -3
- package/src/chain/validation/proposerPreferences.ts +91 -0
- package/src/db/repositories/executionPayloadEnvelopeArchive.ts +1 -1
- package/src/execution/engine/http.ts +21 -14
- package/src/execution/engine/interface.ts +1 -0
- package/src/execution/engine/mock.ts +8 -1
- package/src/execution/engine/types.ts +41 -0
- package/src/metrics/metrics/lodestar.ts +4 -0
- package/src/network/gossip/interface.ts +6 -0
- package/src/network/gossip/scoringParameters.ts +14 -1
- package/src/network/gossip/topic.ts +6 -0
- package/src/network/interface.ts +1 -0
- package/src/network/network.ts +12 -1
- package/src/network/processor/gossipHandlers.ts +61 -27
- package/src/network/processor/gossipQueues/index.ts +5 -0
- package/src/network/processor/index.ts +6 -5
- package/src/network/reqresp/handlers/beaconBlocksByRange.ts +14 -6
- package/src/network/reqresp/handlers/blobSidecarsByRange.ts +11 -5
- package/src/network/reqresp/handlers/dataColumnSidecarsByRange.ts +17 -5
- package/src/network/reqresp/handlers/executionPayloadEnvelopesByRange.ts +7 -4
- package/src/node/nodejs.ts +6 -4
- package/src/sync/range/batch.ts +142 -38
- package/src/sync/range/chain.ts +37 -9
- package/src/sync/range/range.ts +18 -6
- package/src/sync/types.ts +72 -0
- package/src/sync/unknownBlock.ts +760 -57
- package/src/sync/utils/downloadByRange.ts +274 -39
- package/src/sync/utils/downloadByRoot.ts +24 -2
- package/src/sync/utils/pendingBlocksTree.ts +0 -15
- package/src/util/sszBytes.ts +21 -3
|
@@ -28,9 +28,10 @@ async function persistOrphanedBlock(slot, blockRoot, bytes, opts) {
|
|
|
28
28
|
* the next run should not reprocess finalzied block of this run.
|
|
29
29
|
*/
|
|
30
30
|
export async function archiveBlocks(config, db, forkChoice, lightclientServer, logger, finalizedCheckpoint, currentEpoch, archiveDataEpochs, persistOrphanedBlocks, persistOrphanedBlocksDir) {
|
|
31
|
-
// Use fork choice to determine the blocks to archive and delete
|
|
32
|
-
//
|
|
33
|
-
|
|
31
|
+
// Use fork choice to determine the blocks to archive and delete.
|
|
32
|
+
// `ancestors` is the canonical walk back from the finalized root, including the previous finalized
|
|
33
|
+
// block as its last element.
|
|
34
|
+
const { ancestors: finalizedCanonicalBlocks, nonAncestors: finalizedNonCanonicalBlocks } = forkChoice.getAllAncestorAndNonAncestorBlocksDefaultStatus(finalizedCheckpoint.rootHex);
|
|
34
35
|
// NOTE: The finalized block will be exactly the first block of `epoch` or previous
|
|
35
36
|
const finalizedPostDeneb = finalizedCheckpoint.epoch >= config.DENEB_FORK_EPOCH;
|
|
36
37
|
const finalizedPostFulu = finalizedCheckpoint.epoch >= config.FULU_FORK_EPOCH;
|
|
@@ -41,24 +42,34 @@ export async function archiveBlocks(config, db, forkChoice, lightclientServer, l
|
|
|
41
42
|
}));
|
|
42
43
|
const logCtx = { currentEpoch, finalizedEpoch: finalizedCheckpoint.epoch, finalizedRoot: finalizedCheckpoint.rootHex };
|
|
43
44
|
if (finalizedCanonicalBlockRoots.length > 0) {
|
|
44
|
-
await migrateBlocksFromHotToColdDb(db, finalizedCanonicalBlockRoots);
|
|
45
|
+
const migratedSlots = await migrateBlocksFromHotToColdDb(db, logger, finalizedCanonicalBlockRoots);
|
|
45
46
|
logger.verbose("Migrated blocks from hot DB to cold DB", {
|
|
46
47
|
...logCtx,
|
|
47
48
|
fromSlot: finalizedCanonicalBlockRoots[0].slot,
|
|
48
49
|
toSlot: finalizedCanonicalBlockRoots.at(-1)?.slot,
|
|
49
50
|
size: finalizedCanonicalBlockRoots.length,
|
|
51
|
+
migratedEntries: migratedSlots.length,
|
|
52
|
+
slotRange: prettyPrintIndices(migratedSlots),
|
|
50
53
|
});
|
|
51
54
|
if (finalizedPostDeneb) {
|
|
52
|
-
const migratedEntries = await migrateBlobSidecarsFromHotToColdDb(config, db, finalizedCanonicalBlockRoots, currentEpoch);
|
|
55
|
+
const migratedEntries = await migrateBlobSidecarsFromHotToColdDb(config, db, logger, finalizedCanonicalBlockRoots, currentEpoch);
|
|
53
56
|
logger.verbose("Migrated blobSidecars from hot DB to cold DB", { ...logCtx, migratedEntries });
|
|
54
57
|
}
|
|
55
58
|
if (finalizedPostFulu) {
|
|
56
|
-
const
|
|
57
|
-
logger.verbose("Migrated dataColumnSidecars from hot DB to cold DB", {
|
|
59
|
+
const migratedSlots = await migrateDataColumnSidecarsFromHotToColdDb(config, db, logger, finalizedCanonicalBlocks, currentEpoch);
|
|
60
|
+
logger.verbose("Migrated dataColumnSidecars from hot DB to cold DB", {
|
|
61
|
+
...logCtx,
|
|
62
|
+
migratedEntries: migratedSlots.length,
|
|
63
|
+
slotRange: prettyPrintIndices(migratedSlots),
|
|
64
|
+
});
|
|
58
65
|
}
|
|
59
66
|
if (finalizedPostGloas) {
|
|
60
|
-
const
|
|
61
|
-
logger.verbose("Migrated executionPayloadEnvelopes from hot DB to cold DB", {
|
|
67
|
+
const migratedSlots = await migrateExecutionPayloadEnvelopesFromHotToColdDb(config, db, logger, finalizedCanonicalBlocks);
|
|
68
|
+
logger.verbose("Migrated executionPayloadEnvelopes from hot DB to cold DB", {
|
|
69
|
+
...logCtx,
|
|
70
|
+
migratedEntries: migratedSlots.length,
|
|
71
|
+
slotRange: prettyPrintIndices(migratedSlots),
|
|
72
|
+
});
|
|
62
73
|
}
|
|
63
74
|
}
|
|
64
75
|
// deleteNonCanonicalBlocks
|
|
@@ -82,22 +93,25 @@ export async function archiveBlocks(config, db, forkChoice, lightclientServer, l
|
|
|
82
93
|
}
|
|
83
94
|
}));
|
|
84
95
|
}
|
|
85
|
-
|
|
86
|
-
|
|
96
|
+
const nonCanonicalSlots = finalizedNonCanonicalBlocks.map((summary) => summary.slot).sort((a, b) => a - b);
|
|
97
|
+
const nonCanonicalLogCtx = {
|
|
87
98
|
...logCtx,
|
|
88
|
-
|
|
89
|
-
|
|
99
|
+
count: nonCanonicalBlockRoots.length,
|
|
100
|
+
slotRange: prettyPrintIndices(nonCanonicalSlots),
|
|
101
|
+
};
|
|
102
|
+
await db.block.batchDelete(nonCanonicalBlockRoots);
|
|
103
|
+
logger.verbose("Deleted non canonical blocks from hot DB", nonCanonicalLogCtx);
|
|
90
104
|
if (finalizedPostDeneb) {
|
|
91
105
|
await db.blobSidecars.batchDelete(nonCanonicalBlockRoots);
|
|
92
|
-
logger.verbose("Deleted non canonical blobSidecars from hot DB",
|
|
106
|
+
logger.verbose("Deleted non canonical blobSidecars from hot DB", nonCanonicalLogCtx);
|
|
93
107
|
}
|
|
94
108
|
if (finalizedPostFulu) {
|
|
95
109
|
await db.dataColumnSidecar.deleteMany(nonCanonicalBlockRoots);
|
|
96
|
-
logger.verbose("Deleted non canonical dataColumnSidecars from hot DB",
|
|
110
|
+
logger.verbose("Deleted non canonical dataColumnSidecars from hot DB", nonCanonicalLogCtx);
|
|
97
111
|
}
|
|
98
112
|
if (finalizedPostGloas) {
|
|
99
113
|
await db.executionPayloadEnvelope.batchDelete(nonCanonicalBlockRoots);
|
|
100
|
-
logger.verbose("Deleted non canonical executionPayloadEnvelopes from hot DB",
|
|
114
|
+
logger.verbose("Deleted non canonical executionPayloadEnvelopes from hot DB", nonCanonicalLogCtx);
|
|
101
115
|
}
|
|
102
116
|
}
|
|
103
117
|
// Delete expired blobs
|
|
@@ -170,22 +184,25 @@ export async function archiveBlocks(config, db, forkChoice, lightclientServer, l
|
|
|
170
184
|
totalArchived: finalizedCanonicalBlocks.length,
|
|
171
185
|
});
|
|
172
186
|
}
|
|
173
|
-
async function migrateBlocksFromHotToColdDb(db, blocks) {
|
|
174
|
-
//
|
|
175
|
-
//
|
|
176
|
-
// the
|
|
187
|
+
async function migrateBlocksFromHotToColdDb(db, logger, blocks) {
|
|
188
|
+
// The input includes the previous finalized block as the last ancestor; its SignedBeaconBlock
|
|
189
|
+
// was archived on a previous run and is no longer in hot db. `getBinary` returning null for any
|
|
190
|
+
// block in the batch is therefore treated as "already migrated, skip" rather than an error.
|
|
191
|
+
const migratedSlots = [];
|
|
177
192
|
for (let i = 0; i < blocks.length; i += BLOCK_BATCH_SIZE) {
|
|
178
193
|
const toIdx = Math.min(i + BLOCK_BATCH_SIZE, blocks.length);
|
|
179
194
|
const canonicalBlocks = blocks.slice(i, toIdx);
|
|
180
|
-
// processCanonicalBlocks
|
|
181
195
|
if (canonicalBlocks.length === 0)
|
|
182
|
-
|
|
196
|
+
break;
|
|
183
197
|
// load Buffer instead of SignedBeaconBlock to improve performance
|
|
184
|
-
const canonicalBlockEntries = await Promise.all(canonicalBlocks.map(async (block) => {
|
|
185
|
-
// Here we assume the blocks are already in the hot db
|
|
198
|
+
const canonicalBlockEntries = (await Promise.all(canonicalBlocks.map(async (block) => {
|
|
186
199
|
const blockBuffer = await db.block.getBinary(block.root);
|
|
187
200
|
if (!blockBuffer) {
|
|
188
|
-
|
|
201
|
+
logger.debug("Block in forkchoice but missing in hot db, could be already archived", {
|
|
202
|
+
slot: block.slot,
|
|
203
|
+
root: toRootHex(block.root),
|
|
204
|
+
});
|
|
205
|
+
return null;
|
|
189
206
|
}
|
|
190
207
|
return {
|
|
191
208
|
key: block.slot,
|
|
@@ -195,19 +212,24 @@ async function migrateBlocksFromHotToColdDb(db, blocks) {
|
|
|
195
212
|
// TODO: Benchmark if faster to slice Buffer or fromHex()
|
|
196
213
|
parentRoot: getParentRootFromSignedBlock(blockBuffer),
|
|
197
214
|
};
|
|
198
|
-
}));
|
|
199
|
-
|
|
215
|
+
}))).filter((entry) => entry !== null);
|
|
216
|
+
if (canonicalBlockEntries.length === 0)
|
|
217
|
+
continue;
|
|
200
218
|
await Promise.all([
|
|
201
219
|
db.blockArchive.batchPutBinary(canonicalBlockEntries),
|
|
202
|
-
db.block.batchDelete(
|
|
220
|
+
db.block.batchDelete(canonicalBlockEntries.map((entry) => entry.blockRoot)),
|
|
203
221
|
]);
|
|
222
|
+
for (const entry of canonicalBlockEntries)
|
|
223
|
+
migratedSlots.push(entry.slot);
|
|
204
224
|
}
|
|
225
|
+
// Ancestor walk is newest → oldest; sort ascending so `prettyPrintIndices` renders cleanly.
|
|
226
|
+
return migratedSlots.sort((a, b) => a - b);
|
|
205
227
|
}
|
|
206
228
|
/**
|
|
207
229
|
* Migrate blobSidecars from hot db to cold db.
|
|
208
230
|
* @returns true if we do that, false if block is out of range data.
|
|
209
231
|
*/
|
|
210
|
-
async function migrateBlobSidecarsFromHotToColdDb(config, db, blocks, currentEpoch) {
|
|
232
|
+
async function migrateBlobSidecarsFromHotToColdDb(config, db, logger, blocks, currentEpoch) {
|
|
211
233
|
let migratedWrappedBlobSidecars = 0;
|
|
212
234
|
for (let i = 0; i < blocks.length; i += BLOB_SIDECAR_BATCH_SIZE) {
|
|
213
235
|
const toIdx = Math.min(i + BLOB_SIDECAR_BATCH_SIZE, blocks.length);
|
|
@@ -216,7 +238,7 @@ async function migrateBlobSidecarsFromHotToColdDb(config, db, blocks, currentEpo
|
|
|
216
238
|
if (canonicalBlocks.length === 0)
|
|
217
239
|
break;
|
|
218
240
|
// load Buffer instead of ssz deserialized to improve performance
|
|
219
|
-
const canonicalBlobSidecarsEntries = await Promise.all(canonicalBlocks
|
|
241
|
+
const canonicalBlobSidecarsEntries = (await Promise.all(canonicalBlocks
|
|
220
242
|
.filter((block) => {
|
|
221
243
|
const blockSlot = block.slot;
|
|
222
244
|
const blockEpoch = computeEpochAtSlot(blockSlot);
|
|
@@ -227,14 +249,19 @@ async function migrateBlobSidecarsFromHotToColdDb(config, db, blocks, currentEpo
|
|
|
227
249
|
blockEpoch >= currentEpoch - config.MIN_EPOCHS_FOR_BLOB_SIDECARS_REQUESTS);
|
|
228
250
|
})
|
|
229
251
|
.map(async (block) => {
|
|
230
|
-
//
|
|
231
|
-
//
|
|
252
|
+
// The ancestor walk includes the boundary (previous finalized) block; on first
|
|
253
|
+
// finalization that boundary is the anchor which has no blob sidecars in hot db.
|
|
254
|
+
// Treat a null hot-db entry as "nothing to migrate" rather than an error.
|
|
232
255
|
const bytes = await db.blobSidecars.getBinary(block.root);
|
|
233
256
|
if (!bytes) {
|
|
234
|
-
|
|
257
|
+
logger.debug("BlobSidecars in forkchoice but missing in hot db, could be already archived", {
|
|
258
|
+
slot: block.slot,
|
|
259
|
+
root: toRootHex(block.root),
|
|
260
|
+
});
|
|
261
|
+
return null;
|
|
235
262
|
}
|
|
236
263
|
return { key: block.slot, value: bytes };
|
|
237
|
-
}));
|
|
264
|
+
}))).filter((e) => e !== null);
|
|
238
265
|
// put to blockArchive db and delete block db
|
|
239
266
|
await Promise.all([
|
|
240
267
|
db.blobSidecarsArchive.batchPutBinary(canonicalBlobSidecarsEntries),
|
|
@@ -245,17 +272,27 @@ async function migrateBlobSidecarsFromHotToColdDb(config, db, blocks, currentEpo
|
|
|
245
272
|
return migratedWrappedBlobSidecars;
|
|
246
273
|
}
|
|
247
274
|
// TODO: This function can be simplified further by reducing layers of promises in a loop
|
|
248
|
-
|
|
249
|
-
|
|
275
|
+
/**
|
|
276
|
+
* Post-gloas the data columns of a Gloas block are tied to its execution payload envelope —
|
|
277
|
+
* columns only exist once the FULL variant of the block is in the proto-array. Pre-Gloas (Fulu)
|
|
278
|
+
* blocks only have a FULL variant, so the `payloadStatus === FULL` filter passes them all.
|
|
279
|
+
* Blocks whose canonical variant is PENDING/EMPTY are skipped here — their columns will be picked
|
|
280
|
+
* up on a later run once the FULL variant appears in the ancestor walk.
|
|
281
|
+
*/
|
|
282
|
+
async function migrateDataColumnSidecarsFromHotToColdDb(config, db, logger, canonicalBlocks, currentEpoch) {
|
|
283
|
+
const columnBlocks = canonicalBlocks.filter((block) => config.getForkSeq(block.slot) < ForkSeq.gloas || block.payloadStatus === PayloadStatus.FULL);
|
|
284
|
+
if (columnBlocks.length === 0)
|
|
285
|
+
return [];
|
|
286
|
+
const blocks = columnBlocks.map((block) => ({ slot: block.slot, root: fromHex(block.blockRoot) }));
|
|
287
|
+
const migratedSlots = [];
|
|
250
288
|
for (let i = 0; i < blocks.length; i += BLOB_SIDECAR_BATCH_SIZE) {
|
|
251
289
|
const toIdx = Math.min(i + BLOB_SIDECAR_BATCH_SIZE, blocks.length);
|
|
252
|
-
const
|
|
253
|
-
|
|
254
|
-
if (canonicalBlocks.length === 0)
|
|
290
|
+
const batch = blocks.slice(i, toIdx);
|
|
291
|
+
if (batch.length === 0)
|
|
255
292
|
break;
|
|
256
293
|
const promises = [];
|
|
257
294
|
// load Buffer instead of ssz deserialized to improve performance
|
|
258
|
-
for (const block of
|
|
295
|
+
for (const block of batch) {
|
|
259
296
|
const blockSlot = block.slot;
|
|
260
297
|
const blockEpoch = computeEpochAtSlot(blockSlot);
|
|
261
298
|
if (config.getForkSeq(blockSlot) < ForkSeq.fulu ||
|
|
@@ -265,27 +302,38 @@ async function migrateDataColumnSidecarsFromHotToColdDb(config, db, logger, bloc
|
|
|
265
302
|
}
|
|
266
303
|
// Here we assume the data column sidecars are already in the hot db
|
|
267
304
|
const dataColumnSidecarBytes = await fromAsync(db.dataColumnSidecar.valuesStreamBinary(block.root));
|
|
268
|
-
|
|
269
|
-
|
|
305
|
+
if (dataColumnSidecarBytes.length === 0) {
|
|
306
|
+
// Empty stream: either the block has no blobs, or columns were already archived on a
|
|
307
|
+
// previous run (boundary block). Nothing to migrate.
|
|
308
|
+
logger.debug("DataColumnSidecars in forkchoice but missing in hot db, could be already archived", {
|
|
309
|
+
slot: block.slot,
|
|
310
|
+
root: toRootHex(block.root),
|
|
311
|
+
});
|
|
312
|
+
continue;
|
|
313
|
+
}
|
|
314
|
+
logger.verbose("Migrated dataColumnSidecars for block", {
|
|
270
315
|
currentEpoch,
|
|
271
316
|
slot: block.slot,
|
|
272
317
|
root: toRootHex(block.root),
|
|
273
318
|
numSidecars: dataColumnSidecarBytes.length,
|
|
274
319
|
});
|
|
275
320
|
promises.push(db.dataColumnSidecarArchive.putManyBinary(block.slot, dataColumnSidecarBytes.map((p) => ({ key: p.id, value: p.value }))));
|
|
276
|
-
|
|
321
|
+
migratedSlots.push(block.slot);
|
|
277
322
|
}
|
|
278
|
-
promises.push(db.dataColumnSidecar.deleteMany(
|
|
279
|
-
// put to blockArchive db and delete block db
|
|
323
|
+
promises.push(db.dataColumnSidecar.deleteMany(batch.map((block) => block.root)));
|
|
280
324
|
await Promise.all(promises);
|
|
281
325
|
}
|
|
282
|
-
|
|
326
|
+
// Ancestor walk is newest → oldest; sort ascending so `prettyPrintIndices` renders cleanly.
|
|
327
|
+
return migratedSlots.sort((a, b) => a - b);
|
|
283
328
|
}
|
|
329
|
+
/**
|
|
330
|
+
* Post-gloas given a finalized checkpoint at a block root, payload of that block root
|
|
331
|
+
* is not considered finalized, hence they are archived in the next run.
|
|
332
|
+
*/
|
|
284
333
|
async function migrateExecutionPayloadEnvelopesFromHotToColdDb(config, db, logger, canonicalBlocks) {
|
|
285
|
-
|
|
286
|
-
const payloadBlocks = canonicalBlocks.filter((block) => config.getForkSeq(block.slot) >= ForkSeq.gloas && block.payloadStatus === PayloadStatus.FULL);
|
|
334
|
+
const payloadBlocks = canonicalBlocks.filter((block) => config.getForkSeq(block.slot) < ForkSeq.gloas || block.payloadStatus === PayloadStatus.FULL);
|
|
287
335
|
if (payloadBlocks.length === 0)
|
|
288
|
-
return
|
|
336
|
+
return [];
|
|
289
337
|
const blocks = payloadBlocks.map((block) => ({ slot: block.slot, root: fromHex(block.blockRoot) }));
|
|
290
338
|
const envelopeEntries = [];
|
|
291
339
|
const migratedRoots = [];
|
|
@@ -297,17 +345,21 @@ async function migrateExecutionPayloadEnvelopesFromHotToColdDb(config, db, logge
|
|
|
297
345
|
migratedRoots.push(blocks[i].root);
|
|
298
346
|
}
|
|
299
347
|
else {
|
|
300
|
-
logger.debug("
|
|
348
|
+
logger.debug("ExecutionPayloadEnvelope in forkchoice but missing in hot db, could be already archived", {
|
|
349
|
+
slot: blocks[i].slot,
|
|
350
|
+
root: toRootHex(blocks[i].root),
|
|
351
|
+
});
|
|
301
352
|
}
|
|
302
353
|
}
|
|
303
|
-
if (envelopeEntries.length
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
354
|
+
if (envelopeEntries.length === 0)
|
|
355
|
+
return [];
|
|
356
|
+
await Promise.all([
|
|
357
|
+
db.executionPayloadEnvelopeArchive.batchPutBinary(envelopeEntries),
|
|
358
|
+
db.executionPayloadEnvelope.batchDelete(migratedRoots),
|
|
359
|
+
]);
|
|
360
|
+
// Slots are ascending in hot-db key order — sort to guarantee `prettyPrintIndices` output is clean
|
|
361
|
+
// regardless of ancestor-walk order (newest → oldest).
|
|
362
|
+
return envelopeEntries.map((entry) => entry.key).sort((a, b) => a - b);
|
|
311
363
|
}
|
|
312
364
|
/**
|
|
313
365
|
* ```
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"archiveBlocks.js","sourceRoot":"","sources":["../../../../src/chain/archiveStore/utils/archiveBlocks.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"archiveBlocks.js","sourceRoot":"","sources":["../../../../src/chain/archiveStore/utils/archiveBlocks.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"importBlock.d.ts","sourceRoot":"","sources":["../../../src/chain/blocks/importBlock.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"importBlock.d.ts","sourceRoot":"","sources":["../../../src/chain/blocks/importBlock.ts"],"names":[],"mappings":"AAWA,OAAO,EAAiB,eAAe,EAA+C,MAAM,kBAAkB,CAAC;AAC/G,OAAO,EACL,gBAAgB,EAQjB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAC,WAAW,EAAgC,OAAO,EAAsB,MAAM,EAAM,MAAM,iBAAiB,CAAC;AAMpH,OAAO,KAAK,EAAC,WAAW,EAAC,MAAM,aAAa,CAAC;AAM7C,OAAO,EAAuB,kBAAkB,EAAE,eAAe,EAAC,MAAM,YAAY,CAAC;AAYrF;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAsB,WAAW,CAC/B,IAAI,EAAE,WAAW,EACjB,kBAAkB,EAAE,kBAAkB,EACtC,IAAI,EAAE,eAAe,GACpB,OAAO,CAAC,IAAI,CAAC,CAoiBf;AAED,wBAAgB,wBAAwB,CACtC,IAAI,EAAE,WAAW,EAEjB,CAAC,EAAE,gBAAgB,EACnB,MAAM,EAAE,MAAM,CAAC,UAAU,EACzB,WAAW,EAAE,MAAM,EACnB,WAAW,EAAE,WAAW,EACxB,kBAAkB,EAAE,MAAM,CAAC,kBAAkB,GAC5C,IAAI,CAQN;AAED,wBAAgB,yBAAyB,CACvC,IAAI,EAAE,WAAW,EACjB,KAAK,EAAE,gBAAgB,EACvB,MAAM,EAAE,MAAM,CAAC,UAAU,EACzB,WAAW,EAAE,MAAM,EACnB,WAAW,EAAE,WAAW,CAAC,eAAe,CAAC,EACzC,kBAAkB,EAAE,OAAO,CAAC,kBAAkB,GAC7C,IAAI,CA+BN"}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { BitArray } from "@chainsafe/ssz";
|
|
2
2
|
import { routes } from "@lodestar/api";
|
|
3
|
-
import { AncestorStatus, EpochDifference, ExecutionStatus, ForkChoiceError, ForkChoiceErrorCode, NotReorgedReason, getSafeExecutionBlockHash,
|
|
4
|
-
import { ForkSeq, MAX_SEED_LOOKAHEAD, SLOTS_PER_EPOCH
|
|
3
|
+
import { AncestorStatus, EpochDifference, ExecutionStatus, ForkChoiceError, ForkChoiceErrorCode, NotReorgedReason, getSafeExecutionBlockHash, } from "@lodestar/fork-choice";
|
|
4
|
+
import { ForkSeq, MAX_SEED_LOOKAHEAD, SLOTS_PER_EPOCH } from "@lodestar/params";
|
|
5
5
|
import { RootCache, computeEpochAtSlot, computeStartSlotAtEpoch, computeTimeAtSlot, isStartSlotOfEpoch, isStatePostAltair, isStatePostBellatrix, } from "@lodestar/state-transition";
|
|
6
|
-
import { isGloasBeaconBlock, ssz
|
|
6
|
+
import { isGloasBeaconBlock, ssz } from "@lodestar/types";
|
|
7
7
|
import { isErrorAborted, toRootHex } from "@lodestar/utils";
|
|
8
8
|
import { ZERO_HASH_HEX } from "../../constants/index.js";
|
|
9
9
|
import { callInNextEventLoop } from "../../util/eventLoop.js";
|
|
@@ -12,7 +12,7 @@ import { isQueueErrorAborted } from "../../util/queue/index.js";
|
|
|
12
12
|
import { ChainEvent } from "../emitter.js";
|
|
13
13
|
import { ForkchoiceCaller } from "../forkChoice/index.js";
|
|
14
14
|
import { REPROCESS_MIN_TIME_TO_NEXT_SLOT_SEC } from "../reprocess.js";
|
|
15
|
-
import {
|
|
15
|
+
import { toCheckpointHex } from "../stateCache/persistentCheckpointsCache.js";
|
|
16
16
|
import { isBlockInputBlobs, isBlockInputColumns } from "./blockInput/blockInput.js";
|
|
17
17
|
import { AttestationImportOpt } from "./types.js";
|
|
18
18
|
import { getCheckpointFromState } from "./utils/checkpoint.js";
|
|
@@ -45,7 +45,8 @@ const EVENTSTREAM_EMIT_RECENT_BLOCK_SLOTS = 64;
|
|
|
45
45
|
* 7. Add post state to stateCache
|
|
46
46
|
*/
|
|
47
47
|
export async function importBlock(fullyVerifiedBlock, opts) {
|
|
48
|
-
const { blockInput,
|
|
48
|
+
const { blockInput, postState, parentBlockSlot, dataAvailabilityStatus, indexedAttestations } = fullyVerifiedBlock;
|
|
49
|
+
let { executionStatus } = fullyVerifiedBlock;
|
|
49
50
|
const block = blockInput.getBlock();
|
|
50
51
|
const source = blockInput.getBlockSource();
|
|
51
52
|
const { slot: blockSlot } = block.message;
|
|
@@ -55,7 +56,7 @@ export async function importBlock(fullyVerifiedBlock, opts) {
|
|
|
55
56
|
const currentEpoch = computeEpochAtSlot(currentSlot);
|
|
56
57
|
const blockEpoch = computeEpochAtSlot(blockSlot);
|
|
57
58
|
const prevFinalizedEpoch = this.forkChoice.getFinalizedCheckpoint().epoch;
|
|
58
|
-
const blockDelaySec = fullyVerifiedBlock.seenTimestampSec - computeTimeAtSlot(this.config, blockSlot,
|
|
59
|
+
const blockDelaySec = fullyVerifiedBlock.seenTimestampSec - computeTimeAtSlot(this.config, blockSlot, postState.genesisTime);
|
|
59
60
|
const recvToValLatency = Date.now() / 1000 - (opts.seenTimestampSec ?? Date.now() / 1000);
|
|
60
61
|
const fork = this.config.getForkSeq(blockSlot);
|
|
61
62
|
// this is just a type assertion since blockinput with dataPromise type will not end up here
|
|
@@ -74,42 +75,37 @@ export async function importBlock(fullyVerifiedBlock, opts) {
|
|
|
74
75
|
});
|
|
75
76
|
// 2. Import block to fork choice
|
|
76
77
|
// Should compute checkpoint balances before forkchoice.onBlock
|
|
77
|
-
this.checkpointBalancesCache.processState(blockRootHex,
|
|
78
|
-
|
|
78
|
+
this.checkpointBalancesCache.processState(blockRootHex, postState);
|
|
79
|
+
if (fork >= ForkSeq.gloas) {
|
|
80
|
+
const parentRootHex = toRootHex(block.message.parentRoot);
|
|
81
|
+
const parentBlock = this.forkChoice.getBlockHexDefaultStatus(parentRootHex);
|
|
82
|
+
if (parentBlock === null) {
|
|
83
|
+
throw Error(`Parent block not found in forkChoice, parentRoot=${parentRootHex}`);
|
|
84
|
+
}
|
|
85
|
+
if (parentBlock.executionStatus === ExecutionStatus.Invalid) {
|
|
86
|
+
throw Error(`Parent block has invalid execution status, parentRoot=${parentRootHex}`);
|
|
87
|
+
}
|
|
88
|
+
executionStatus = parentBlock.executionStatus;
|
|
89
|
+
}
|
|
90
|
+
const blockSummary = this.forkChoice.onBlock(block.message, postState, blockDelaySec, currentSlot, executionStatus, dataAvailabilityStatus);
|
|
79
91
|
// This adds the state necessary to process the next block
|
|
80
92
|
// Some block event handlers require state being in state cache so need to do this before emitting EventType.block
|
|
81
|
-
|
|
82
|
-
//
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
block: block,
|
|
91
|
-
forkName: blockInput.forkName,
|
|
92
|
-
sampledColumns: this.custodyConfig.sampledColumns,
|
|
93
|
-
custodyColumns: this.custodyConfig.custodyColumns,
|
|
94
|
-
timeCreatedSec: fullyVerifiedBlock.seenTimestampSec,
|
|
95
|
-
});
|
|
96
|
-
this.logger.debug("Created PayloadEnvelopeInput for block", {
|
|
97
|
-
slot: blockSlot,
|
|
98
|
-
root: blockRootHex,
|
|
99
|
-
source: source.source,
|
|
100
|
-
...(opts.seenTimestampSec !== undefined ? { recvToImport: Date.now() / 1000 - opts.seenTimestampSec } : {}),
|
|
101
|
-
});
|
|
93
|
+
this.regen.processState(blockRootHex, postState);
|
|
94
|
+
// For range sync we skip triggerGetBlobs because column fetching is handled in the range path.
|
|
95
|
+
if (fork >= ForkSeq.gloas && !opts.fromRangeSync) {
|
|
96
|
+
const payloadInput = this.seenPayloadEnvelopeInputCache.get(blockRootHex);
|
|
97
|
+
// PayloadEnvelopeInput is supposed to have right after we have block
|
|
98
|
+
// there are 4 sources of them: gossip, by root, by range and api
|
|
99
|
+
if (!payloadInput) {
|
|
100
|
+
throw Error(`PayloadEnvelopeInput not seeded for block ${blockRootHex} before importBlock`);
|
|
101
|
+
}
|
|
102
102
|
// Immediately attempt fetch of data columns from execution engine as the bid contains kzg commitments
|
|
103
103
|
// which is all the information we need so there is no reason to delay until execution payload arrives
|
|
104
104
|
// TODO GLOAS: If we want EL retries after this initial attempt, add an explicit retry policy here
|
|
105
105
|
// (for example later in the slot). Do not couple retries to incoming gossip columns.
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
this.processExecutionPayload(payloadInput, { validSignature: true }).catch((e) => {
|
|
110
|
-
this.logger.debug("Error processing execution payload after getBlobs", { slot: blockSlot, root: blockRootHex }, e);
|
|
111
|
-
});
|
|
112
|
-
});
|
|
106
|
+
// Columns fetched here feed payloadInput.addColumn, which resolves waitForAllData for any
|
|
107
|
+
// in-flight importExecutionPayload. No processExecutionPayload trigger needed from this path.
|
|
108
|
+
this.getBlobsTracker.triggerGetBlobs(payloadInput);
|
|
113
109
|
}
|
|
114
110
|
this.metrics?.importBlock.bySource.inc({ source: source.source });
|
|
115
111
|
this.logger.verbose("Added block to forkchoice and state cache", { slot: blockSlot, root: blockRootHex });
|
|
@@ -125,7 +121,7 @@ export async function importBlock(fullyVerifiedBlock, opts) {
|
|
|
125
121
|
if (opts.importAttestations === AttestationImportOpt.Force ||
|
|
126
122
|
(opts.importAttestations !== AttestationImportOpt.Skip && blockEpoch >= currentEpoch - FORK_CHOICE_ATT_EPOCH_LIMIT)) {
|
|
127
123
|
const attestations = block.message.body.attestations;
|
|
128
|
-
const rootCache = new RootCache(
|
|
124
|
+
const rootCache = new RootCache(postState);
|
|
129
125
|
const invalidAttestationErrorsByCode = new Map();
|
|
130
126
|
const addAttestation = fork >= ForkSeq.electra ? addAttestationPostElectra : addAttestationPreElectra;
|
|
131
127
|
for (let i = 0; i < attestations.length; i++) {
|
|
@@ -134,7 +130,7 @@ export async function importBlock(fullyVerifiedBlock, opts) {
|
|
|
134
130
|
const indexedAttestation = indexedAttestations[i];
|
|
135
131
|
const { target, beaconBlockRoot } = attestation.data;
|
|
136
132
|
const attDataRoot = toRootHex(ssz.phase0.AttestationData.hashTreeRoot(indexedAttestation.data));
|
|
137
|
-
addAttestation.call(this,
|
|
133
|
+
addAttestation.call(this, postState, target, attDataRoot, attestation, indexedAttestation);
|
|
138
134
|
// Duplicated logic from fork-choice onAttestation validation logic.
|
|
139
135
|
// Attestations outside of this range will be dropped as Errors, so no need to import
|
|
140
136
|
if (opts.importAttestations === AttestationImportOpt.Force ||
|
|
@@ -214,7 +210,7 @@ export async function importBlock(fullyVerifiedBlock, opts) {
|
|
|
214
210
|
const currFinalizedEpoch = this.forkChoice.getFinalizedCheckpoint().epoch;
|
|
215
211
|
if (newHead.blockRoot !== oldHead.blockRoot) {
|
|
216
212
|
// Set head state as strong reference
|
|
217
|
-
this.regen.updateHeadState(newHead,
|
|
213
|
+
this.regen.updateHeadState(newHead, postState);
|
|
218
214
|
try {
|
|
219
215
|
this.emitter.emit(routes.events.EventType.head, {
|
|
220
216
|
block: newHead.blockRoot,
|
|
@@ -275,8 +271,8 @@ export async function importBlock(fullyVerifiedBlock, opts) {
|
|
|
275
271
|
// we want to import block asap so do this in the next event loop
|
|
276
272
|
callInNextEventLoop(() => {
|
|
277
273
|
try {
|
|
278
|
-
if (isStatePostAltair(
|
|
279
|
-
this.lightClientServer?.onImportBlockHead(block.message,
|
|
274
|
+
if (isStatePostAltair(postState)) {
|
|
275
|
+
this.lightClientServer?.onImportBlockHead(block.message, postState, parentBlockSlot);
|
|
280
276
|
}
|
|
281
277
|
}
|
|
282
278
|
catch (e) {
|
|
@@ -294,11 +290,11 @@ export async function importBlock(fullyVerifiedBlock, opts) {
|
|
|
294
290
|
// Suppress fcu call if shouldOverrideFcu is true. This only happens if we have proposer boost reorg enabled
|
|
295
291
|
// and the block is weak and can potentially be reorged out.
|
|
296
292
|
let shouldOverrideFcu = false;
|
|
297
|
-
if (blockSlot >= currentSlot && isStatePostBellatrix(
|
|
293
|
+
if (blockSlot >= currentSlot && isStatePostBellatrix(postState) && postState.isExecutionStateType) {
|
|
298
294
|
let notOverrideFcuReason = NotReorgedReason.Unknown;
|
|
299
295
|
const proposalSlot = blockSlot + 1;
|
|
300
296
|
try {
|
|
301
|
-
const proposerIndex =
|
|
297
|
+
const proposerIndex = postState.getBeaconProposer(proposalSlot);
|
|
302
298
|
const feeRecipient = this.beaconProposerCache.get(proposerIndex);
|
|
303
299
|
if (feeRecipient) {
|
|
304
300
|
// We would set this to true if
|
|
@@ -367,24 +363,24 @@ export async function importBlock(fullyVerifiedBlock, opts) {
|
|
|
367
363
|
});
|
|
368
364
|
}
|
|
369
365
|
}
|
|
370
|
-
if (!
|
|
371
|
-
this.logger.verbose("After importBlock caching postState without SSZ cache", { slot:
|
|
366
|
+
if (!postState.isStateValidatorsNodesPopulated()) {
|
|
367
|
+
this.logger.verbose("After importBlock caching postState without SSZ cache", { slot: postState.slot });
|
|
372
368
|
}
|
|
373
369
|
// Cache shufflings when crossing an epoch boundary
|
|
374
370
|
const parentEpoch = computeEpochAtSlot(parentBlockSlot);
|
|
375
371
|
if (parentEpoch < blockEpoch) {
|
|
376
|
-
this.shufflingCache.processState(
|
|
372
|
+
this.shufflingCache.processState(postState);
|
|
377
373
|
this.logger.verbose("Processed shuffling for next epoch", { parentEpoch, blockEpoch, slot: blockSlot });
|
|
378
374
|
}
|
|
379
375
|
if (blockSlot % SLOTS_PER_EPOCH === 0) {
|
|
380
376
|
// Cache state to preserve epoch transition work
|
|
381
|
-
const checkpointState =
|
|
377
|
+
const checkpointState = postState;
|
|
382
378
|
const cp = getCheckpointFromState(checkpointState);
|
|
383
|
-
this.regen.addCheckpointState(cp, checkpointState
|
|
379
|
+
this.regen.addCheckpointState(cp, checkpointState);
|
|
384
380
|
// consumers should not mutate state ever
|
|
385
381
|
this.emitter.emit(ChainEvent.checkpoint, cp, checkpointState);
|
|
386
382
|
// Note: in-lined code from previos handler of ChainEvent.checkpoint
|
|
387
|
-
this.logger.verbose("Checkpoint processed",
|
|
383
|
+
this.logger.verbose("Checkpoint processed", toCheckpointHex(cp));
|
|
388
384
|
const activeValidatorsCount = checkpointState.activeValidatorCount;
|
|
389
385
|
this.metrics?.currentActiveValidators.set(activeValidatorsCount);
|
|
390
386
|
this.metrics?.currentValidators.set({ status: "active" }, activeValidatorsCount);
|
|
@@ -396,7 +392,7 @@ export async function importBlock(fullyVerifiedBlock, opts) {
|
|
|
396
392
|
const justifiedEpoch = justifiedCheckpoint.epoch;
|
|
397
393
|
const preJustifiedEpoch = parentBlockSummary.justifiedEpoch;
|
|
398
394
|
if (justifiedEpoch > preJustifiedEpoch) {
|
|
399
|
-
this.logger.verbose("Checkpoint justified",
|
|
395
|
+
this.logger.verbose("Checkpoint justified", toCheckpointHex(justifiedCheckpoint));
|
|
400
396
|
this.metrics?.previousJustifiedEpoch.set(checkpointState.previousJustifiedCheckpoint.epoch);
|
|
401
397
|
this.metrics?.currentJustifiedEpoch.set(justifiedCheckpoint.epoch);
|
|
402
398
|
}
|
|
@@ -410,7 +406,7 @@ export async function importBlock(fullyVerifiedBlock, opts) {
|
|
|
410
406
|
state: toRootHex(checkpointState.hashTreeRoot()),
|
|
411
407
|
executionOptimistic: false,
|
|
412
408
|
});
|
|
413
|
-
this.logger.verbose("Checkpoint finalized",
|
|
409
|
+
this.logger.verbose("Checkpoint finalized", toCheckpointHex(finalizedCheckpoint));
|
|
414
410
|
this.metrics?.finalizedEpoch.set(finalizedCheckpoint.epoch);
|
|
415
411
|
}
|
|
416
412
|
}
|
|
@@ -458,8 +454,8 @@ export async function importBlock(fullyVerifiedBlock, opts) {
|
|
|
458
454
|
this.metrics?.parentBlockDistance.observe(blockSlot - parentBlockSlot);
|
|
459
455
|
this.metrics?.proposerBalanceDeltaAny.observe(fullyVerifiedBlock.proposerBalanceDelta);
|
|
460
456
|
this.validatorMonitor?.registerImportedBlock(block.message, fullyVerifiedBlock);
|
|
461
|
-
if (isStatePostAltair(fullyVerifiedBlock.
|
|
462
|
-
this.validatorMonitor?.registerSyncAggregateInBlock(blockEpoch, block.message.body.syncAggregate, fullyVerifiedBlock.
|
|
457
|
+
if (isStatePostAltair(fullyVerifiedBlock.postState)) {
|
|
458
|
+
this.validatorMonitor?.registerSyncAggregateInBlock(blockEpoch, block.message.body.syncAggregate, fullyVerifiedBlock.postState.currentSyncCommitteeIndexed.validatorIndices);
|
|
463
459
|
}
|
|
464
460
|
if (isBlockInputColumns(blockInput)) {
|
|
465
461
|
for (const { source } of blockInput.getSampledColumnsWithSource()) {
|