@lodestar/beacon-node 1.43.0-dev.5f9285892c → 1.43.0-dev.657dd16e61
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 +68 -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/blockInput/blockInput.d.ts +3 -0
- package/lib/chain/blocks/blockInput/blockInput.d.ts.map +1 -1
- package/lib/chain/blocks/blockInput/blockInput.js +4 -1
- package/lib/chain/blocks/blockInput/blockInput.js.map +1 -1
- package/lib/chain/blocks/importBlock.d.ts.map +1 -1
- package/lib/chain/blocks/importBlock.js +34 -54
- 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 +89 -89
- 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 +7 -0
- package/lib/chain/blocks/payloadEnvelopeInput/payloadEnvelopeInput.d.ts.map +1 -1
- package/lib/chain/blocks/payloadEnvelopeInput/payloadEnvelopeInput.js +29 -2
- 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 +79 -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 +43 -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/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 +40 -0
- package/lib/chain/errors/proposerPreferences.d.ts.map +1 -0
- package/lib/chain/errors/proposerPreferences.js +14 -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 -19
- package/lib/chain/forkChoice/index.js.map +1 -1
- package/lib/chain/initState.d.ts.map +1 -1
- package/lib/chain/initState.js +6 -1
- package/lib/chain/initState.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 +13 -8
- package/lib/chain/produceBlock/produceBlockBody.d.ts.map +1 -1
- package/lib/chain/produceBlock/produceBlockBody.js +68 -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 -11
- 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 -10
- package/lib/chain/regen/queued.d.ts.map +1 -1
- package/lib/chain/regen/queued.js +4 -14
- 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 +1 -12
- 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 +22 -6
- package/lib/chain/seenCache/seenPayloadEnvelopeInput.d.ts.map +1 -1
- package/lib/chain/seenCache/seenPayloadEnvelopeInput.js +53 -17
- package/lib/chain/seenCache/seenPayloadEnvelopeInput.js.map +1 -1
- package/lib/chain/seenCache/seenProposerPreferences.d.ts +16 -0
- package/lib/chain/seenCache/seenProposerPreferences.d.ts.map +1 -0
- package/lib/chain/seenCache/seenProposerPreferences.js +26 -0
- package/lib/chain/seenCache/seenProposerPreferences.js.map +1 -0
- package/lib/chain/stateCache/persistentCheckpointsCache.d.ts +1 -7
- package/lib/chain/stateCache/persistentCheckpointsCache.d.ts.map +1 -1
- package/lib/chain/stateCache/persistentCheckpointsCache.js +4 -9
- package/lib/chain/stateCache/persistentCheckpointsCache.js.map +1 -1
- package/lib/chain/stateCache/types.d.ts +0 -6
- package/lib/chain/stateCache/types.d.ts.map +1 -1
- package/lib/chain/stateCache/types.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 +24 -9
- 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 +20 -10
- 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 +91 -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 +13 -2
- 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 +60 -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/constants.d.ts +3 -1
- package/lib/sync/constants.d.ts.map +1 -1
- package/lib/sync/constants.js +3 -4
- package/lib/sync/constants.js.map +1 -1
- package/lib/sync/range/batch.d.ts +28 -2
- package/lib/sync/range/batch.d.ts.map +1 -1
- package/lib/sync/range/batch.js +146 -44
- package/lib/sync/range/batch.js.map +1 -1
- package/lib/sync/range/chain.d.ts +12 -2
- package/lib/sync/range/chain.d.ts.map +1 -1
- package/lib/sync/range/chain.js +53 -9
- 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 +604 -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 +162 -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 +20 -5
- 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 +84 -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/blockInput/blockInput.ts +4 -1
- package/src/chain/blocks/importBlock.ts +34 -79
- package/src/chain/blocks/importExecutionPayload.ts +110 -102
- package/src/chain/blocks/index.ts +74 -24
- package/src/chain/blocks/payloadEnvelopeInput/payloadEnvelopeInput.ts +37 -2
- 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 +134 -0
- package/src/chain/blocks/verifyPayloadsDataAvailability.ts +41 -0
- package/src/chain/blocks/writePayloadEnvelopeInputToDb.ts +9 -18
- package/src/chain/chain.ts +61 -58
- package/src/chain/emitter.ts +15 -14
- 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 +47 -0
- package/src/chain/forkChoice/index.ts +8 -24
- package/src/chain/initState.ts +9 -1
- 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 +91 -27
- package/src/chain/regen/errors.ts +1 -6
- package/src/chain/regen/interface.ts +7 -11
- package/src/chain/regen/queued.ts +8 -21
- package/src/chain/regen/regen.ts +2 -15
- package/src/chain/seenCache/index.ts +1 -0
- package/src/chain/seenCache/seenPayloadEnvelopeInput.ts +71 -20
- package/src/chain/seenCache/seenProposerPreferences.ts +32 -0
- package/src/chain/stateCache/persistentCheckpointsCache.ts +5 -15
- package/src/chain/stateCache/types.ts +0 -3
- package/src/chain/validation/block.ts +1 -0
- package/src/chain/validation/executionPayloadBid.ts +25 -8
- package/src/chain/validation/executionPayloadEnvelope.ts +21 -11
- package/src/chain/validation/payloadAttestationMessage.ts +5 -3
- package/src/chain/validation/proposerPreferences.ts +110 -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 +79 -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/constants.ts +4 -4
- package/src/sync/range/batch.ts +204 -49
- package/src/sync/range/chain.ts +69 -11
- package/src/sync/range/range.ts +18 -6
- package/src/sync/types.ts +72 -0
- package/src/sync/unknownBlock.ts +762 -57
- package/src/sync/utils/downloadByRange.ts +272 -39
- package/src/sync/utils/downloadByRoot.ts +24 -2
- package/src/sync/utils/pendingBlocksTree.ts +0 -15
- package/src/util/sszBytes.ts +25 -5
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"importExecutionPayload.js","sourceRoot":"","sources":["../../../src/chain/blocks/importExecutionPayload.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,MAAM,EAAC,MAAM,eAAe,CAAC;AACrC,OAAO,EAAC,eAAe,
|
|
1
|
+
{"version":3,"file":"importExecutionPayload.js","sourceRoot":"","sources":["../../../src/chain/blocks/importExecutionPayload.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,17 +1,19 @@
|
|
|
1
|
+
import { Slot } from "@lodestar/types";
|
|
1
2
|
import { Metrics } from "../../metrics/metrics.js";
|
|
2
3
|
import { JobItemQueue } from "../../util/queue/index.js";
|
|
3
4
|
import type { BeaconChain } from "../chain.js";
|
|
4
5
|
import { BlockProcessOpts } from "../options.js";
|
|
5
6
|
import { IBlockInput } from "./blockInput/types.js";
|
|
7
|
+
import { PayloadEnvelopeInput } from "./payloadEnvelopeInput/payloadEnvelopeInput.js";
|
|
6
8
|
import { ImportBlockOpts } from "./types.js";
|
|
7
9
|
export { AttestationImportOpt, type ImportBlockOpts } from "./types.js";
|
|
8
10
|
/**
|
|
9
11
|
* BlockProcessor processes block jobs in a queued fashion, one after the other.
|
|
10
12
|
*/
|
|
11
13
|
export declare class BlockProcessor {
|
|
12
|
-
readonly jobQueue: JobItemQueue<[IBlockInput[], ImportBlockOpts], void>;
|
|
14
|
+
readonly jobQueue: JobItemQueue<[IBlockInput[], Map<Slot, PayloadEnvelopeInput> | null, ImportBlockOpts], void>;
|
|
13
15
|
constructor(chain: BeaconChain, metrics: Metrics | null, opts: BlockProcessOpts, signal: AbortSignal);
|
|
14
|
-
processBlocksJob(job: IBlockInput[], opts?: ImportBlockOpts): Promise<void>;
|
|
16
|
+
processBlocksJob(job: IBlockInput[], payloadEnvelopes: Map<Slot, PayloadEnvelopeInput> | null, opts?: ImportBlockOpts): Promise<void>;
|
|
15
17
|
}
|
|
16
18
|
/**
|
|
17
19
|
* Validate and process a block
|
|
@@ -23,5 +25,5 @@ export declare class BlockProcessor {
|
|
|
23
25
|
*
|
|
24
26
|
* All other effects are provided by downstream event handlers
|
|
25
27
|
*/
|
|
26
|
-
export declare function processBlocks(this: BeaconChain, blocks: IBlockInput[], opts: BlockProcessOpts & ImportBlockOpts): Promise<void>;
|
|
28
|
+
export declare function processBlocks(this: BeaconChain, blocks: IBlockInput[], payloadEnvelopes: Map<Slot, PayloadEnvelopeInput> | null, opts: BlockProcessOpts & ImportBlockOpts): Promise<void>;
|
|
27
29
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/chain/blocks/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/chain/blocks/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAoB,IAAI,EAAC,MAAM,iBAAiB,CAAC;AAExD,OAAO,EAAC,OAAO,EAAC,MAAM,0BAA0B,CAAC;AAEjD,OAAO,EAAC,YAAY,EAAsB,MAAM,2BAA2B,CAAC;AAC5E,OAAO,KAAK,EAAC,WAAW,EAAC,MAAM,aAAa,CAAC;AAE7C,OAAO,EAAC,gBAAgB,EAAC,MAAM,eAAe,CAAC;AAC/C,OAAO,EAAC,WAAW,EAAC,MAAM,uBAAuB,CAAC;AAGlD,OAAO,EAAC,oBAAoB,EAAC,MAAM,gDAAgD,CAAC;AACpF,OAAO,EAAqB,eAAe,EAAC,MAAM,YAAY,CAAC;AAK/D,OAAO,EAAC,oBAAoB,EAAE,KAAK,eAAe,EAAC,MAAM,YAAY,CAAC;AAItE;;GAEG;AACH,qBAAa,cAAc;IACzB,QAAQ,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC,WAAW,EAAE,EAAE,GAAG,CAAC,IAAI,EAAE,oBAAoB,CAAC,GAAG,IAAI,EAAE,eAAe,CAAC,EAAE,IAAI,CAAC,CAAC;IAEhH,YAAY,KAAK,EAAE,WAAW,EAAE,OAAO,EAAE,OAAO,GAAG,IAAI,EAAE,IAAI,EAAE,gBAAgB,EAAE,MAAM,EAAE,WAAW,EAQnG;IAEK,gBAAgB,CACpB,GAAG,EAAE,WAAW,EAAE,EAClB,gBAAgB,EAAE,GAAG,CAAC,IAAI,EAAE,oBAAoB,CAAC,GAAG,IAAI,EACxD,IAAI,GAAE,eAAoB,GACzB,OAAO,CAAC,IAAI,CAAC,CAEf;CACF;AAED;;;;;;;;;GASG;AACH,wBAAsB,aAAa,CACjC,IAAI,EAAE,WAAW,EACjB,MAAM,EAAE,WAAW,EAAE,EACrB,gBAAgB,EAAE,GAAG,CAAC,IAAI,EAAE,oBAAoB,CAAC,GAAG,IAAI,EACxD,IAAI,EAAE,gBAAgB,GAAG,eAAe,GACvC,OAAO,CAAC,IAAI,CAAC,CAyIf"}
|
|
@@ -3,6 +3,7 @@ import { nextEventLoop } from "../../util/eventLoop.js";
|
|
|
3
3
|
import { JobItemQueue, isQueueErrorAborted } from "../../util/queue/index.js";
|
|
4
4
|
import { BlockError, BlockErrorCode, isBlockErrorAborted } from "../errors/index.js";
|
|
5
5
|
import { importBlock } from "./importBlock.js";
|
|
6
|
+
import { importExecutionPayload } from "./importExecutionPayload.js";
|
|
6
7
|
import { assertLinearChainSegment } from "./utils/chainSegment.js";
|
|
7
8
|
import { verifyBlocksInEpoch } from "./verifyBlock.js";
|
|
8
9
|
import { verifyBlocksSanityChecks } from "./verifyBlocksSanityChecks.js";
|
|
@@ -14,12 +15,12 @@ const QUEUE_MAX_LENGTH = 256;
|
|
|
14
15
|
export class BlockProcessor {
|
|
15
16
|
jobQueue;
|
|
16
17
|
constructor(chain, metrics, opts, signal) {
|
|
17
|
-
this.jobQueue = new JobItemQueue((job, importOpts) => {
|
|
18
|
-
return processBlocks.call(chain, job, { ...opts, ...importOpts });
|
|
18
|
+
this.jobQueue = new JobItemQueue((job, payloadEnvelopes, importOpts) => {
|
|
19
|
+
return processBlocks.call(chain, job, payloadEnvelopes, { ...opts, ...importOpts });
|
|
19
20
|
}, { maxLength: QUEUE_MAX_LENGTH, noYieldIfOneItem: true, signal }, metrics?.blockProcessorQueue ?? undefined);
|
|
20
21
|
}
|
|
21
|
-
async processBlocksJob(job, opts = {}) {
|
|
22
|
-
await this.jobQueue.push(job, opts);
|
|
22
|
+
async processBlocksJob(job, payloadEnvelopes, opts = {}) {
|
|
23
|
+
await this.jobQueue.push(job, payloadEnvelopes, opts);
|
|
23
24
|
}
|
|
24
25
|
}
|
|
25
26
|
/**
|
|
@@ -32,23 +33,29 @@ export class BlockProcessor {
|
|
|
32
33
|
*
|
|
33
34
|
* All other effects are provided by downstream event handlers
|
|
34
35
|
*/
|
|
35
|
-
export async function processBlocks(blocks, opts) {
|
|
36
|
+
export async function processBlocks(blocks, payloadEnvelopes, opts) {
|
|
36
37
|
if (blocks.length === 0) {
|
|
37
38
|
return; // TODO: or throw?
|
|
38
39
|
}
|
|
39
|
-
if (blocks.length > 1) {
|
|
40
|
-
assertLinearChainSegment(this.config, blocks);
|
|
41
|
-
}
|
|
42
40
|
try {
|
|
43
|
-
const { relevantBlocks, parentSlots, parentBlock } = verifyBlocksSanityChecks(this, blocks, opts);
|
|
41
|
+
const { relevantBlocks, parentSlots, parentBlock } = verifyBlocksSanityChecks(this, blocks, payloadEnvelopes, opts);
|
|
44
42
|
// No relevant blocks, skip verifyBlocksInEpoch()
|
|
45
43
|
if (relevantBlocks.length === 0 || parentBlock === null) {
|
|
46
44
|
// parentBlock can only be null if relevantBlocks are empty
|
|
47
45
|
return;
|
|
48
46
|
}
|
|
47
|
+
const { warnings: orphanedPayloads } = assertLinearChainSegment(this.config, relevantBlocks, payloadEnvelopes, parentBlock);
|
|
48
|
+
if (orphanedPayloads != null) {
|
|
49
|
+
for (const orphaned of orphanedPayloads) {
|
|
50
|
+
this.logger.debug("Orphaned payload envelope in chain segment", {
|
|
51
|
+
slot: orphaned.slot,
|
|
52
|
+
blockRoot: orphaned.payloadEnvelopeInput.blockRootHex,
|
|
53
|
+
});
|
|
54
|
+
}
|
|
55
|
+
}
|
|
49
56
|
// Fully verify a block to be imported immediately after. Does not produce any side-effects besides adding intermediate
|
|
50
57
|
// states in the state cache through regen.
|
|
51
|
-
const { postStates,
|
|
58
|
+
const { postStates, blockDAStatuses, payloadDAStatuses, proposerBalanceDeltas, segmentExecStatus, indexedAttestationsByBlock, } = await verifyBlocksInEpoch.call(this, parentBlock, relevantBlocks, payloadEnvelopes, opts);
|
|
52
59
|
// If segmentExecStatus has lvhForkchoice then, the entire segment should be invalid
|
|
53
60
|
// and we need to further propagate
|
|
54
61
|
if (segmentExecStatus.execAborted !== null) {
|
|
@@ -58,22 +65,48 @@ export async function processBlocks(blocks, opts) {
|
|
|
58
65
|
throw segmentExecStatus.execAborted.execError;
|
|
59
66
|
}
|
|
60
67
|
const { executionStatuses } = segmentExecStatus;
|
|
61
|
-
const
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
68
|
+
const verifiedBlocksBySlot = new Map();
|
|
69
|
+
for (let i = 0; i < relevantBlocks.length; i++) {
|
|
70
|
+
const block = relevantBlocks[i];
|
|
71
|
+
verifiedBlocksBySlot.set(block.getBlock().message.slot, {
|
|
72
|
+
blockInput: block,
|
|
73
|
+
postState: postStates[i],
|
|
74
|
+
parentBlockSlot: parentSlots[i],
|
|
75
|
+
executionStatus: executionStatuses[i],
|
|
76
|
+
// start supporting optimistic syncing/processing
|
|
77
|
+
dataAvailabilityStatus: blockDAStatuses[i],
|
|
78
|
+
proposerBalanceDelta: proposerBalanceDeltas[i],
|
|
79
|
+
indexedAttestations: indexedAttestationsByBlock[i],
|
|
80
|
+
// TODO: Make this param mandatory and capture in gossip
|
|
81
|
+
seenTimestampSec: opts.seenTimestampSec ?? Math.floor(Date.now() / 1000),
|
|
82
|
+
});
|
|
83
|
+
}
|
|
84
|
+
// Iterate slots from the original `blocks` input (which spans the entire batch including
|
|
85
|
+
// slots filtered out of `relevantBlocks`). The first batch of a checkpoint sync may contain
|
|
86
|
+
// a payload at the anchor slot whose block is already in fork-choice (added by
|
|
87
|
+
// initializeForkChoice as PENDING+EMPTY) and therefore not in verifiedBlocksBySlot — the
|
|
88
|
+
// payload still needs to be imported here to populate the anchor's FULL variant so
|
|
89
|
+
// subsequent slots can find their parent payload.
|
|
90
|
+
const slots = Array.from(new Set(blocks.map((b) => b.getBlock().message.slot)));
|
|
91
|
+
for (const slot of slots) {
|
|
92
|
+
const fullyVerifiedBlock = verifiedBlocksBySlot.get(slot);
|
|
93
|
+
if (fullyVerifiedBlock !== undefined) {
|
|
94
|
+
// TODO: Consider batching importBlock too if it takes significant time
|
|
95
|
+
await importBlock.call(this, fullyVerifiedBlock, opts);
|
|
96
|
+
}
|
|
97
|
+
const payloadInput = payloadEnvelopes?.get(slot);
|
|
98
|
+
if (payloadInput?.hasPayloadEnvelope()) {
|
|
99
|
+
if (!payloadInput.isComplete()) {
|
|
100
|
+
// we validated DA before reaching this
|
|
101
|
+
throw new Error(`Payload envelope for slot ${slot} not complete after DA verification`);
|
|
102
|
+
}
|
|
103
|
+
// we already awaited DA in verifyBlocksInEpoch for this segment
|
|
104
|
+
const payloadDA = payloadDAStatuses.get(slot);
|
|
105
|
+
if (payloadDA === undefined) {
|
|
106
|
+
throw new Error(`Missing payload DA status for slot ${slot}`);
|
|
107
|
+
}
|
|
108
|
+
await importExecutionPayload.call(this, payloadInput, payloadDA, { validSignature: false });
|
|
109
|
+
}
|
|
77
110
|
await nextEventLoop();
|
|
78
111
|
}
|
|
79
112
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/chain/blocks/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,cAAc,EAAE,SAAS,EAAC,MAAM,iBAAiB,CAAC;AAE1D,OAAO,EAAC,aAAa,EAAC,MAAM,yBAAyB,CAAC;AACtD,OAAO,EAAC,YAAY,EAAE,mBAAmB,EAAC,MAAM,2BAA2B,CAAC;AAE5E,OAAO,EAAC,UAAU,EAAE,cAAc,EAAE,mBAAmB,EAAC,MAAM,oBAAoB,CAAC;AAGnF,OAAO,EAAC,WAAW,EAAC,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/chain/blocks/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -40,11 +40,13 @@ export declare class PayloadEnvelopeInput {
|
|
|
40
40
|
readonly proposerIndex: ValidatorIndex;
|
|
41
41
|
readonly bid: gloas.ExecutionPayloadBid;
|
|
42
42
|
readonly versionedHashes: VersionedHashes;
|
|
43
|
+
readonly daOutOfRange: boolean;
|
|
43
44
|
private columnsCache;
|
|
44
45
|
private readonly sampledColumns;
|
|
45
46
|
private readonly custodyColumns;
|
|
46
47
|
private timeCreatedSec;
|
|
47
48
|
private readonly payloadEnvelopeDataPromise;
|
|
49
|
+
private readonly allDataPromise;
|
|
48
50
|
private readonly columnsDataPromise;
|
|
49
51
|
state: PayloadEnvelopeInputState;
|
|
50
52
|
private constructor();
|
|
@@ -66,8 +68,13 @@ export declare class PayloadEnvelopeInput {
|
|
|
66
68
|
getSampledColumnsWithSource(): ColumnWithSource[];
|
|
67
69
|
getCustodyColumns(): gloas.DataColumnSidecar[];
|
|
68
70
|
hasAllData(): boolean;
|
|
71
|
+
/**
|
|
72
|
+
* Strictly checks missing sampled columns. Does NOT short-circuit on `state.hasAllData`.
|
|
73
|
+
*/
|
|
69
74
|
getMissingSampledColumnMeta(): MissingColumnMeta;
|
|
70
75
|
hasComputedAllData(): boolean;
|
|
76
|
+
waitForAllData(timeout: number, signal?: AbortSignal): Promise<gloas.DataColumnSidecar[]>;
|
|
77
|
+
waitForEnvelopeAndAllData(timeout: number, signal?: AbortSignal): Promise<this>;
|
|
71
78
|
waitForComputedAllData(timeout: number, signal?: AbortSignal): Promise<gloas.DataColumnSidecar[]>;
|
|
72
79
|
getTimeCreated(): number;
|
|
73
80
|
getTimeComplete(): number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"payloadEnvelopeInput.d.ts","sourceRoot":"","sources":["../../../../src/chain/blocks/payloadEnvelopeInput/payloadEnvelopeInput.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,QAAQ,EAAoB,MAAM,kBAAkB,CAAC;AAC7D,OAAO,EAAC,WAAW,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,KAAK,EAAE,KAAK,EAAC,MAAM,iBAAiB,CAAC;AAEzF,OAAO,EAAC,eAAe,EAAC,MAAM,6BAA6B,CAAC;AAE5D,OAAO,EAAC,iBAAiB,EAAC,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAC,uBAAuB,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,UAAU,EAAC,MAAM,YAAY,CAAC;AAEvG,MAAM,MAAM,yBAAyB,GACjC;IACE,UAAU,EAAE,KAAK,CAAC;IAClB,UAAU,EAAE,KAAK,CAAC;IAClB,kBAAkB,EAAE,KAAK,CAAC;CAC3B,GACD;IACE,UAAU,EAAE,KAAK,CAAC;IAClB,UAAU,EAAE,IAAI,CAAC;IACjB,kBAAkB,EAAE,OAAO,CAAC;CAC7B,GACD;IACE,UAAU,EAAE,IAAI,CAAC;IACjB,UAAU,EAAE,KAAK,CAAC;IAClB,kBAAkB,EAAE,KAAK,CAAC;IAC1B,eAAe,EAAE,KAAK,CAAC,8BAA8B,CAAC;IACtD,qBAAqB,EAAE,UAAU,CAAC;CACnC,GACD;IACE,UAAU,EAAE,IAAI,CAAC;IACjB,UAAU,EAAE,IAAI,CAAC;IACjB,kBAAkB,EAAE,OAAO,CAAC;IAC5B,eAAe,EAAE,KAAK,CAAC,8BAA8B,CAAC;IACtD,qBAAqB,EAAE,UAAU,CAAC;IAClC,eAAe,EAAE,MAAM,CAAC;CACzB,CAAC;AAkBN;;;;;;;GAOG;AACH,qBAAa,oBAAoB;IAC/B,QAAQ,CAAC,YAAY,EAAE,OAAO,CAAC;IAC/B,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC;IACpB,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC;IAC5B,QAAQ,CAAC,aAAa,EAAE,cAAc,CAAC;IACvC,QAAQ,CAAC,GAAG,EAAE,KAAK,CAAC,mBAAmB,CAAC;IACxC,QAAQ,CAAC,eAAe,EAAE,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"payloadEnvelopeInput.d.ts","sourceRoot":"","sources":["../../../../src/chain/blocks/payloadEnvelopeInput/payloadEnvelopeInput.ts"],"names":[],"mappings":"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"}
|
|
@@ -25,11 +25,13 @@ export class PayloadEnvelopeInput {
|
|
|
25
25
|
proposerIndex;
|
|
26
26
|
bid;
|
|
27
27
|
versionedHashes;
|
|
28
|
+
daOutOfRange;
|
|
28
29
|
columnsCache = new Map();
|
|
29
30
|
sampledColumns;
|
|
30
31
|
custodyColumns;
|
|
31
32
|
timeCreatedSec;
|
|
32
33
|
payloadEnvelopeDataPromise;
|
|
34
|
+
allDataPromise;
|
|
33
35
|
columnsDataPromise;
|
|
34
36
|
state;
|
|
35
37
|
constructor(props) {
|
|
@@ -42,13 +44,16 @@ export class PayloadEnvelopeInput {
|
|
|
42
44
|
this.sampledColumns = props.sampledColumns;
|
|
43
45
|
this.custodyColumns = props.custodyColumns;
|
|
44
46
|
this.timeCreatedSec = props.timeCreatedSec;
|
|
47
|
+
this.daOutOfRange = props.daOutOfRange;
|
|
45
48
|
this.payloadEnvelopeDataPromise = createPromise();
|
|
49
|
+
this.allDataPromise = createPromise();
|
|
46
50
|
this.columnsDataPromise = createPromise();
|
|
47
51
|
const noBlobs = props.bid.blobKzgCommitments.length === 0;
|
|
48
52
|
const noSampledColumns = props.sampledColumns.length === 0;
|
|
49
|
-
const hasAllData = noBlobs || noSampledColumns;
|
|
53
|
+
const hasAllData = props.daOutOfRange || noBlobs || noSampledColumns;
|
|
50
54
|
if (hasAllData) {
|
|
51
55
|
this.state = { hasPayload: false, hasAllData: true, hasComputedAllData: true };
|
|
56
|
+
this.allDataPromise.resolve(this.getSampledColumns());
|
|
52
57
|
this.columnsDataPromise.resolve(this.getSampledColumns());
|
|
53
58
|
}
|
|
54
59
|
else {
|
|
@@ -66,6 +71,7 @@ export class PayloadEnvelopeInput {
|
|
|
66
71
|
sampledColumns: props.sampledColumns,
|
|
67
72
|
custodyColumns: props.custodyColumns,
|
|
68
73
|
timeCreatedSec: props.timeCreatedSec,
|
|
74
|
+
daOutOfRange: props.daOutOfRange,
|
|
69
75
|
});
|
|
70
76
|
}
|
|
71
77
|
getBid() {
|
|
@@ -87,6 +93,7 @@ export class PayloadEnvelopeInput {
|
|
|
87
93
|
if (toRootHex(props.envelope.message.beaconBlockRoot) !== this.blockRootHex) {
|
|
88
94
|
throw new Error("Payload envelope beacon_block_root mismatch");
|
|
89
95
|
}
|
|
96
|
+
// TODO GLOAS: track source by metrics, maybe inside the seen cache
|
|
90
97
|
const source = {
|
|
91
98
|
source: props.source,
|
|
92
99
|
seenTimestampSec: props.seenTimestampSec,
|
|
@@ -135,6 +142,11 @@ export class PayloadEnvelopeInput {
|
|
|
135
142
|
if (!hasAllData) {
|
|
136
143
|
return true;
|
|
137
144
|
}
|
|
145
|
+
// Resolve allDataPromise on the first transition to hasAllData (either sampled-complete or
|
|
146
|
+
// reconstruction-threshold branch). Guarded so it fires exactly once.
|
|
147
|
+
if (!this.state.hasAllData && hasAllData) {
|
|
148
|
+
this.allDataPromise.resolve(sampledColumns);
|
|
149
|
+
}
|
|
138
150
|
if (hasComputedAllData) {
|
|
139
151
|
this.columnsDataPromise.resolve(sampledColumns);
|
|
140
152
|
}
|
|
@@ -218,8 +230,11 @@ export class PayloadEnvelopeInput {
|
|
|
218
230
|
hasAllData() {
|
|
219
231
|
return this.state.hasAllData;
|
|
220
232
|
}
|
|
233
|
+
/**
|
|
234
|
+
* Strictly checks missing sampled columns. Does NOT short-circuit on `state.hasAllData`.
|
|
235
|
+
*/
|
|
221
236
|
getMissingSampledColumnMeta() {
|
|
222
|
-
if (this.state.
|
|
237
|
+
if (this.state.hasComputedAllData) {
|
|
223
238
|
return { missing: [], versionedHashes: this.versionedHashes };
|
|
224
239
|
}
|
|
225
240
|
const missing = [];
|
|
@@ -233,6 +248,18 @@ export class PayloadEnvelopeInput {
|
|
|
233
248
|
hasComputedAllData() {
|
|
234
249
|
return this.state.hasComputedAllData;
|
|
235
250
|
}
|
|
251
|
+
waitForAllData(timeout, signal) {
|
|
252
|
+
if (this.state.hasAllData) {
|
|
253
|
+
return Promise.resolve(this.getSampledColumns());
|
|
254
|
+
}
|
|
255
|
+
return withTimeout(() => this.allDataPromise.promise, timeout, signal);
|
|
256
|
+
}
|
|
257
|
+
async waitForEnvelopeAndAllData(timeout, signal) {
|
|
258
|
+
if (!this.state.hasPayload || !this.state.hasAllData) {
|
|
259
|
+
await withTimeout(() => Promise.all([this.payloadEnvelopeDataPromise.promise, this.allDataPromise.promise]), timeout, signal);
|
|
260
|
+
}
|
|
261
|
+
return this;
|
|
262
|
+
}
|
|
236
263
|
waitForComputedAllData(timeout, signal) {
|
|
237
264
|
if (this.state.hasComputedAllData) {
|
|
238
265
|
return Promise.resolve(this.getSampledColumns());
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"payloadEnvelopeInput.js","sourceRoot":"","sources":["../../../../src/chain/blocks/payloadEnvelopeInput/payloadEnvelopeInput.ts"],"names":[],"mappings":"AAAA,OAAO,EAAW,iBAAiB,EAAC,MAAM,kBAAkB,CAAC;AAE7D,OAAO,EAAC,SAAS,EAAE,WAAW,EAAC,MAAM,iBAAiB,CAAC;AAEvD,OAAO,EAAC,4BAA4B,EAAC,MAAM,wBAAwB,CAAC;AAqCpE,SAAS,aAAa,GAAuB;IAC3C,IAAI,OAA4B,CAAC;IACjC,IAAI,MAA2B,CAAC;IAChC,MAAM,OAAO,GAAG,IAAI,OAAO,CAAI,CAAC,QAAQ,EAAE,OAAO,EAAE,EAAE,CAAC;QACpD,OAAO,GAAG,QAAQ,CAAC;QACnB,MAAM,GAAG,OAAO,CAAC;IAAA,CAClB,CAAC,CAAC;IACH,OAAO,EAAC,OAAO,EAAE,OAAO,EAAE,MAAM,EAAC,CAAC;AAAA,CACnC;AAED;;;;;;;GAOG;AACH,MAAM,OAAO,oBAAoB;IACtB,YAAY,CAAU;IACtB,IAAI,CAAO;IACX,QAAQ,CAAW;IACnB,aAAa,CAAiB;IAC9B,GAAG,CAA4B;IAC/B,eAAe,CAAkB;
|
|
1
|
+
{"version":3,"file":"payloadEnvelopeInput.js","sourceRoot":"","sources":["../../../../src/chain/blocks/payloadEnvelopeInput/payloadEnvelopeInput.ts"],"names":[],"mappings":"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"}
|
|
@@ -23,6 +23,7 @@ export type CreateFromBlockProps = {
|
|
|
23
23
|
sampledColumns: ColumnIndex[];
|
|
24
24
|
custodyColumns: ColumnIndex[];
|
|
25
25
|
timeCreatedSec: number;
|
|
26
|
+
daOutOfRange: boolean;
|
|
26
27
|
};
|
|
27
28
|
export type AddPayloadEnvelopeProps = SourceMeta & {
|
|
28
29
|
envelope: gloas.SignedExecutionPayloadEnvelope;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/chain/blocks/payloadEnvelopeInput/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,QAAQ,EAAE,aAAa,EAAC,MAAM,kBAAkB,CAAC;AACzD,OAAO,EAAC,WAAW,EAAE,OAAO,EAAE,iBAAiB,EAAE,KAAK,EAAC,MAAM,iBAAiB,CAAC;AAE/E,oBAAY,0BAA0B;IACpC,MAAM,WAAW;IACjB,GAAG,QAAQ;IACX,MAAM,WAAW;IACjB,OAAO,sBAAsB;IAC7B,MAAM,qBAAqB;IAC3B,QAAQ,aAAa;CACtB;AAED,MAAM,MAAM,UAAU,GAAG;IACvB,MAAM,EAAE,0BAA0B,CAAC;IACnC,gBAAgB,EAAE,MAAM,CAAC;IACzB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG,UAAU,GAAG;IAC1C,aAAa,EAAE,KAAK,CAAC,iBAAiB,CAAC;CACxC,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG;IACjC,YAAY,EAAE,OAAO,CAAC;IACtB,KAAK,EAAE,iBAAiB,CAAC,aAAa,CAAC,CAAC;IACxC,QAAQ,EAAE,QAAQ,CAAC;IACnB,cAAc,EAAE,WAAW,EAAE,CAAC;IAC9B,cAAc,EAAE,WAAW,EAAE,CAAC;IAC9B,cAAc,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/chain/blocks/payloadEnvelopeInput/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,QAAQ,EAAE,aAAa,EAAC,MAAM,kBAAkB,CAAC;AACzD,OAAO,EAAC,WAAW,EAAE,OAAO,EAAE,iBAAiB,EAAE,KAAK,EAAC,MAAM,iBAAiB,CAAC;AAE/E,oBAAY,0BAA0B;IACpC,MAAM,WAAW;IACjB,GAAG,QAAQ;IACX,MAAM,WAAW;IACjB,OAAO,sBAAsB;IAC7B,MAAM,qBAAqB;IAC3B,QAAQ,aAAa;CACtB;AAED,MAAM,MAAM,UAAU,GAAG;IACvB,MAAM,EAAE,0BAA0B,CAAC;IACnC,gBAAgB,EAAE,MAAM,CAAC;IACzB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG,UAAU,GAAG;IAC1C,aAAa,EAAE,KAAK,CAAC,iBAAiB,CAAC;CACxC,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG;IACjC,YAAY,EAAE,OAAO,CAAC;IACtB,KAAK,EAAE,iBAAiB,CAAC,aAAa,CAAC,CAAC;IACxC,QAAQ,EAAE,QAAQ,CAAC;IACnB,cAAc,EAAE,WAAW,EAAE,CAAC;IAC9B,cAAc,EAAE,WAAW,EAAE,CAAC;IAC9B,cAAc,EAAE,MAAM,CAAC;IACvB,YAAY,EAAE,OAAO,CAAC;CACvB,CAAC;AAEF,MAAM,MAAM,uBAAuB,GAAG,UAAU,GAAG;IACjD,QAAQ,EAAE,KAAK,CAAC,8BAA8B,CAAC;CAChD,CAAC"}
|
|
@@ -5,6 +5,11 @@ import { PayloadEnvelopeInput } from "../seenCache/seenPayloadEnvelopeInput.js";
|
|
|
5
5
|
import { ImportPayloadOpts } from "./types.js";
|
|
6
6
|
/**
|
|
7
7
|
* PayloadEnvelopeProcessor processes payload envelope jobs in a queued fashion, one after the other.
|
|
8
|
+
*
|
|
9
|
+
* Jobs are enqueued only on envelope arrival (gossip or API). The envelope may reach us before
|
|
10
|
+
* the sampled data columns; importExecutionPayload awaits `verifyPayloadsDataAvailability`
|
|
11
|
+
* internally, so a queued job can pend for up to `PAYLOAD_DATA_AVAILABILITY_TIMEOUT` while
|
|
12
|
+
* waiting for columns. Duplicate triggers for the same payloadInput are deduped via `importStatus`.
|
|
8
13
|
*/
|
|
9
14
|
export declare class PayloadEnvelopeProcessor {
|
|
10
15
|
readonly jobQueue: JobItemQueue<[PayloadEnvelopeInput, ImportPayloadOpts], void>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"payloadEnvelopeProcessor.d.ts","sourceRoot":"","sources":["../../../src/chain/blocks/payloadEnvelopeProcessor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,OAAO,EAAC,MAAM,0BAA0B,CAAC;AACjD,OAAO,EAAC,YAAY,EAAC,MAAM,2BAA2B,CAAC;AACvD,OAAO,KAAK,EAAC,WAAW,EAAC,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAC,oBAAoB,EAAC,MAAM,0CAA0C,CAAC;AAE9E,OAAO,EAAC,iBAAiB,EAAC,MAAM,YAAY,CAAC;AAW7C
|
|
1
|
+
{"version":3,"file":"payloadEnvelopeProcessor.d.ts","sourceRoot":"","sources":["../../../src/chain/blocks/payloadEnvelopeProcessor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,OAAO,EAAC,MAAM,0BAA0B,CAAC;AACjD,OAAO,EAAC,YAAY,EAAC,MAAM,2BAA2B,CAAC;AACvD,OAAO,KAAK,EAAC,WAAW,EAAC,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAC,oBAAoB,EAAC,MAAM,0CAA0C,CAAC;AAE9E,OAAO,EAAC,iBAAiB,EAAC,MAAM,YAAY,CAAC;AAW7C;;;;;;;GAOG;AACH,qBAAa,wBAAwB;IACnC,QAAQ,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC,oBAAoB,EAAE,iBAAiB,CAAC,EAAE,IAAI,CAAC,CAAC;IACjF,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAoE;IAEjG,YAAY,KAAK,EAAE,WAAW,EAAE,OAAO,EAAE,OAAO,GAAG,IAAI,EAAE,MAAM,EAAE,WAAW,EAS3E;IAEK,yBAAyB,CAAC,YAAY,EAAE,oBAAoB,EAAE,IAAI,GAAE,iBAAsB,GAAG,OAAO,CAAC,IAAI,CAAC,CAqB/G;CACF"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { JobItemQueue } from "../../util/queue/index.js";
|
|
2
|
-
import {
|
|
2
|
+
import { processExecutionPayload } from "./importExecutionPayload.js";
|
|
3
3
|
// TODO GLOAS: Set to be equal to DEFAULT_MAX_PENDING_UNFINALIZED_PAYLOAD_ENVELOPE_WRITES for now
|
|
4
4
|
const QUEUE_MAX_LENGTH = 16;
|
|
5
5
|
var PayloadEnvelopeImportStatus;
|
|
@@ -10,6 +10,11 @@ var PayloadEnvelopeImportStatus;
|
|
|
10
10
|
})(PayloadEnvelopeImportStatus || (PayloadEnvelopeImportStatus = {}));
|
|
11
11
|
/**
|
|
12
12
|
* PayloadEnvelopeProcessor processes payload envelope jobs in a queued fashion, one after the other.
|
|
13
|
+
*
|
|
14
|
+
* Jobs are enqueued only on envelope arrival (gossip or API). The envelope may reach us before
|
|
15
|
+
* the sampled data columns; importExecutionPayload awaits `verifyPayloadsDataAvailability`
|
|
16
|
+
* internally, so a queued job can pend for up to `PAYLOAD_DATA_AVAILABILITY_TIMEOUT` while
|
|
17
|
+
* waiting for columns. Duplicate triggers for the same payloadInput are deduped via `importStatus`.
|
|
13
18
|
*/
|
|
14
19
|
export class PayloadEnvelopeProcessor {
|
|
15
20
|
jobQueue;
|
|
@@ -17,13 +22,10 @@ export class PayloadEnvelopeProcessor {
|
|
|
17
22
|
constructor(chain, metrics, signal) {
|
|
18
23
|
this.jobQueue = new JobItemQueue((payloadInput, opts) => {
|
|
19
24
|
this.importStatus.set(payloadInput, PayloadEnvelopeImportStatus.importing);
|
|
20
|
-
return
|
|
25
|
+
return processExecutionPayload.call(chain, payloadInput, signal, opts);
|
|
21
26
|
}, { maxLength: QUEUE_MAX_LENGTH, noYieldIfOneItem: true, signal }, metrics?.payloadEnvelopeProcessorQueue ?? undefined);
|
|
22
27
|
}
|
|
23
28
|
async processPayloadEnvelopeJob(payloadInput, opts = {}) {
|
|
24
|
-
if (!payloadInput.isComplete()) {
|
|
25
|
-
return;
|
|
26
|
-
}
|
|
27
29
|
if (this.importStatus.get(payloadInput) !== undefined) {
|
|
28
30
|
return;
|
|
29
31
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"payloadEnvelopeProcessor.js","sourceRoot":"","sources":["../../../src/chain/blocks/payloadEnvelopeProcessor.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,YAAY,EAAC,MAAM,2BAA2B,CAAC;AAGvD,OAAO,EAAC,
|
|
1
|
+
{"version":3,"file":"payloadEnvelopeProcessor.js","sourceRoot":"","sources":["../../../src/chain/blocks/payloadEnvelopeProcessor.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,YAAY,EAAC,MAAM,2BAA2B,CAAC;AAGvD,OAAO,EAAC,uBAAuB,EAAC,MAAM,6BAA6B,CAAC;AAGpE,iGAAiG;AACjG,MAAM,gBAAgB,GAAG,EAAE,CAAC;AAE5B,IAAK,2BAIJ;AAJD,WAAK,2BAA2B;IAC9B,gDAAiB,CAAA;IACjB,sDAAuB,CAAA;IACvB,oDAAqB,CAAA;AAAC,CACxB,EAJK,2BAA2B,KAA3B,2BAA2B,QAI/B;AAED;;;;;;;GAOG;AACH,MAAM,OAAO,wBAAwB;IAC1B,QAAQ,CAAgE;IAChE,YAAY,GAAG,IAAI,OAAO,EAAqD,CAAC;IAEjG,YAAY,KAAkB,EAAE,OAAuB,EAAE,MAAmB,EAAE;QAC5E,IAAI,CAAC,QAAQ,GAAG,IAAI,YAAY,CAC9B,CAAC,YAAY,EAAE,IAAI,EAAE,EAAE,CAAC;YACtB,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,YAAY,EAAE,2BAA2B,CAAC,SAAS,CAAC,CAAC;YAC3E,OAAO,uBAAuB,CAAC,IAAI,CAAC,KAAK,EAAE,YAAY,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;QAAA,CACxE,EACD,EAAC,SAAS,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,IAAI,EAAE,MAAM,EAAC,EAC7D,OAAO,EAAE,6BAA6B,IAAI,SAAS,CACpD,CAAC;IAAA,CACH;IAED,KAAK,CAAC,yBAAyB,CAAC,YAAkC,EAAE,IAAI,GAAsB,EAAE,EAAiB;QAC/G,IAAI,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,YAAY,CAAC,KAAK,SAAS,EAAE,CAAC;YACtD,OAAO;QACT,CAAC;QAED,MAAM,IAAI,CAAC,QAAQ,CAAC,YAAY,EAAE,CAAC;QAEnC,sEAAsE;QACtE,IAAI,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,YAAY,CAAC,KAAK,SAAS,EAAE,CAAC;YACtD,OAAO;QACT,CAAC;QAED,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,YAAY,EAAE,2BAA2B,CAAC,MAAM,CAAC,CAAC;QAExE,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC;YAC7C,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,YAAY,EAAE,2BAA2B,CAAC,QAAQ,CAAC,CAAC;QAC5E,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;YACvC,MAAM,CAAC,CAAC;QACV,CAAC;IAAA,CACF;CACF"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { ChainForkConfig } from "@lodestar/config";
|
|
2
|
-
import { BlockExecutionStatus, PayloadExecutionStatus } from "@lodestar/fork-choice";
|
|
2
|
+
import type { BlockExecutionStatus, PayloadExecutionStatus } from "@lodestar/fork-choice";
|
|
3
3
|
import { DataAvailabilityStatus, IBeaconStateView } from "@lodestar/state-transition";
|
|
4
4
|
import type { IndexedAttestation, Slot, fulu } from "@lodestar/types";
|
|
5
5
|
import { IBlockInput } from "./blockInput/types.js";
|
|
@@ -30,8 +30,9 @@ export declare enum BlobSidecarValidation {
|
|
|
30
30
|
}
|
|
31
31
|
export type ImportPayloadOpts = {
|
|
32
32
|
/**
|
|
33
|
-
* Set to true
|
|
34
|
-
*
|
|
33
|
+
* Set to true when the envelope was already validated upstream (e.g., gossip/API validation):
|
|
34
|
+
* signature is trusted and execution_requests_root was already verified against the bid.
|
|
35
|
+
* When false/undefined, both are verified during import.
|
|
35
36
|
*/
|
|
36
37
|
validSignature?: boolean;
|
|
37
38
|
};
|
|
@@ -73,9 +74,17 @@ export type ImportBlockOpts = {
|
|
|
73
74
|
/** Seen timestamp seconds */
|
|
74
75
|
seenTimestampSec?: number;
|
|
75
76
|
};
|
|
76
|
-
|
|
77
|
+
/**
|
|
78
|
+
* A wrapper around a `SignedBeaconBlock` that indicates that this block is fully verified and ready to import.
|
|
79
|
+
*
|
|
80
|
+
* `executionStatus` reflects the outcome of execution payload verification at block-import time:
|
|
81
|
+
* - pre-gloas: Valid | Syncing | PreMerge (from EL notifyNewPayload against the in-block payload)
|
|
82
|
+
* - post-gloas: inherited from parent's chain (Valid/Syncing) by importBlock; payload arrives
|
|
83
|
+
* separately as an envelope and creates the FULL variant later via onExecutionPayload
|
|
84
|
+
*/
|
|
85
|
+
export type FullyVerifiedBlock = {
|
|
77
86
|
blockInput: IBlockInput;
|
|
78
|
-
|
|
87
|
+
postState: IBeaconStateView;
|
|
79
88
|
parentBlockSlot: Slot;
|
|
80
89
|
proposerBalanceDelta: number;
|
|
81
90
|
dataAvailabilityStatus: DataAvailabilityStatus;
|
|
@@ -83,22 +92,8 @@ type FullyVerifiedBlockBase = {
|
|
|
83
92
|
indexedAttestations: IndexedAttestation[];
|
|
84
93
|
/** Seen timestamp seconds */
|
|
85
94
|
seenTimestampSec: number;
|
|
95
|
+
/** If the execution payload couldn't be verified because of EL syncing status, used in optimistic sync */
|
|
96
|
+
executionStatus: BlockExecutionStatus | PayloadExecutionStatus;
|
|
86
97
|
};
|
|
87
|
-
/**
|
|
88
|
-
* A wrapper around a `SignedBeaconBlock` that indicates that this block is fully verified and ready to import.
|
|
89
|
-
*
|
|
90
|
-
* Discriminated union on `postPayloadState`:
|
|
91
|
-
* - `null` → block has no pre-verified envelope; `executionStatus` is any `BlockExecutionStatus`
|
|
92
|
-
* - non-null → envelope was pre-verified during state transition; `executionStatus` is narrowed to
|
|
93
|
-
* `Valid | Syncing` (matching what `forkChoice.onExecutionPayload` expects)
|
|
94
|
-
*/
|
|
95
|
-
export type FullyVerifiedBlock = FullyVerifiedBlockBase & ({
|
|
96
|
-
postPayloadState: null;
|
|
97
|
-
/** If the execution payload couldn't be verified because of EL syncing status, used in optimistic sync or for merge block */
|
|
98
|
-
executionStatus: BlockExecutionStatus;
|
|
99
|
-
} | {
|
|
100
|
-
postPayloadState: IBeaconStateView;
|
|
101
|
-
executionStatus: PayloadExecutionStatus;
|
|
102
|
-
});
|
|
103
98
|
export {};
|
|
104
99
|
//# sourceMappingURL=types.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/chain/blocks/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,eAAe,EAAC,MAAM,kBAAkB,CAAC;AACtD,OAAO,EAAC,oBAAoB,EAAE,sBAAsB,EAAC,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/chain/blocks/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,eAAe,EAAC,MAAM,kBAAkB,CAAC;AACtD,OAAO,KAAK,EAAC,oBAAoB,EAAE,sBAAsB,EAAC,MAAM,uBAAuB,CAAC;AAExF,OAAO,EAAC,sBAAsB,EAAE,gBAAgB,EAAqB,MAAM,4BAA4B,CAAC;AACxG,OAAO,KAAK,EAAC,kBAAkB,EAAE,IAAI,EAAE,IAAI,EAAC,MAAM,iBAAiB,CAAC;AACpE,OAAO,EAAC,WAAW,EAAC,MAAM,uBAAuB,CAAC;AAElD,oBAAY,iBAAiB;IAC3B,KAAK,UAAU;IACf,IAAI,SAAS;IACb,UAAU,gBAAgB;CAC3B;AAED,KAAK,cAAc,GAAG;IACpB,UAAU,EAAE,IAAI,CAAC,iBAAiB,CAAC;IACnC,eAAe,EAAE,UAAU,GAAG,IAAI,CAAC;CACpC,CAAC;AACF,MAAM,MAAM,mBAAmB,GAAG,GAAG,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;AAE9D,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,eAAe,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,GAAG,OAAO,CAMrG;AAED,oBAAY,oBAAoB;IAC9B,IAAI,IAAA;IACJ,KAAK,IAAA;CACN;AAED,oBAAY,qBAAqB;IAC/B,gFAAgF;IAChF,UAAU,IAAA;IACV;;;;OAIG;IACH,IAAI,IAAA;CACL;AAED,MAAM,MAAM,iBAAiB,GAAG;IAC9B;;;;OAIG;IACH,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG;IAC5B;;OAEG;IACH,kBAAkB,CAAC,EAAE,oBAAoB,CAAC;IAC1C;;;;OAIG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB;;;;OAIG;IACH,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B;;OAEG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB;;OAEG;IACH,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC;;OAEG;IACH,sBAAsB,CAAC,EAAE,OAAO,CAAC;IACjC;;OAEG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,mFAAmF;IACnF,iBAAiB,CAAC,EAAE,qBAAqB,CAAC;IAC1C,6BAA6B;IAC7B,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B,CAAC;AAEF;;;;;;;GAOG;AACH,MAAM,MAAM,kBAAkB,GAAG;IAC/B,UAAU,EAAE,WAAW,CAAC;IACxB,SAAS,EAAE,gBAAgB,CAAC;IAC5B,eAAe,EAAE,IAAI,CAAC;IACtB,oBAAoB,EAAE,MAAM,CAAC;IAC7B,sBAAsB,EAAE,sBAAsB,CAAC;IAC/C,4FAA4F;IAC5F,mBAAmB,EAAE,kBAAkB,EAAE,CAAC;IAC1C,6BAA6B;IAC7B,gBAAgB,EAAE,MAAM,CAAC;IACzB,0GAA0G;IAC1G,eAAe,EAAE,oBAAoB,GAAG,sBAAsB,CAAC;CAChE,CAAC"}
|
|
@@ -1,7 +1,28 @@
|
|
|
1
1
|
import { ChainForkConfig } from "@lodestar/config";
|
|
2
|
+
import { ProtoBlock } from "@lodestar/fork-choice";
|
|
3
|
+
import { Slot } from "@lodestar/types";
|
|
2
4
|
import { IBlockInput } from "../blockInput/types.js";
|
|
5
|
+
import { PayloadEnvelopeInput } from "../payloadEnvelopeInput/payloadEnvelopeInput.js";
|
|
6
|
+
export type OrphanedPayloadEnvelope = {
|
|
7
|
+
slot: Slot;
|
|
8
|
+
payloadEnvelopeInput: PayloadEnvelopeInput;
|
|
9
|
+
};
|
|
10
|
+
export type ChainSegmentResult = {
|
|
11
|
+
warnings: OrphanedPayloadEnvelope[] | null;
|
|
12
|
+
};
|
|
3
13
|
/**
|
|
4
|
-
* Assert this chain segment of blocks is linear with slot numbers and hashes
|
|
14
|
+
* Assert this chain segment of blocks is linear with slot numbers and hashes,
|
|
15
|
+
* and that the provided envelopes are consistent with their respective blocks.
|
|
16
|
+
*
|
|
17
|
+
* Must be called after verifyBlocksSanityChecks so that parentBlock (from forkchoice)
|
|
18
|
+
* is available to seed the execution hash chain.
|
|
19
|
+
*
|
|
20
|
+
* For each block:
|
|
21
|
+
* - Verifies parent root + slot linearity
|
|
22
|
+
* - For gloas: verifies bid.parentBlockHash matches the tracked execution hash; if not, the
|
|
23
|
+
* previous FULL envelope is treated as orphaned (segment continues as if previous slot was EMPTY)
|
|
24
|
+
* - If an envelope exists for this slot: verifies it references this block's root
|
|
25
|
+
* - Advances the tracked execution hash (FULL if envelope present, EMPTY if not)
|
|
5
26
|
*/
|
|
6
|
-
export declare function assertLinearChainSegment(config: ChainForkConfig, blocks: IBlockInput[]):
|
|
27
|
+
export declare function assertLinearChainSegment(config: ChainForkConfig, blocks: IBlockInput[], payloadEnvelopes: Map<Slot, PayloadEnvelopeInput> | null, parentBlock: ProtoBlock): ChainSegmentResult;
|
|
7
28
|
//# sourceMappingURL=chainSegment.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chainSegment.d.ts","sourceRoot":"","sources":["../../../../src/chain/blocks/utils/chainSegment.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,eAAe,EAAC,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"chainSegment.d.ts","sourceRoot":"","sources":["../../../../src/chain/blocks/utils/chainSegment.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,eAAe,EAAC,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAC,UAAU,EAAC,MAAM,uBAAuB,CAAC;AACjD,OAAO,EAAC,IAAI,EAA0B,MAAM,iBAAiB,CAAC;AAG9D,OAAO,EAAC,WAAW,EAAC,MAAM,wBAAwB,CAAC;AACnD,OAAO,EAAC,oBAAoB,EAAC,MAAM,iDAAiD,CAAC;AAErF,MAAM,MAAM,uBAAuB,GAAG;IACpC,IAAI,EAAE,IAAI,CAAC;IACX,oBAAoB,EAAE,oBAAoB,CAAC;CAC5C,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG;IAAC,QAAQ,EAAE,uBAAuB,EAAE,GAAG,IAAI,CAAA;CAAC,CAAC;AAE9E;;;;;;;;;;;;;GAaG;AACH,wBAAgB,wBAAwB,CACtC,MAAM,EAAE,eAAe,EACvB,MAAM,EAAE,WAAW,EAAE,EACrB,gBAAgB,EAAE,GAAG,CAAC,IAAI,EAAE,oBAAoB,CAAC,GAAG,IAAI,EACxD,WAAW,EAAE,UAAU,GACtB,kBAAkB,CA2FpB"}
|