@lodestar/beacon-node 1.43.0-dev.4fb05c546d → 1.43.0-dev.4fe6b362c9
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 +86 -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 +86 -17
- package/lib/api/impl/validator/index.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.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 +16 -28
- package/lib/chain/blocks/importBlock.js.map +1 -1
- package/lib/chain/blocks/importExecutionPayload.d.ts +32 -14
- package/lib/chain/blocks/importExecutionPayload.d.ts.map +1 -1
- package/lib/chain/blocks/importExecutionPayload.js +100 -91
- 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 +58 -26
- package/lib/chain/blocks/index.js.map +1 -1
- package/lib/chain/blocks/payloadEnvelopeInput/payloadEnvelopeInput.d.ts +12 -1
- package/lib/chain/blocks/payloadEnvelopeInput/payloadEnvelopeInput.d.ts.map +1 -1
- package/lib/chain/blocks/payloadEnvelopeInput/payloadEnvelopeInput.js +28 -2
- package/lib/chain/blocks/payloadEnvelopeInput/payloadEnvelopeInput.js.map +1 -1
- package/lib/chain/blocks/payloadEnvelopeInput/types.d.ts +17 -0
- package/lib/chain/blocks/payloadEnvelopeInput/types.d.ts.map +1 -1
- package/lib/chain/blocks/payloadEnvelopeProcessor.js +2 -2
- package/lib/chain/blocks/payloadEnvelopeProcessor.js.map +1 -1
- package/lib/chain/blocks/types.d.ts +15 -20
- package/lib/chain/blocks/types.d.ts.map +1 -1
- package/lib/chain/blocks/utils/chainSegment.d.ts +21 -2
- package/lib/chain/blocks/utils/chainSegment.d.ts.map +1 -1
- package/lib/chain/blocks/utils/chainSegment.js +92 -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 +80 -0
- package/lib/chain/blocks/verifyExecutionPayloadEnvelope.js.map +1 -0
- package/lib/chain/blocks/verifyPayloadsDataAvailability.d.ts.map +1 -1
- package/lib/chain/blocks/verifyPayloadsDataAvailability.js +8 -3
- package/lib/chain/blocks/verifyPayloadsDataAvailability.js.map +1 -1
- 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 +10 -7
- package/lib/chain/chain.d.ts.map +1 -1
- package/lib/chain/chain.js +47 -15
- package/lib/chain/chain.js.map +1 -1
- package/lib/chain/emitter.d.ts +3 -14
- package/lib/chain/emitter.d.ts.map +1 -1
- package/lib/chain/emitter.js +0 -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 +24 -1
- package/lib/chain/errors/executionPayloadBid.d.ts.map +1 -1
- package/lib/chain/errors/executionPayloadBid.js +4 -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 +5 -17
- 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 +9 -6
- package/lib/chain/interface.d.ts.map +1 -1
- package/lib/chain/interface.js.map +1 -1
- package/lib/chain/lightClient/index.d.ts.map +1 -1
- package/lib/chain/lightClient/index.js +1 -1
- package/lib/chain/lightClient/index.js.map +1 -1
- package/lib/chain/opPools/index.d.ts +1 -0
- package/lib/chain/opPools/index.d.ts.map +1 -1
- package/lib/chain/opPools/index.js +1 -0
- package/lib/chain/opPools/index.js.map +1 -1
- package/lib/chain/opPools/payloadAttestationPool.d.ts +4 -3
- package/lib/chain/opPools/payloadAttestationPool.d.ts.map +1 -1
- package/lib/chain/opPools/payloadAttestationPool.js +56 -14
- package/lib/chain/opPools/payloadAttestationPool.js.map +1 -1
- package/lib/chain/opPools/proposerPreferencesPool.d.ts +29 -0
- package/lib/chain/opPools/proposerPreferencesPool.d.ts.map +1 -0
- package/lib/chain/opPools/proposerPreferencesPool.js +56 -0
- package/lib/chain/opPools/proposerPreferencesPool.js.map +1 -0
- package/lib/chain/prepareNextSlot.d.ts.map +1 -1
- package/lib/chain/prepareNextSlot.js +31 -13
- package/lib/chain/prepareNextSlot.js.map +1 -1
- package/lib/chain/produceBlock/produceBlockBody.d.ts +11 -1
- package/lib/chain/produceBlock/produceBlockBody.d.ts.map +1 -1
- package/lib/chain/produceBlock/produceBlockBody.js +52 -14
- package/lib/chain/produceBlock/produceBlockBody.js.map +1 -1
- package/lib/chain/regen/interface.d.ts +1 -0
- 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.map +1 -1
- package/lib/chain/regen/queued.js +1 -4
- package/lib/chain/regen/queued.js.map +1 -1
- package/lib/chain/regen/regen.d.ts.map +1 -1
- package/lib/chain/regen/regen.js +1 -4
- 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 +24 -7
- package/lib/chain/seenCache/seenPayloadEnvelopeInput.d.ts.map +1 -1
- package/lib/chain/seenCache/seenPayloadEnvelopeInput.js +69 -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.map +1 -1
- package/lib/chain/stateCache/persistentCheckpointsCache.js +4 -1
- package/lib/chain/stateCache/persistentCheckpointsCache.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 +81 -18
- 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 +19 -9
- package/lib/chain/validation/executionPayloadEnvelope.js.map +1 -1
- package/lib/chain/validation/payloadAttestationMessage.d.ts +1 -1
- package/lib/chain/validation/payloadAttestationMessage.d.ts.map +1 -1
- package/lib/chain/validation/payloadAttestationMessage.js +5 -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 +5 -0
- package/lib/metrics/metrics/lodestar.d.ts.map +1 -1
- package/lib/metrics/metrics/lodestar.js +9 -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 +3 -0
- package/lib/network/interface.d.ts.map +1 -1
- package/lib/network/network.d.ts +3 -0
- package/lib/network/network.d.ts.map +1 -1
- package/lib/network/network.js +14 -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 +80 -23
- 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/ReqRespBeaconNode.d.ts.map +1 -1
- package/lib/network/reqresp/ReqRespBeaconNode.js +1 -1
- package/lib/network/reqresp/ReqRespBeaconNode.js.map +1 -1
- package/lib/network/reqresp/handlers/beaconBlocksByHead.d.ts +9 -0
- package/lib/network/reqresp/handlers/beaconBlocksByHead.d.ts.map +1 -0
- package/lib/network/reqresp/handlers/beaconBlocksByHead.js +61 -0
- package/lib/network/reqresp/handlers/beaconBlocksByHead.js.map +1 -0
- 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/network/reqresp/handlers/index.d.ts.map +1 -1
- package/lib/network/reqresp/handlers/index.js +5 -0
- package/lib/network/reqresp/handlers/index.js.map +1 -1
- package/lib/network/reqresp/interface.d.ts +1 -1
- package/lib/network/reqresp/interface.js +1 -1
- package/lib/network/reqresp/protocols.d.ts +1 -0
- package/lib/network/reqresp/protocols.d.ts.map +1 -1
- package/lib/network/reqresp/protocols.js +5 -0
- package/lib/network/reqresp/protocols.js.map +1 -1
- package/lib/network/reqresp/rateLimit.d.ts.map +1 -1
- package/lib/network/reqresp/rateLimit.js +4 -0
- package/lib/network/reqresp/rateLimit.js.map +1 -1
- package/lib/network/reqresp/score.d.ts.map +1 -1
- package/lib/network/reqresp/score.js +1 -0
- package/lib/network/reqresp/score.js.map +1 -1
- package/lib/network/reqresp/types.d.ts +3 -0
- package/lib/network/reqresp/types.d.ts.map +1 -1
- package/lib/network/reqresp/types.js +3 -0
- package/lib/network/reqresp/types.js.map +1 -1
- package/lib/node/nodejs.js +2 -2
- package/lib/node/nodejs.js.map +1 -1
- package/lib/sync/constants.d.ts +7 -1
- package/lib/sync/constants.d.ts.map +1 -1
- package/lib/sync/constants.js +7 -4
- package/lib/sync/constants.js.map +1 -1
- package/lib/sync/range/batch.d.ts +55 -8
- package/lib/sync/range/batch.d.ts.map +1 -1
- package/lib/sync/range/batch.js +291 -66
- package/lib/sync/range/batch.js.map +1 -1
- package/lib/sync/range/chain.d.ts +22 -4
- package/lib/sync/range/chain.d.ts.map +1 -1
- package/lib/sync/range/chain.js +103 -11
- 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 +71 -11
- package/lib/sync/range/range.js.map +1 -1
- package/lib/sync/range/utils/peerBalancer.d.ts +2 -1
- package/lib/sync/range/utils/peerBalancer.d.ts.map +1 -1
- package/lib/sync/range/utils/peerBalancer.js +8 -4
- package/lib/sync/range/utils/peerBalancer.js.map +1 -1
- package/lib/sync/sync.d.ts.map +1 -1
- package/lib/sync/sync.js +13 -0
- package/lib/sync/sync.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 +29 -1
- package/lib/sync/unknownBlock.d.ts.map +1 -1
- package/lib/sync/unknownBlock.js +727 -61
- package/lib/sync/unknownBlock.js.map +1 -1
- package/lib/sync/utils/downloadByRange.d.ts +73 -10
- package/lib/sync/utils/downloadByRange.d.ts.map +1 -1
- package/lib/sync/utils/downloadByRange.js +213 -26
- 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/sync/utils/rateLimit.d.ts +2 -0
- package/lib/sync/utils/rateLimit.d.ts.map +1 -0
- package/lib/sync/utils/rateLimit.js +15 -0
- package/lib/sync/utils/rateLimit.js.map +1 -0
- package/lib/util/dependentRoot.d.ts +6 -2
- package/lib/util/dependentRoot.d.ts.map +1 -1
- package/lib/util/dependentRoot.js +20 -16
- package/lib/util/dependentRoot.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 +16 -16
- package/src/api/impl/beacon/blocks/index.ts +22 -9
- package/src/api/impl/beacon/pool/index.ts +136 -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 +101 -16
- package/src/chain/archiveStore/archiveStore.ts +5 -5
- package/src/chain/archiveStore/interface.ts +4 -4
- package/src/chain/archiveStore/strategies/frequencyStateArchiveStrategy.ts +4 -4
- package/src/chain/archiveStore/utils/archiveBlocks.ts +153 -94
- package/src/chain/blocks/blockInput/blockInput.ts +4 -1
- package/src/chain/blocks/importBlock.ts +16 -48
- package/src/chain/blocks/importExecutionPayload.ts +126 -110
- package/src/chain/blocks/index.ts +71 -23
- package/src/chain/blocks/payloadEnvelopeInput/payloadEnvelopeInput.ts +37 -3
- package/src/chain/blocks/payloadEnvelopeInput/types.ts +18 -0
- package/src/chain/blocks/payloadEnvelopeProcessor.ts +2 -2
- package/src/chain/blocks/types.ts +15 -25
- package/src/chain/blocks/utils/chainSegment.ts +117 -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 +137 -0
- package/src/chain/blocks/verifyPayloadsDataAvailability.ts +7 -4
- package/src/chain/blocks/writePayloadEnvelopeInputToDb.ts +9 -18
- package/src/chain/chain.ts +68 -26
- package/src/chain/emitter.ts +3 -14
- package/src/chain/errors/blockError.ts +4 -1
- package/src/chain/errors/executionPayloadBid.ts +28 -1
- 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 +2 -22
- package/src/chain/initState.ts +9 -1
- package/src/chain/interface.ts +13 -3
- package/src/chain/lightClient/index.ts +6 -6
- package/src/chain/opPools/index.ts +1 -0
- package/src/chain/opPools/payloadAttestationPool.ts +63 -18
- package/src/chain/opPools/proposerPreferencesPool.ts +59 -0
- package/src/chain/prepareNextSlot.ts +36 -14
- package/src/chain/produceBlock/produceBlockBody.ts +63 -13
- package/src/chain/regen/interface.ts +1 -0
- package/src/chain/regen/queued.ts +2 -7
- package/src/chain/regen/regen.ts +2 -7
- package/src/chain/seenCache/index.ts +1 -0
- package/src/chain/seenCache/seenPayloadEnvelopeInput.ts +89 -21
- package/src/chain/seenCache/seenProposerPreferences.ts +32 -0
- package/src/chain/stateCache/persistentCheckpointsCache.ts +4 -1
- package/src/chain/validation/block.ts +1 -0
- package/src/chain/validation/executionPayloadBid.ts +85 -18
- package/src/chain/validation/executionPayloadEnvelope.ts +20 -10
- package/src/chain/validation/payloadAttestationMessage.ts +6 -4
- 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 +10 -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 +3 -0
- package/src/network/network.ts +35 -1
- package/src/network/processor/gossipHandlers.ts +99 -23
- package/src/network/processor/gossipQueues/index.ts +5 -0
- package/src/network/processor/index.ts +6 -5
- package/src/network/reqresp/ReqRespBeaconNode.ts +1 -0
- package/src/network/reqresp/handlers/beaconBlocksByHead.ts +91 -0
- 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/network/reqresp/handlers/index.ts +5 -0
- package/src/network/reqresp/interface.ts +1 -1
- package/src/network/reqresp/protocols.ts +6 -0
- package/src/network/reqresp/rateLimit.ts +4 -0
- package/src/network/reqresp/score.ts +1 -0
- package/src/network/reqresp/types.ts +5 -0
- package/src/node/nodejs.ts +2 -2
- package/src/sync/constants.ts +8 -4
- package/src/sync/range/batch.ts +388 -75
- package/src/sync/range/chain.ts +131 -14
- package/src/sync/range/range.ts +86 -11
- package/src/sync/range/utils/peerBalancer.ts +9 -3
- package/src/sync/sync.ts +13 -1
- package/src/sync/types.ts +72 -0
- package/src/sync/unknownBlock.ts +915 -65
- package/src/sync/utils/downloadByRange.ts +386 -39
- package/src/sync/utils/downloadByRoot.ts +24 -2
- package/src/sync/utils/pendingBlocksTree.ts +0 -15
- package/src/sync/utils/rateLimit.ts +16 -0
- package/src/util/dependentRoot.ts +22 -18
- package/src/util/sszBytes.ts +25 -5
|
@@ -118,7 +118,7 @@ export function getLodestarApi({
|
|
|
118
118
|
return {
|
|
119
119
|
// biome-ignore lint/complexity/useLiteralKeys: The `blockProcessor` is a protected attribute
|
|
120
120
|
data: (chain as BeaconChain)["blockProcessor"].jobQueue.getItems().map((item) => {
|
|
121
|
-
const [blockInputs, opts] = item.args;
|
|
121
|
+
const [blockInputs, _payloadEnvelopes, opts] = item.args;
|
|
122
122
|
return {
|
|
123
123
|
blockSlots: blockInputs.map((blockInput) => blockInput.slot),
|
|
124
124
|
jobOpts: opts,
|
|
@@ -14,6 +14,7 @@ import {
|
|
|
14
14
|
isForkPostBellatrix,
|
|
15
15
|
isForkPostDeneb,
|
|
16
16
|
isForkPostElectra,
|
|
17
|
+
isForkPostFulu,
|
|
17
18
|
isForkPostGloas,
|
|
18
19
|
} from "@lodestar/params";
|
|
19
20
|
import {
|
|
@@ -26,6 +27,7 @@ import {
|
|
|
26
27
|
computeTimeAtSlot,
|
|
27
28
|
getCurrentSlot,
|
|
28
29
|
isStatePostAltair,
|
|
30
|
+
isStatePostGloas,
|
|
29
31
|
proposerShufflingDecisionRoot,
|
|
30
32
|
} from "@lodestar/state-transition";
|
|
31
33
|
import {
|
|
@@ -924,7 +926,7 @@ export function getValidatorApi(
|
|
|
924
926
|
metrics?.blockProductionRequests.inc({source});
|
|
925
927
|
|
|
926
928
|
const graffitiBytes = toGraffitiBytes(
|
|
927
|
-
graffiti ?? getDefaultGraffiti(getLodestarClientVersion(), chain.executionEngine.clientVersion,
|
|
929
|
+
graffiti ?? getDefaultGraffiti(getLodestarClientVersion(opts), chain.executionEngine.clientVersion, opts)
|
|
928
930
|
);
|
|
929
931
|
const commonBlockBodyPromise = chain.produceCommonBlockBody({
|
|
930
932
|
slot,
|
|
@@ -1049,6 +1051,36 @@ export function getValidatorApi(
|
|
|
1049
1051
|
};
|
|
1050
1052
|
},
|
|
1051
1053
|
|
|
1054
|
+
async producePayloadAttestationData({slot}) {
|
|
1055
|
+
const fork = config.getForkName(slot);
|
|
1056
|
+
if (!isForkPostGloas(fork)) {
|
|
1057
|
+
throw new ApiError(400, `producePayloadAttestationData is not supported before Gloas fork=${fork}`);
|
|
1058
|
+
}
|
|
1059
|
+
|
|
1060
|
+
notWhileSyncing();
|
|
1061
|
+
await waitForSlot(slot);
|
|
1062
|
+
|
|
1063
|
+
const block = chain.forkChoice.getCanonicalBlockClosestLteSlot(slot);
|
|
1064
|
+
if (!block) {
|
|
1065
|
+
throw new ApiError(404, `No canonical block found at or before slot=${slot}`);
|
|
1066
|
+
}
|
|
1067
|
+
|
|
1068
|
+
const blockIsForSlot = block.slot === slot;
|
|
1069
|
+
const payloadInput = chain.seenPayloadEnvelopeInputCache.get(block.blockRoot);
|
|
1070
|
+
const payloadPresent = blockIsForSlot && (payloadInput?.hasPayloadEnvelope() ?? false);
|
|
1071
|
+
const blobDataAvailable = blockIsForSlot && (payloadInput?.hasAllData() ?? false);
|
|
1072
|
+
|
|
1073
|
+
return {
|
|
1074
|
+
data: {
|
|
1075
|
+
beaconBlockRoot: fromHex(block.blockRoot),
|
|
1076
|
+
slot,
|
|
1077
|
+
payloadPresent,
|
|
1078
|
+
blobDataAvailable,
|
|
1079
|
+
},
|
|
1080
|
+
meta: {version: fork},
|
|
1081
|
+
};
|
|
1082
|
+
},
|
|
1083
|
+
|
|
1052
1084
|
/**
|
|
1053
1085
|
* GET `/eth/v1/validator/sync_committee_contribution`
|
|
1054
1086
|
*
|
|
@@ -1093,26 +1125,33 @@ export function getValidatorApi(
|
|
|
1093
1125
|
async getProposerDuties({epoch}, _context, opts?: {v2?: boolean}) {
|
|
1094
1126
|
notWhileSyncing();
|
|
1095
1127
|
|
|
1096
|
-
// Early check that epoch is no more than current_epoch + 1, or allow for pre-genesis
|
|
1097
1128
|
const currentEpoch = currentEpochWithDisparity();
|
|
1098
1129
|
const nextEpoch = currentEpoch + 1;
|
|
1099
|
-
|
|
1130
|
+
const startSlot = computeStartSlotAtEpoch(epoch);
|
|
1131
|
+
const prepareNextSlotLookAheadMs =
|
|
1132
|
+
config.SLOT_DURATION_MS - config.getSlotComponentDurationMs(PREPARE_NEXT_SLOT_BPS);
|
|
1133
|
+
const toNextEpochMs = msToNextEpoch();
|
|
1134
|
+
const nearNextEpoch = toNextEpochMs < prepareNextSlotLookAheadMs;
|
|
1135
|
+
// Post-Fulu the proposer lookahead is deterministic and known a full epoch ahead, so
|
|
1136
|
+
// close to the boundary `currentEpoch + 2` is serveable from the upcoming-epoch
|
|
1137
|
+
// checkpoint state (its `nextProposers`). Pre-Fulu / mid-epoch: `currentEpoch + 1` max.
|
|
1138
|
+
const isPostFulu = isForkPostFulu(config.getForkName(startSlot));
|
|
1139
|
+
const maxFutureEpoch = isPostFulu && nearNextEpoch && opts?.v2 ? nextEpoch + 1 : nextEpoch;
|
|
1140
|
+
if (currentEpoch >= 0 && epoch > maxFutureEpoch) {
|
|
1100
1141
|
throw new ApiError(400, `Requested epoch ${epoch} must not be more than one epoch in the future`);
|
|
1101
1142
|
}
|
|
1102
1143
|
|
|
1103
1144
|
const head = chain.forkChoice.getHead();
|
|
1104
1145
|
let state: IBeaconStateView | undefined = undefined;
|
|
1105
|
-
const startSlot = computeStartSlotAtEpoch(epoch);
|
|
1106
|
-
const prepareNextSlotLookAheadMs =
|
|
1107
|
-
config.SLOT_DURATION_MS - config.getSlotComponentDurationMs(PREPARE_NEXT_SLOT_BPS);
|
|
1108
|
-
const toNextEpochMs = msToNextEpoch();
|
|
1109
1146
|
// validators may request next epoch's duties when it's close to next epoch
|
|
1110
|
-
// this is to avoid missed block proposal due to 0 epoch look ahead
|
|
1111
|
-
|
|
1147
|
+
// this is to avoid missed block proposal due to 0 epoch look ahead.
|
|
1148
|
+
// Post-Fulu, `nextEpoch + 1` is served from the same upcoming-epoch (`nextEpoch`)
|
|
1149
|
+
// checkpoint state via its `nextProposers` (deterministic proposer lookahead).
|
|
1150
|
+
if (nearNextEpoch && (epoch === nextEpoch || (isPostFulu && epoch === nextEpoch + 1))) {
|
|
1112
1151
|
// wait for maximum 1 slot for cp state which is the timeout of validator api
|
|
1113
1152
|
const cpState = await waitForCheckpointState({
|
|
1114
1153
|
rootHex: head.blockRoot,
|
|
1115
|
-
epoch,
|
|
1154
|
+
epoch: nextEpoch,
|
|
1116
1155
|
});
|
|
1117
1156
|
if (cpState) {
|
|
1118
1157
|
state = cpState;
|
|
@@ -1187,7 +1226,7 @@ export function getValidatorApi(
|
|
|
1187
1226
|
// It should be set to the latest block applied to `self` or the genesis block root.
|
|
1188
1227
|
const dependentRoot =
|
|
1189
1228
|
// In v2 the dependent root is different after fulu due to deterministic proposer lookahead
|
|
1190
|
-
proposerShufflingDecisionRoot(opts?.v2 ? config.getForkName(startSlot) : ForkName.phase0, state) ||
|
|
1229
|
+
proposerShufflingDecisionRoot(opts?.v2 ? config.getForkName(startSlot) : ForkName.phase0, state, epoch) ||
|
|
1191
1230
|
(await getGenesisBlockRoot(state));
|
|
1192
1231
|
|
|
1193
1232
|
return {
|
|
@@ -1263,6 +1302,55 @@ export function getValidatorApi(
|
|
|
1263
1302
|
};
|
|
1264
1303
|
},
|
|
1265
1304
|
|
|
1305
|
+
async getPtcDuties({epoch, indices}) {
|
|
1306
|
+
notWhileSyncing();
|
|
1307
|
+
|
|
1308
|
+
if (indices.length === 0) {
|
|
1309
|
+
throw new ApiError(400, "No validator to get PTC duties");
|
|
1310
|
+
}
|
|
1311
|
+
|
|
1312
|
+
const startSlot = computeStartSlotAtEpoch(epoch);
|
|
1313
|
+
const fork = config.getForkName(startSlot);
|
|
1314
|
+
if (!isForkPostGloas(fork)) {
|
|
1315
|
+
throw new ApiError(400, `PTC duties are not supported before Gloas fork=${fork}`);
|
|
1316
|
+
}
|
|
1317
|
+
|
|
1318
|
+
await waitForNextClosestEpoch();
|
|
1319
|
+
|
|
1320
|
+
if (epoch > chain.clock.currentEpoch + 1) {
|
|
1321
|
+
throw new ApiError(400, "Cannot get PTC duties for epoch more than one ahead");
|
|
1322
|
+
}
|
|
1323
|
+
|
|
1324
|
+
const head = chain.forkChoice.getHead();
|
|
1325
|
+
const state = await chain.getHeadStateAtCurrentEpoch(RegenCaller.getDuties);
|
|
1326
|
+
if (!isStatePostGloas(state)) {
|
|
1327
|
+
throw new ApiError(400, `PTC duties are not available before Gloas fork=${state.forkName}`);
|
|
1328
|
+
}
|
|
1329
|
+
|
|
1330
|
+
const pubkeys = getPubkeysForIndices(state, indices);
|
|
1331
|
+
const ptcs = state.getEpochPTCs(epoch);
|
|
1332
|
+
const duties: routes.validator.PtcDuty[] = [];
|
|
1333
|
+
for (let i = 0, len = indices.length; i < len; i++) {
|
|
1334
|
+
const validatorIndex = indices[i];
|
|
1335
|
+
for (let j = 0; j < SLOTS_PER_EPOCH; j++) {
|
|
1336
|
+
if (ptcs[j].indexOf(validatorIndex) !== -1) {
|
|
1337
|
+
duties.push({pubkey: pubkeys[i], validatorIndex, slot: j + startSlot});
|
|
1338
|
+
break;
|
|
1339
|
+
}
|
|
1340
|
+
}
|
|
1341
|
+
}
|
|
1342
|
+
|
|
1343
|
+
const dependentRoot = fromHex(state.getShufflingDecisionRoot(epoch)) || (await getGenesisBlockRoot(state));
|
|
1344
|
+
|
|
1345
|
+
return {
|
|
1346
|
+
data: duties,
|
|
1347
|
+
meta: {
|
|
1348
|
+
dependentRoot: toRootHex(dependentRoot),
|
|
1349
|
+
executionOptimistic: isOptimisticBlock(head),
|
|
1350
|
+
},
|
|
1351
|
+
};
|
|
1352
|
+
},
|
|
1353
|
+
|
|
1266
1354
|
/**
|
|
1267
1355
|
* `POST /eth/v1/validator/duties/sync/{epoch}`
|
|
1268
1356
|
*
|
|
@@ -1641,17 +1729,14 @@ export function getValidatorApi(
|
|
|
1641
1729
|
throw Error("Cached block production result is not full block");
|
|
1642
1730
|
}
|
|
1643
1731
|
|
|
1644
|
-
const {executionPayload, executionRequests} = produceResult as ProduceFullGloas;
|
|
1732
|
+
const {executionPayload, executionRequests, parentBlockRoot} = produceResult as ProduceFullGloas;
|
|
1645
1733
|
|
|
1646
1734
|
const envelope: gloas.ExecutionPayloadEnvelope = {
|
|
1647
1735
|
payload: executionPayload,
|
|
1648
1736
|
executionRequests: executionRequests,
|
|
1649
1737
|
builderIndex: BUILDER_INDEX_SELF_BUILD,
|
|
1650
1738
|
beaconBlockRoot,
|
|
1651
|
-
|
|
1652
|
-
// TODO GLOAS: stateRoot is no longer computed during block production.
|
|
1653
|
-
// This field will be removed when we implement defer payload processing
|
|
1654
|
-
stateRoot: ZERO_HASH,
|
|
1739
|
+
parentBeaconBlockRoot: parentBlockRoot,
|
|
1655
1740
|
};
|
|
1656
1741
|
|
|
1657
1742
|
logger.info("Produced execution payload envelope", {
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import {CheckpointWithHex} from "@lodestar/fork-choice";
|
|
2
2
|
import {LoggerNode} from "@lodestar/logger/node";
|
|
3
3
|
import {Checkpoint} from "@lodestar/types/phase0";
|
|
4
4
|
import {callFnWhenAwait} from "@lodestar/utils";
|
|
@@ -41,7 +41,7 @@ export enum ArchiveStoreTask {
|
|
|
41
41
|
*/
|
|
42
42
|
export class ArchiveStore {
|
|
43
43
|
private archiveMode: ArchiveMode;
|
|
44
|
-
private jobQueue: JobItemQueue<[
|
|
44
|
+
private jobQueue: JobItemQueue<[CheckpointWithHex], void>;
|
|
45
45
|
|
|
46
46
|
private archiveDataEpochs?: number;
|
|
47
47
|
private readonly statesArchiverStrategy: StateArchiveStrategy;
|
|
@@ -64,7 +64,7 @@ export class ArchiveStore {
|
|
|
64
64
|
this.archiveMode = opts.archiveMode;
|
|
65
65
|
this.archiveDataEpochs = opts.archiveDataEpochs;
|
|
66
66
|
|
|
67
|
-
this.jobQueue = new JobItemQueue<[
|
|
67
|
+
this.jobQueue = new JobItemQueue<[CheckpointWithHex], void>(this.processFinalizedCheckpoint, {
|
|
68
68
|
maxLength: PROCESS_FINALIZED_CHECKPOINT_QUEUE_LENGTH,
|
|
69
69
|
signal,
|
|
70
70
|
});
|
|
@@ -166,7 +166,7 @@ export class ArchiveStore {
|
|
|
166
166
|
//-------------------------------------------------------------------------
|
|
167
167
|
// Event handlers
|
|
168
168
|
//-------------------------------------------------------------------------
|
|
169
|
-
private onFinalizedCheckpoint = (finalized:
|
|
169
|
+
private onFinalizedCheckpoint = (finalized: CheckpointWithHex): void => {
|
|
170
170
|
this.jobQueue.push(finalized).catch((e) => {
|
|
171
171
|
if (!isQueueErrorAborted(e)) {
|
|
172
172
|
this.logger.error("Error queuing finalized checkpoint", {epoch: finalized.epoch}, e as Error);
|
|
@@ -187,7 +187,7 @@ export class ArchiveStore {
|
|
|
187
187
|
});
|
|
188
188
|
};
|
|
189
189
|
|
|
190
|
-
private processFinalizedCheckpoint = async (finalized:
|
|
190
|
+
private processFinalizedCheckpoint = async (finalized: CheckpointWithHex): Promise<void> => {
|
|
191
191
|
try {
|
|
192
192
|
const finalizedEpoch = finalized.epoch;
|
|
193
193
|
this.logger.verbose("Start processing finalized checkpoint", {epoch: finalizedEpoch, rootHex: finalized.rootHex});
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import {CheckpointWithHex} from "@lodestar/fork-choice";
|
|
2
2
|
import {RootHex} from "@lodestar/types";
|
|
3
3
|
import {Metrics} from "../../metrics/metrics.js";
|
|
4
4
|
|
|
@@ -45,9 +45,9 @@ export type FinalizedStats = {
|
|
|
45
45
|
|
|
46
46
|
export interface StateArchiveStrategy {
|
|
47
47
|
onCheckpoint(stateRoot: RootHex, metrics?: Metrics | null): Promise<void>;
|
|
48
|
-
onFinalizedCheckpoint(finalized:
|
|
49
|
-
maybeArchiveState(finalized:
|
|
50
|
-
archiveState(finalized:
|
|
48
|
+
onFinalizedCheckpoint(finalized: CheckpointWithHex, metrics?: Metrics | null): Promise<void>;
|
|
49
|
+
maybeArchiveState(finalized: CheckpointWithHex, metrics?: Metrics | null): Promise<void>;
|
|
50
|
+
archiveState(finalized: CheckpointWithHex, metrics?: Metrics | null): Promise<void>;
|
|
51
51
|
}
|
|
52
52
|
|
|
53
53
|
export interface IArchiveStore {
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import {CheckpointWithHex} from "@lodestar/fork-choice";
|
|
2
2
|
import {SLOTS_PER_EPOCH} from "@lodestar/params";
|
|
3
3
|
import {computeEpochAtSlot, computeStartSlotAtEpoch} from "@lodestar/state-transition";
|
|
4
4
|
import {Epoch, RootHex, Slot} from "@lodestar/types";
|
|
@@ -40,7 +40,7 @@ export class FrequencyStateArchiveStrategy implements StateArchiveStrategy {
|
|
|
40
40
|
private readonly bufferPool?: BufferPool | null
|
|
41
41
|
) {}
|
|
42
42
|
|
|
43
|
-
async onFinalizedCheckpoint(_finalized:
|
|
43
|
+
async onFinalizedCheckpoint(_finalized: CheckpointWithHex, _metrics?: Metrics | null): Promise<void> {}
|
|
44
44
|
async onCheckpoint(_stateRoot: RootHex, _metrics?: Metrics | null): Promise<void> {}
|
|
45
45
|
|
|
46
46
|
/**
|
|
@@ -55,7 +55,7 @@ export class FrequencyStateArchiveStrategy implements StateArchiveStrategy {
|
|
|
55
55
|
* epoch - 1024*2 epoch - 1024 epoch - 32 epoch
|
|
56
56
|
* ```
|
|
57
57
|
*/
|
|
58
|
-
async maybeArchiveState(finalized:
|
|
58
|
+
async maybeArchiveState(finalized: CheckpointWithHex, metrics?: Metrics | null): Promise<void> {
|
|
59
59
|
let timer = metrics?.processFinalizedCheckpoint.frequencyStateArchive.startTimer();
|
|
60
60
|
const lastStoredSlot = await this.db.stateArchive.lastKey();
|
|
61
61
|
timer?.({step: FrequencyStateArchiveStep.LoadLastStoredSlot});
|
|
@@ -104,7 +104,7 @@ export class FrequencyStateArchiveStrategy implements StateArchiveStrategy {
|
|
|
104
104
|
* Archives finalized states from active bucket to archive bucket.
|
|
105
105
|
* Only the new finalized state is stored to disk
|
|
106
106
|
*/
|
|
107
|
-
async archiveState(finalized:
|
|
107
|
+
async archiveState(finalized: CheckpointWithHex, metrics?: Metrics | null): Promise<void> {
|
|
108
108
|
// starting from Mar 2024, the finalized state could be from disk or in memory
|
|
109
109
|
let timer = metrics?.processFinalizedCheckpoint.frequencyStateArchive.startTimer();
|
|
110
110
|
const finalizedHex = {epoch: finalized.epoch, rootHex: finalized.rootHex};
|