@lodestar/beacon-node 1.50.1 → 1.51.0-dev.0586e6e617
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/api.js +1 -1
- package/lib/api/impl/api.js.map +1 -1
- package/lib/api/impl/beacon/blocks/index.d.ts +2 -1
- package/lib/api/impl/beacon/blocks/index.d.ts.map +1 -1
- package/lib/api/impl/beacon/blocks/index.js +36 -36
- package/lib/api/impl/beacon/blocks/index.js.map +1 -1
- package/lib/api/impl/beacon/index.d.ts +2 -1
- package/lib/api/impl/beacon/index.d.ts.map +1 -1
- package/lib/api/impl/beacon/index.js +2 -2
- package/lib/api/impl/beacon/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 +5 -2
- package/lib/api/impl/beacon/pool/index.js.map +1 -1
- package/lib/api/impl/beacon/state/index.d.ts.map +1 -1
- package/lib/api/impl/beacon/state/index.js +8 -2
- package/lib/api/impl/beacon/state/index.js.map +1 -1
- package/lib/api/impl/beacon/state/utils.d.ts +3 -2
- package/lib/api/impl/beacon/state/utils.d.ts.map +1 -1
- package/lib/api/impl/beacon/state/utils.js +17 -9
- 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 +3 -0
- package/lib/api/impl/debug/index.js.map +1 -1
- package/lib/api/impl/validator/index.d.ts.map +1 -1
- package/lib/api/impl/validator/index.js +136 -27
- package/lib/api/impl/validator/index.js.map +1 -1
- package/lib/api/options.d.ts +2 -0
- package/lib/api/options.d.ts.map +1 -1
- package/lib/api/options.js +1 -0
- package/lib/api/options.js.map +1 -1
- package/lib/chain/ColumnReconstructionTracker.d.ts +11 -13
- package/lib/chain/ColumnReconstructionTracker.d.ts.map +1 -1
- package/lib/chain/ColumnReconstructionTracker.js +49 -44
- package/lib/chain/ColumnReconstructionTracker.js.map +1 -1
- package/lib/chain/GetBlobsTracker.d.ts +11 -0
- package/lib/chain/GetBlobsTracker.d.ts.map +1 -1
- package/lib/chain/GetBlobsTracker.js +85 -27
- package/lib/chain/GetBlobsTracker.js.map +1 -1
- package/lib/chain/archiveStore/archiveStore.d.ts.map +1 -1
- package/lib/chain/archiveStore/archiveStore.js +1 -0
- package/lib/chain/archiveStore/archiveStore.js.map +1 -1
- package/lib/chain/archiveStore/utils/archiveBlocks.d.ts +4 -0
- package/lib/chain/archiveStore/utils/archiveBlocks.d.ts.map +1 -1
- package/lib/chain/archiveStore/utils/archiveBlocks.js +63 -100
- package/lib/chain/archiveStore/utils/archiveBlocks.js.map +1 -1
- package/lib/chain/blocks/blockInput/blockInput.d.ts +1 -1
- package/lib/chain/blocks/blockInput/blockInput.d.ts.map +1 -1
- package/lib/chain/blocks/blockInput/blockInput.js.map +1 -1
- package/lib/chain/blocks/blockInput/utils.js +2 -2
- package/lib/chain/blocks/blockInput/utils.js.map +1 -1
- package/lib/chain/blocks/importBlock.d.ts.map +1 -1
- package/lib/chain/blocks/importBlock.js +16 -11
- package/lib/chain/blocks/importBlock.js.map +1 -1
- package/lib/chain/blocks/importExecutionPayload.d.ts +6 -11
- package/lib/chain/blocks/importExecutionPayload.d.ts.map +1 -1
- package/lib/chain/blocks/importExecutionPayload.js +58 -17
- package/lib/chain/blocks/importExecutionPayload.js.map +1 -1
- package/lib/chain/blocks/index.js +2 -2
- package/lib/chain/blocks/index.js.map +1 -1
- package/lib/chain/blocks/payloadEnvelopeProcessor.d.ts +12 -9
- package/lib/chain/blocks/payloadEnvelopeProcessor.d.ts.map +1 -1
- package/lib/chain/blocks/payloadEnvelopeProcessor.js +24 -19
- package/lib/chain/blocks/payloadEnvelopeProcessor.js.map +1 -1
- package/lib/chain/blocks/types.d.ts +4 -0
- package/lib/chain/blocks/types.d.ts.map +1 -1
- package/lib/chain/blocks/types.js +5 -0
- package/lib/chain/blocks/types.js.map +1 -1
- package/lib/chain/blocks/verifyBlock.d.ts.map +1 -1
- package/lib/chain/blocks/verifyBlock.js +1 -1
- package/lib/chain/blocks/verifyBlock.js.map +1 -1
- package/lib/chain/blocks/verifyBlocksDataAvailability.d.ts.map +1 -1
- package/lib/chain/blocks/verifyBlocksDataAvailability.js +8 -1
- package/lib/chain/blocks/verifyBlocksDataAvailability.js.map +1 -1
- package/lib/chain/blocks/verifyPayloadsDataAvailability.d.ts +3 -3
- package/lib/chain/blocks/verifyPayloadsDataAvailability.d.ts.map +1 -1
- package/lib/chain/blocks/verifyPayloadsDataAvailability.js +11 -6
- package/lib/chain/blocks/verifyPayloadsDataAvailability.js.map +1 -1
- package/lib/chain/bls/multithread/index.js +5 -5
- package/lib/chain/bls/multithread/index.js.map +1 -1
- package/lib/chain/bls/multithread/types.d.ts +1 -1
- package/lib/chain/bls/multithread/types.d.ts.map +1 -1
- package/lib/chain/bls/multithread/worker.js +1 -1
- package/lib/chain/bls/multithread/worker.js.map +1 -1
- package/lib/chain/bls/singleThread.js +1 -1
- package/lib/chain/bls/singleThread.js.map +1 -1
- package/lib/chain/bls/utils.js +1 -1
- package/lib/chain/bls/utils.js.map +1 -1
- package/lib/chain/chain.d.ts +3 -2
- package/lib/chain/chain.d.ts.map +1 -1
- package/lib/chain/chain.js +12 -7
- package/lib/chain/chain.js.map +1 -1
- package/lib/chain/errors/blockError.d.ts +1 -1
- package/lib/chain/errors/blockError.d.ts.map +1 -1
- package/lib/chain/errors/blockError.js +1 -1
- package/lib/chain/errors/blockError.js.map +1 -1
- package/lib/chain/errors/executionPayloadBid.d.ts +11 -1
- package/lib/chain/errors/executionPayloadBid.d.ts.map +1 -1
- package/lib/chain/errors/executionPayloadBid.js +2 -0
- package/lib/chain/errors/executionPayloadBid.js.map +1 -1
- package/lib/chain/errors/inclusionList.d.ts +60 -0
- package/lib/chain/errors/inclusionList.d.ts.map +1 -0
- package/lib/chain/errors/inclusionList.js +19 -0
- package/lib/chain/errors/inclusionList.js.map +1 -0
- 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/interface.d.ts +5 -5
- package/lib/chain/interface.d.ts.map +1 -1
- package/lib/chain/interface.js.map +1 -1
- package/lib/chain/opPools/aggregatedAttestationPool.d.ts.map +1 -1
- package/lib/chain/opPools/aggregatedAttestationPool.js +23 -10
- package/lib/chain/opPools/aggregatedAttestationPool.js.map +1 -1
- package/lib/chain/opPools/attestationPool.d.ts +1 -1
- package/lib/chain/opPools/attestationPool.d.ts.map +1 -1
- package/lib/chain/opPools/attestationPool.js +15 -4
- package/lib/chain/opPools/attestationPool.js.map +1 -1
- package/lib/chain/opPools/inclusionListStore.d.ts +63 -0
- package/lib/chain/opPools/inclusionListStore.d.ts.map +1 -0
- package/lib/chain/opPools/inclusionListStore.js +171 -0
- package/lib/chain/opPools/inclusionListStore.js.map +1 -0
- 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.map +1 -1
- package/lib/chain/opPools/payloadAttestationPool.js +17 -7
- package/lib/chain/opPools/payloadAttestationPool.js.map +1 -1
- package/lib/chain/opPools/syncCommitteeMessagePool.d.ts.map +1 -1
- package/lib/chain/opPools/syncCommitteeMessagePool.js +9 -3
- package/lib/chain/opPools/syncCommitteeMessagePool.js.map +1 -1
- package/lib/chain/opPools/syncContributionAndProofPool.d.ts.map +1 -1
- package/lib/chain/opPools/syncContributionAndProofPool.js +11 -3
- package/lib/chain/opPools/syncContributionAndProofPool.js.map +1 -1
- package/lib/chain/opPools/utils.d.ts +1 -1
- package/lib/chain/opPools/utils.d.ts.map +1 -1
- package/lib/chain/opPools/utils.js +1 -1
- package/lib/chain/opPools/utils.js.map +1 -1
- package/lib/chain/options.d.ts +0 -1
- package/lib/chain/options.d.ts.map +1 -1
- package/lib/chain/options.js +0 -1
- package/lib/chain/options.js.map +1 -1
- package/lib/chain/prepareNextSlot.d.ts.map +1 -1
- package/lib/chain/prepareNextSlot.js +4 -3
- package/lib/chain/prepareNextSlot.js.map +1 -1
- package/lib/chain/produceBlock/computeNewStateRoot.d.ts.map +1 -1
- package/lib/chain/produceBlock/computeNewStateRoot.js.map +1 -1
- package/lib/chain/produceBlock/produceBlockBody.d.ts +3 -1
- package/lib/chain/produceBlock/produceBlockBody.d.ts.map +1 -1
- package/lib/chain/produceBlock/produceBlockBody.js +37 -15
- package/lib/chain/produceBlock/produceBlockBody.js.map +1 -1
- package/lib/chain/regen/interface.d.ts +1 -1
- package/lib/chain/regen/interface.d.ts.map +1 -1
- package/lib/chain/regen/interface.js +1 -1
- package/lib/chain/regen/interface.js.map +1 -1
- package/lib/chain/reprocess.d.ts +2 -1
- package/lib/chain/reprocess.d.ts.map +1 -1
- package/lib/chain/reprocess.js +2 -1
- package/lib/chain/reprocess.js.map +1 -1
- package/lib/chain/seenCache/seenGossipBlockInput.d.ts.map +1 -1
- package/lib/chain/seenCache/seenGossipBlockInput.js +1 -1
- package/lib/chain/seenCache/seenGossipBlockInput.js.map +1 -1
- package/lib/chain/stateCache/persistentCheckpointsCache.d.ts.map +1 -1
- package/lib/chain/stateCache/persistentCheckpointsCache.js +1 -1
- package/lib/chain/stateCache/persistentCheckpointsCache.js.map +1 -1
- package/lib/chain/validation/executionPayloadBid.d.ts +0 -15
- package/lib/chain/validation/executionPayloadBid.d.ts.map +1 -1
- package/lib/chain/validation/executionPayloadBid.js +37 -158
- package/lib/chain/validation/executionPayloadBid.js.map +1 -1
- package/lib/chain/validation/inclusionList.d.ts +14 -0
- package/lib/chain/validation/inclusionList.d.ts.map +1 -0
- package/lib/chain/validation/inclusionList.js +150 -0
- package/lib/chain/validation/inclusionList.js.map +1 -0
- package/lib/chain/validation/index.d.ts +1 -0
- package/lib/chain/validation/index.d.ts.map +1 -1
- package/lib/chain/validation/index.js +1 -0
- package/lib/chain/validation/index.js.map +1 -1
- package/lib/chain/validatorMonitor.d.ts.map +1 -1
- package/lib/chain/validatorMonitor.js +6 -4
- package/lib/chain/validatorMonitor.js.map +1 -1
- package/lib/constants/constants.d.ts +1 -0
- package/lib/constants/constants.d.ts.map +1 -1
- package/lib/constants/constants.js +1 -0
- package/lib/constants/constants.js.map +1 -1
- package/lib/db/beacon.d.ts +7 -0
- package/lib/db/beacon.d.ts.map +1 -1
- package/lib/db/beacon.js +34 -0
- package/lib/db/beacon.js.map +1 -1
- package/lib/db/dataColumnStore.d.ts +1 -1
- package/lib/db/dataColumnStore.d.ts.map +1 -1
- package/lib/db/dataColumnStore.js +1 -4
- package/lib/db/dataColumnStore.js.map +1 -1
- package/lib/db/flatFileStore/flatFileStore.js +5 -5
- package/lib/db/flatFileStore/flatFileStore.js.map +1 -1
- package/lib/db/flatFileStore/slotIndex.d.ts.map +1 -1
- package/lib/db/flatFileStore/slotIndex.js +2 -2
- package/lib/db/flatFileStore/slotIndex.js.map +1 -1
- package/lib/db/interface.d.ts +1 -0
- package/lib/db/interface.d.ts.map +1 -1
- package/lib/db/repositories/blockArchive.js +2 -2
- package/lib/db/repositories/blockArchive.js.map +1 -1
- package/lib/db/repositories/blockArchiveIndex.d.ts +1 -1
- package/lib/db/repositories/blockArchiveIndex.d.ts.map +1 -1
- package/lib/db/repositories/blockArchiveIndex.js +1 -2
- package/lib/db/repositories/blockArchiveIndex.js.map +1 -1
- package/lib/db/repositories/dataColumnSidecarArchive.d.ts +6 -0
- package/lib/db/repositories/dataColumnSidecarArchive.d.ts.map +1 -1
- package/lib/db/repositories/dataColumnSidecarArchive.js +19 -0
- package/lib/db/repositories/dataColumnSidecarArchive.js.map +1 -1
- package/lib/execution/builder/validateBid.d.ts.map +1 -1
- package/lib/execution/builder/validateBid.js +14 -1
- package/lib/execution/builder/validateBid.js.map +1 -1
- package/lib/execution/engine/blobVersionedHashes.d.ts +1 -1
- package/lib/execution/engine/blobVersionedHashes.d.ts.map +1 -1
- package/lib/execution/engine/blobVersionedHashes.js.map +1 -1
- package/lib/execution/engine/disabled.d.ts +1 -0
- package/lib/execution/engine/disabled.d.ts.map +1 -1
- package/lib/execution/engine/disabled.js +3 -0
- package/lib/execution/engine/disabled.js.map +1 -1
- package/lib/execution/engine/http.d.ts +8 -2
- package/lib/execution/engine/http.d.ts.map +1 -1
- package/lib/execution/engine/http.js +27 -4
- package/lib/execution/engine/http.js.map +1 -1
- package/lib/execution/engine/index.d.ts +1 -1
- package/lib/execution/engine/index.d.ts.map +1 -1
- package/lib/execution/engine/index.js +2 -2
- package/lib/execution/engine/index.js.map +1 -1
- package/lib/execution/engine/interface.d.ts +12 -3
- package/lib/execution/engine/interface.d.ts.map +1 -1
- package/lib/execution/engine/interface.js.map +1 -1
- package/lib/execution/engine/jsonRpcHttpClient.d.ts.map +1 -1
- package/lib/execution/engine/jsonRpcHttpClient.js +14 -4
- package/lib/execution/engine/jsonRpcHttpClient.js.map +1 -1
- package/lib/execution/engine/jsonRpcTransport.d.ts +3 -2
- package/lib/execution/engine/jsonRpcTransport.d.ts.map +1 -1
- package/lib/execution/engine/jsonRpcTransport.js +33 -9
- package/lib/execution/engine/jsonRpcTransport.js.map +1 -1
- package/lib/execution/engine/mock.d.ts +1 -0
- package/lib/execution/engine/mock.d.ts.map +1 -1
- package/lib/execution/engine/mock.js +31 -7
- package/lib/execution/engine/mock.js.map +1 -1
- package/lib/execution/engine/payloadIdCache.d.ts +5 -3
- package/lib/execution/engine/payloadIdCache.d.ts.map +1 -1
- package/lib/execution/engine/payloadIdCache.js +15 -4
- package/lib/execution/engine/payloadIdCache.js.map +1 -1
- package/lib/execution/engine/restTransport.d.ts +5 -2
- package/lib/execution/engine/restTransport.d.ts.map +1 -1
- package/lib/execution/engine/restTransport.js +36 -21
- package/lib/execution/engine/restTransport.js.map +1 -1
- package/lib/execution/engine/sszTypes.d.ts +38 -38
- package/lib/execution/engine/transport.d.ts +5 -2
- package/lib/execution/engine/transport.d.ts.map +1 -1
- package/lib/execution/engine/transportMetrics.d.ts +5 -1
- package/lib/execution/engine/transportMetrics.d.ts.map +1 -1
- package/lib/execution/engine/types.d.ts +25 -1
- package/lib/execution/engine/types.d.ts.map +1 -1
- package/lib/execution/engine/types.js +31 -17
- package/lib/execution/engine/types.js.map +1 -1
- package/lib/index.d.ts +1 -0
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +2 -0
- package/lib/index.js.map +1 -1
- package/lib/metrics/metrics/beacon.d.ts +16 -0
- package/lib/metrics/metrics/beacon.d.ts.map +1 -1
- package/lib/metrics/metrics/beacon.js +35 -0
- package/lib/metrics/metrics/beacon.js.map +1 -1
- package/lib/metrics/metrics/lodestar.d.ts +26 -0
- package/lib/metrics/metrics/lodestar.d.ts.map +1 -1
- package/lib/metrics/metrics/lodestar.js +61 -1
- package/lib/metrics/metrics/lodestar.js.map +1 -1
- package/lib/monitoring/service.js +1 -1
- package/lib/monitoring/service.js.map +1 -1
- package/lib/network/core/networkCore.d.ts +2 -0
- package/lib/network/core/networkCore.d.ts.map +1 -1
- package/lib/network/core/networkCore.js +3 -0
- package/lib/network/core/networkCore.js.map +1 -1
- package/lib/network/core/networkCoreWorker.js +1 -0
- package/lib/network/core/networkCoreWorker.js.map +1 -1
- package/lib/network/core/networkCoreWorkerHandler.d.ts +2 -0
- package/lib/network/core/networkCoreWorkerHandler.d.ts.map +1 -1
- package/lib/network/core/networkCoreWorkerHandler.js +3 -0
- package/lib/network/core/networkCoreWorkerHandler.js.map +1 -1
- package/lib/network/core/types.d.ts +2 -0
- package/lib/network/core/types.d.ts.map +1 -1
- package/lib/network/gossip/gossipsub.d.ts.map +1 -1
- package/lib/network/gossip/gossipsub.js +3 -1
- package/lib/network/gossip/gossipsub.js.map +1 -1
- package/lib/network/gossip/interface.d.ts +8 -2
- 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/topic.d.ts +13 -19
- package/lib/network/gossip/topic.d.ts.map +1 -1
- package/lib/network/gossip/topic.js +13 -1
- package/lib/network/gossip/topic.js.map +1 -1
- package/lib/network/interface.d.ts +4 -1
- package/lib/network/interface.d.ts.map +1 -1
- package/lib/network/network.d.ts +4 -1
- package/lib/network/network.d.ts.map +1 -1
- package/lib/network/network.js +11 -1
- package/lib/network/network.js.map +1 -1
- package/lib/network/peers/peerManager.d.ts +2 -1
- package/lib/network/peers/peerManager.d.ts.map +1 -1
- package/lib/network/peers/peerManager.js.map +1 -1
- package/lib/network/peers/utils/assertPeerRelevance.d.ts +9 -1
- package/lib/network/peers/utils/assertPeerRelevance.d.ts.map +1 -1
- package/lib/network/peers/utils/assertPeerRelevance.js +32 -21
- package/lib/network/peers/utils/assertPeerRelevance.js.map +1 -1
- package/lib/network/peers/utils/enrSubnetsDeserialize.d.ts.map +1 -1
- package/lib/network/peers/utils/enrSubnetsDeserialize.js +5 -2
- package/lib/network/peers/utils/enrSubnetsDeserialize.js.map +1 -1
- package/lib/network/processor/gossipHandlers.d.ts.map +1 -1
- package/lib/network/processor/gossipHandlers.js +76 -27
- 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 +6 -0
- package/lib/network/processor/gossipQueues/index.js.map +1 -1
- package/lib/network/processor/gossipValidatorFn.d.ts.map +1 -1
- package/lib/network/processor/gossipValidatorFn.js +5 -1
- package/lib/network/processor/gossipValidatorFn.js.map +1 -1
- package/lib/network/processor/index.d.ts +5 -0
- package/lib/network/processor/index.d.ts.map +1 -1
- package/lib/network/processor/index.js +40 -29
- 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 +6 -0
- package/lib/network/reqresp/ReqRespBeaconNode.js.map +1 -1
- package/lib/network/reqresp/handlers/dataColumnSidecarsByRange.d.ts.map +1 -1
- package/lib/network/reqresp/handlers/dataColumnSidecarsByRange.js +4 -4
- package/lib/network/reqresp/handlers/dataColumnSidecarsByRange.js.map +1 -1
- package/lib/network/reqresp/handlers/dataColumnSidecarsByRoot.js +3 -3
- package/lib/network/reqresp/handlers/dataColumnSidecarsByRoot.js.map +1 -1
- package/lib/network/reqresp/handlers/inclusionListsByIndices.d.ts +10 -0
- package/lib/network/reqresp/handlers/inclusionListsByIndices.d.ts.map +1 -0
- package/lib/network/reqresp/handlers/inclusionListsByIndices.js +30 -0
- package/lib/network/reqresp/handlers/inclusionListsByIndices.js.map +1 -0
- 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/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 +6 -2
- package/lib/network/reqresp/rateLimit.js.map +1 -1
- package/lib/network/reqresp/types.d.ts +5 -2
- 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/network/subnets/attnetsService.d.ts.map +1 -1
- package/lib/network/subnets/attnetsService.js +3 -1
- package/lib/network/subnets/attnetsService.js.map +1 -1
- package/lib/node/nodejs.d.ts +1 -1
- package/lib/node/nodejs.d.ts.map +1 -1
- package/lib/node/nodejs.js +10 -2
- package/lib/node/nodejs.js.map +1 -1
- package/lib/node/notifier.d.ts.map +1 -1
- package/lib/node/notifier.js +12 -13
- package/lib/node/notifier.js.map +1 -1
- package/lib/node/options.d.ts +1 -1
- package/lib/node/options.d.ts.map +1 -1
- package/lib/node/options.js +1 -1
- package/lib/node/options.js.map +1 -1
- package/lib/sync/interface.d.ts.map +1 -1
- package/lib/sync/interface.js.map +1 -1
- package/lib/sync/sync.d.ts +7 -0
- package/lib/sync/sync.d.ts.map +1 -1
- package/lib/sync/sync.js +61 -3
- package/lib/sync/sync.js.map +1 -1
- package/lib/sync/unknownBlock.d.ts.map +1 -1
- package/lib/sync/unknownBlock.js +45 -20
- package/lib/sync/unknownBlock.js.map +1 -1
- package/lib/util/clock.d.ts.map +1 -1
- package/lib/util/clock.js +3 -4
- package/lib/util/clock.js.map +1 -1
- package/lib/util/file.d.ts.map +1 -1
- package/lib/util/file.js +8 -9
- package/lib/util/file.js.map +1 -1
- package/lib/util/queue/itemQueue.js +1 -1
- package/lib/util/queue/itemQueue.js.map +1 -1
- package/lib/util/sszBytes.d.ts +2 -2
- package/lib/util/sszBytes.d.ts.map +1 -1
- package/lib/util/sszBytes.js +24 -16
- package/lib/util/sszBytes.js.map +1 -1
- package/package.json +31 -32
- package/src/api/impl/api.ts +1 -1
- package/src/api/impl/beacon/blocks/index.ts +67 -65
- package/src/api/impl/beacon/index.ts +3 -1
- package/src/api/impl/beacon/pool/index.ts +5 -1
- package/src/api/impl/beacon/state/index.ts +10 -1
- package/src/api/impl/beacon/state/utils.ts +20 -10
- package/src/api/impl/debug/index.ts +4 -0
- package/src/api/impl/validator/index.ts +176 -29
- package/src/api/options.ts +3 -0
- package/src/chain/ColumnReconstructionTracker.ts +63 -46
- package/src/chain/GetBlobsTracker.ts +97 -38
- package/src/chain/archiveStore/archiveStore.ts +1 -0
- package/src/chain/archiveStore/utils/archiveBlocks.ts +78 -133
- package/src/chain/blocks/blockInput/blockInput.ts +1 -1
- package/src/chain/blocks/blockInput/utils.ts +2 -2
- package/src/chain/blocks/importBlock.ts +19 -18
- package/src/chain/blocks/importExecutionPayload.ts +81 -23
- package/src/chain/blocks/index.ts +6 -2
- package/src/chain/blocks/payloadEnvelopeProcessor.ts +35 -24
- package/src/chain/blocks/types.ts +5 -0
- package/src/chain/blocks/verifyBlock.ts +1 -0
- package/src/chain/blocks/verifyBlocksDataAvailability.ts +10 -1
- package/src/chain/blocks/verifyPayloadsDataAvailability.ts +14 -6
- package/src/chain/bls/multithread/index.ts +5 -5
- package/src/chain/bls/multithread/types.ts +1 -1
- package/src/chain/bls/multithread/worker.ts +1 -5
- package/src/chain/bls/singleThread.ts +1 -1
- package/src/chain/bls/utils.ts +1 -1
- package/src/chain/chain.ts +13 -7
- package/src/chain/errors/blockError.ts +1 -1
- package/src/chain/errors/executionPayloadBid.ts +12 -0
- package/src/chain/errors/inclusionList.ts +38 -0
- package/src/chain/errors/index.ts +1 -0
- package/src/chain/interface.ts +6 -4
- package/src/chain/opPools/aggregatedAttestationPool.ts +25 -9
- package/src/chain/opPools/attestationPool.ts +16 -4
- package/src/chain/opPools/inclusionListStore.ts +208 -0
- package/src/chain/opPools/index.ts +1 -0
- package/src/chain/opPools/payloadAttestationPool.ts +18 -7
- package/src/chain/opPools/syncCommitteeMessagePool.ts +10 -3
- package/src/chain/opPools/syncContributionAndProofPool.ts +13 -3
- package/src/chain/opPools/utils.ts +1 -1
- package/src/chain/options.ts +0 -2
- package/src/chain/prepareNextSlot.ts +7 -3
- package/src/chain/produceBlock/computeNewStateRoot.ts +9 -2
- package/src/chain/produceBlock/produceBlockBody.ts +70 -24
- package/src/chain/regen/interface.ts +1 -1
- package/src/chain/reprocess.ts +2 -1
- package/src/chain/seenCache/seenGossipBlockInput.ts +2 -1
- package/src/chain/stateCache/persistentCheckpointsCache.ts +4 -1
- package/src/chain/validation/executionPayloadBid.ts +54 -183
- package/src/chain/validation/inclusionList.ts +192 -0
- package/src/chain/validation/index.ts +1 -0
- package/src/chain/validatorMonitor.ts +7 -4
- package/src/constants/constants.ts +1 -0
- package/src/db/beacon.ts +44 -0
- package/src/db/dataColumnStore.ts +2 -4
- package/src/db/flatFileStore/flatFileStore.ts +7 -7
- package/src/db/flatFileStore/slotIndex.ts +4 -3
- package/src/db/interface.ts +2 -0
- package/src/db/repositories/blockArchive.ts +2 -2
- package/src/db/repositories/blockArchiveIndex.ts +2 -3
- package/src/db/repositories/dataColumnSidecarArchive.ts +20 -0
- package/src/execution/builder/validateBid.ts +23 -2
- package/src/execution/engine/blobVersionedHashes.ts +1 -1
- package/src/execution/engine/disabled.ts +4 -0
- package/src/execution/engine/http.ts +40 -5
- package/src/execution/engine/index.ts +3 -2
- package/src/execution/engine/interface.ts +28 -4
- package/src/execution/engine/jsonRpcHttpClient.ts +12 -5
- package/src/execution/engine/jsonRpcTransport.ts +46 -9
- package/src/execution/engine/mock.ts +32 -7
- package/src/execution/engine/payloadIdCache.ts +24 -6
- package/src/execution/engine/restTransport.ts +68 -23
- package/src/execution/engine/transport.ts +7 -2
- package/src/execution/engine/transportMetrics.ts +2 -1
- package/src/execution/engine/types.ts +56 -17
- package/src/index.ts +2 -0
- package/src/metrics/metrics/beacon.ts +37 -0
- package/src/metrics/metrics/lodestar.ts +63 -1
- package/src/monitoring/service.ts +1 -1
- package/src/network/core/networkCore.ts +5 -0
- package/src/network/core/networkCoreWorker.ts +1 -0
- package/src/network/core/networkCoreWorkerHandler.ts +4 -0
- package/src/network/core/types.ts +2 -0
- package/src/network/gossip/gossipsub.ts +3 -1
- package/src/network/gossip/interface.ts +5 -0
- package/src/network/gossip/topic.ts +14 -0
- package/src/network/interface.ts +4 -0
- package/src/network/network.ts +19 -1
- package/src/network/peers/peerManager.ts +1 -1
- package/src/network/peers/utils/assertPeerRelevance.ts +39 -23
- package/src/network/peers/utils/enrSubnetsDeserialize.ts +5 -2
- package/src/network/processor/gossipHandlers.ts +96 -29
- package/src/network/processor/gossipQueues/index.ts +6 -0
- package/src/network/processor/gossipValidatorFn.ts +5 -0
- package/src/network/processor/index.ts +36 -27
- package/src/network/processor/types.ts +1 -1
- package/src/network/reqresp/ReqRespBeaconNode.ts +7 -0
- package/src/network/reqresp/handlers/dataColumnSidecarsByRange.ts +4 -10
- package/src/network/reqresp/handlers/dataColumnSidecarsByRoot.ts +3 -3
- package/src/network/reqresp/handlers/inclusionListsByIndices.ts +44 -0
- package/src/network/reqresp/handlers/index.ts +5 -0
- package/src/network/reqresp/protocols.ts +6 -0
- package/src/network/reqresp/rateLimit.ts +6 -2
- package/src/network/reqresp/types.ts +6 -0
- package/src/network/subnets/attnetsService.ts +8 -3
- package/src/node/nodejs.ts +24 -7
- package/src/node/notifier.ts +14 -13
- package/src/node/options.ts +4 -5
- package/src/sync/interface.ts +1 -0
- package/src/sync/sync.ts +65 -4
- package/src/sync/unknownBlock.ts +50 -30
- package/src/util/clock.ts +3 -4
- package/src/util/file.ts +8 -9
- package/src/util/queue/itemQueue.ts +1 -1
- package/src/util/sszBytes.ts +27 -14
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import {SerializedList, Type} from "@chainsafe/ssz";
|
|
1
2
|
import {
|
|
2
3
|
BUILDER_DEPOSIT_REQUEST_TYPE,
|
|
3
4
|
BUILDER_EXIT_REQUEST_TYPE,
|
|
@@ -8,6 +9,7 @@ import {
|
|
|
8
9
|
DEPOSIT_REQUEST_TYPE,
|
|
9
10
|
FIELD_ELEMENTS_PER_BLOB,
|
|
10
11
|
ForkName,
|
|
12
|
+
ForkPostElectra,
|
|
11
13
|
ForkSeq,
|
|
12
14
|
WITHDRAWAL_REQUEST_TYPE,
|
|
13
15
|
} from "@lodestar/params";
|
|
@@ -22,6 +24,7 @@ import {
|
|
|
22
24
|
deneb,
|
|
23
25
|
gloas,
|
|
24
26
|
ssz,
|
|
27
|
+
sszTypesFor,
|
|
25
28
|
} from "@lodestar/types";
|
|
26
29
|
import {BlobAndProof} from "@lodestar/types/deneb";
|
|
27
30
|
import {BlobAndProofV2} from "@lodestar/types/fulu";
|
|
@@ -53,6 +56,7 @@ export type EngineApiRpcParamTypes = {
|
|
|
53
56
|
engine_newPayloadV3: [ExecutionPayloadRpc, VersionedHashesRpc, DATA];
|
|
54
57
|
engine_newPayloadV4: [ExecutionPayloadRpc, VersionedHashesRpc, DATA, ExecutionRequestsRpc];
|
|
55
58
|
engine_newPayloadV5: [ExecutionPayloadRpc, VersionedHashesRpc, DATA, ExecutionRequestsRpc];
|
|
59
|
+
engine_newPayloadV6: [ExecutionPayloadRpc, VersionedHashesRpc, DATA, ExecutionRequestsRpc, InclusionListRpc];
|
|
56
60
|
/**
|
|
57
61
|
* 1. Object - Payload validity status with respect to the consensus rules:
|
|
58
62
|
* - blockHash: DATA, 32 Bytes - block hash value of the payload
|
|
@@ -74,6 +78,10 @@ export type EngineApiRpcParamTypes = {
|
|
|
74
78
|
forkChoiceData: {headBlockHash: DATA; safeBlockHash: DATA; finalizedBlockHash: DATA},
|
|
75
79
|
payloadAttributes?: PayloadAttributesRpc,
|
|
76
80
|
];
|
|
81
|
+
engine_forkchoiceUpdatedV5: [
|
|
82
|
+
forkChoiceData: {headBlockHash: DATA; safeBlockHash: DATA; finalizedBlockHash: DATA},
|
|
83
|
+
payloadAttributes?: PayloadAttributesRpc,
|
|
84
|
+
];
|
|
77
85
|
/**
|
|
78
86
|
* 1. payloadId: QUANTITY, 64 Bits - Identifier of the payload building process
|
|
79
87
|
*/
|
|
@@ -96,12 +104,16 @@ export type EngineApiRpcParamTypes = {
|
|
|
96
104
|
|
|
97
105
|
engine_getBlobsV1: [DATA[]];
|
|
98
106
|
engine_getBlobsV2: [DATA[]];
|
|
107
|
+
|
|
108
|
+
engine_getInclusionListV1: [];
|
|
99
109
|
};
|
|
100
110
|
|
|
101
111
|
export type PayloadStatus = {
|
|
102
112
|
status: ExecutionPayloadStatus;
|
|
103
113
|
latestValidHash: DATA | null;
|
|
104
114
|
validationError: string | null;
|
|
115
|
+
/** PayloadStatusV2: whether a VALID payload satisfied the inclusion list constraints, null otherwise */
|
|
116
|
+
inclusionListSatisfied?: boolean | null;
|
|
105
117
|
};
|
|
106
118
|
|
|
107
119
|
export type EngineApiRpcReturnTypes = {
|
|
@@ -114,6 +126,7 @@ export type EngineApiRpcReturnTypes = {
|
|
|
114
126
|
engine_newPayloadV3: PayloadStatus;
|
|
115
127
|
engine_newPayloadV4: PayloadStatus;
|
|
116
128
|
engine_newPayloadV5: PayloadStatus;
|
|
129
|
+
engine_newPayloadV6: PayloadStatus;
|
|
117
130
|
engine_forkchoiceUpdatedV1: {
|
|
118
131
|
payloadStatus: PayloadStatus;
|
|
119
132
|
payloadId: QUANTITY | null;
|
|
@@ -130,6 +143,10 @@ export type EngineApiRpcReturnTypes = {
|
|
|
130
143
|
payloadStatus: PayloadStatus;
|
|
131
144
|
payloadId: QUANTITY | null;
|
|
132
145
|
};
|
|
146
|
+
engine_forkchoiceUpdatedV5: {
|
|
147
|
+
payloadStatus: PayloadStatus;
|
|
148
|
+
payloadId: QUANTITY | null;
|
|
149
|
+
};
|
|
133
150
|
/**
|
|
134
151
|
* payloadId | Error: QUANTITY, 64 Bits - Identifier of the payload building process
|
|
135
152
|
*/
|
|
@@ -146,6 +163,8 @@ export type EngineApiRpcReturnTypes = {
|
|
|
146
163
|
|
|
147
164
|
engine_getBlobsV1: (BlobAndProofRpc | null)[];
|
|
148
165
|
engine_getBlobsV2: BlobAndProofV2Rpc[] | null;
|
|
166
|
+
|
|
167
|
+
engine_getInclusionListV1: InclusionListRpc;
|
|
149
168
|
};
|
|
150
169
|
|
|
151
170
|
type ExecutionPayloadRpcWithValue = {
|
|
@@ -164,7 +183,7 @@ export type ExecutionPayloadBodyRpc = {
|
|
|
164
183
|
};
|
|
165
184
|
|
|
166
185
|
export type ExecutionPayloadBody = {
|
|
167
|
-
transactions: bellatrix.
|
|
186
|
+
transactions: bellatrix.Transactions;
|
|
168
187
|
withdrawals: capella.Withdrawals | null;
|
|
169
188
|
};
|
|
170
189
|
|
|
@@ -260,8 +279,13 @@ export type PayloadAttributesRpc = {
|
|
|
260
279
|
slotNumber?: QUANTITY;
|
|
261
280
|
/** QUANTITY, 64 Bits - target value for the gasLimit field of the new payload (GLOAS, execution-apis#796) */
|
|
262
281
|
targetGasLimit?: QUANTITY;
|
|
282
|
+
/** Array of DATA - transactions that the built payload must include (PayloadAttributesV5, HEZE) */
|
|
283
|
+
inclusionListTransactions?: InclusionListRpc;
|
|
263
284
|
};
|
|
264
285
|
|
|
286
|
+
/** Array of DATA - array of transaction objects */
|
|
287
|
+
export type InclusionListRpc = DATA[];
|
|
288
|
+
|
|
265
289
|
export type ClientVersionRpc = {
|
|
266
290
|
/** ClientCode */
|
|
267
291
|
code: string;
|
|
@@ -294,7 +318,7 @@ export function serializeExecutionPayload(fork: ForkName, data: ExecutionPayload
|
|
|
294
318
|
extraData: bytesToData(data.extraData),
|
|
295
319
|
baseFeePerGas: numToQuantity(data.baseFeePerGas),
|
|
296
320
|
blockHash: bytesToData(data.blockHash),
|
|
297
|
-
transactions: data.transactions
|
|
321
|
+
transactions: Array.from(data.transactions, (tran) => bytesToData(tran)),
|
|
298
322
|
};
|
|
299
323
|
|
|
300
324
|
// Capella adds withdrawals to the ExecutionPayload
|
|
@@ -378,7 +402,7 @@ export function parseExecutionPayload(
|
|
|
378
402
|
extraData: dataToBytes(data.extraData, null),
|
|
379
403
|
baseFeePerGas: quantityToBigint(data.baseFeePerGas),
|
|
380
404
|
blockHash: dataToBytes(data.blockHash, 32),
|
|
381
|
-
transactions: data.transactions.map((tran) => dataToBytes(tran, null)),
|
|
405
|
+
transactions: SerializedList.fromArray(data.transactions.map((tran) => dataToBytes(tran, null))),
|
|
382
406
|
};
|
|
383
407
|
|
|
384
408
|
if (ForkSeq[fork] >= ForkSeq.capella) {
|
|
@@ -441,6 +465,9 @@ export function serializePayloadAttributes(data: PayloadAttributes): PayloadAttr
|
|
|
441
465
|
parentBeaconBlockRoot: data.parentBeaconBlockRoot ? bytesToData(data.parentBeaconBlockRoot) : undefined,
|
|
442
466
|
slotNumber: data.slotNumber !== undefined ? numToQuantity(data.slotNumber) : undefined,
|
|
443
467
|
targetGasLimit: data.targetGasLimit !== undefined ? numToQuantity(data.targetGasLimit) : undefined,
|
|
468
|
+
inclusionListTransactions: data.inclusionListTransactions
|
|
469
|
+
? serializeInclusionList(data.inclusionListTransactions)
|
|
470
|
+
: undefined,
|
|
444
471
|
};
|
|
445
472
|
}
|
|
446
473
|
|
|
@@ -448,6 +475,14 @@ export function serializeBeaconBlockRoot(data: Root): DATA {
|
|
|
448
475
|
return bytesToData(data);
|
|
449
476
|
}
|
|
450
477
|
|
|
478
|
+
export function serializeInclusionList(data: bellatrix.Transactions): InclusionListRpc {
|
|
479
|
+
return Array.from(data, (transaction) => bytesToData(transaction));
|
|
480
|
+
}
|
|
481
|
+
|
|
482
|
+
export function deserializeInclusionList(data: InclusionListRpc): bellatrix.Transactions {
|
|
483
|
+
return SerializedList.fromArray(data.map((transaction) => dataToBytes(transaction, null)));
|
|
484
|
+
}
|
|
485
|
+
|
|
451
486
|
export function deserializePayloadAttributes(data: PayloadAttributesRpc): PayloadAttributes {
|
|
452
487
|
return {
|
|
453
488
|
timestamp: quantityToNum(data.timestamp),
|
|
@@ -459,6 +494,9 @@ export function deserializePayloadAttributes(data: PayloadAttributesRpc): Payloa
|
|
|
459
494
|
parentBeaconBlockRoot: data.parentBeaconBlockRoot ? dataToBytes(data.parentBeaconBlockRoot, 32) : undefined,
|
|
460
495
|
slotNumber: data.slotNumber !== undefined ? quantityToNum(data.slotNumber) : undefined,
|
|
461
496
|
targetGasLimit: data.targetGasLimit !== undefined ? quantityToBigint(data.targetGasLimit) : undefined,
|
|
497
|
+
inclusionListTransactions: data.inclusionListTransactions
|
|
498
|
+
? deserializeInclusionList(data.inclusionListTransactions)
|
|
499
|
+
: undefined,
|
|
462
500
|
};
|
|
463
501
|
}
|
|
464
502
|
|
|
@@ -500,14 +538,15 @@ export function deserializeWithdrawal(serialized: WithdrawalRpc): capella.Withdr
|
|
|
500
538
|
}
|
|
501
539
|
|
|
502
540
|
/**
|
|
503
|
-
*
|
|
541
|
+
* Serialize requests prefixed with a single-byte requestType in one allocation
|
|
504
542
|
*/
|
|
505
|
-
function
|
|
506
|
-
const
|
|
507
|
-
|
|
508
|
-
|
|
543
|
+
function serializePrefixedRequests<T>(type: Type<T>, requests: T, requestType: ExecutionRequestType): Uint8Array {
|
|
544
|
+
const uint8Array = new Uint8Array(1 + type.value_serializedSize(requests));
|
|
545
|
+
const dataView = new DataView(uint8Array.buffer, uint8Array.byteOffset, uint8Array.byteLength);
|
|
546
|
+
uint8Array[0] = requestType;
|
|
547
|
+
type.value_serializeToBytes({uint8Array, dataView}, 1, requests);
|
|
509
548
|
|
|
510
|
-
return
|
|
549
|
+
return uint8Array;
|
|
511
550
|
}
|
|
512
551
|
|
|
513
552
|
/**
|
|
@@ -522,16 +561,16 @@ export function serializeExecutionRequestsToBytes(fork: ForkName, executionReque
|
|
|
522
561
|
const result: Uint8Array[] = [];
|
|
523
562
|
|
|
524
563
|
if (deposits.length !== 0) {
|
|
525
|
-
result.push(
|
|
564
|
+
result.push(serializePrefixedRequests(ssz.electra.DepositRequests, deposits, DEPOSIT_REQUEST_TYPE));
|
|
526
565
|
}
|
|
527
566
|
|
|
528
567
|
if (withdrawals.length !== 0) {
|
|
529
|
-
result.push(
|
|
568
|
+
result.push(serializePrefixedRequests(ssz.electra.WithdrawalRequests, withdrawals, WITHDRAWAL_REQUEST_TYPE));
|
|
530
569
|
}
|
|
531
570
|
|
|
532
571
|
if (consolidations.length !== 0) {
|
|
533
572
|
result.push(
|
|
534
|
-
|
|
573
|
+
serializePrefixedRequests(ssz.electra.ConsolidationRequests, consolidations, CONSOLIDATION_REQUEST_TYPE)
|
|
535
574
|
);
|
|
536
575
|
}
|
|
537
576
|
|
|
@@ -540,12 +579,12 @@ export function serializeExecutionRequestsToBytes(fork: ForkName, executionReque
|
|
|
540
579
|
|
|
541
580
|
if (builderDeposits.length !== 0) {
|
|
542
581
|
result.push(
|
|
543
|
-
|
|
582
|
+
serializePrefixedRequests(ssz.gloas.BuilderDepositRequests, builderDeposits, BUILDER_DEPOSIT_REQUEST_TYPE)
|
|
544
583
|
);
|
|
545
584
|
}
|
|
546
585
|
|
|
547
586
|
if (builderExits.length !== 0) {
|
|
548
|
-
result.push(
|
|
587
|
+
result.push(serializePrefixedRequests(ssz.gloas.BuilderExitRequests, builderExits, BUILDER_EXIT_REQUEST_TYPE));
|
|
549
588
|
}
|
|
550
589
|
}
|
|
551
590
|
|
|
@@ -591,7 +630,7 @@ export function deserializeExecutionRequestsFromBytes(fork: ForkName, serialized
|
|
|
591
630
|
|
|
592
631
|
switch (currentRequestType) {
|
|
593
632
|
case DEPOSIT_REQUEST_TYPE: {
|
|
594
|
-
result.deposits =
|
|
633
|
+
result.deposits = sszTypesFor(fork as ForkPostElectra).DepositRequests.deserialize(requests);
|
|
595
634
|
break;
|
|
596
635
|
}
|
|
597
636
|
case WITHDRAWAL_REQUEST_TYPE: {
|
|
@@ -633,7 +672,7 @@ export function deserializeExecutionRequests(fork: ForkName, serialized: Executi
|
|
|
633
672
|
export function deserializeExecutionPayloadBody(data: ExecutionPayloadBodyRpc | null): ExecutionPayloadBody | null {
|
|
634
673
|
return data
|
|
635
674
|
? {
|
|
636
|
-
transactions: data.transactions.map((tran) => dataToBytes(tran, null)),
|
|
675
|
+
transactions: SerializedList.fromArray(data.transactions.map((tran) => dataToBytes(tran, null))),
|
|
637
676
|
withdrawals: data.withdrawals ? data.withdrawals.map(deserializeWithdrawal) : null,
|
|
638
677
|
}
|
|
639
678
|
: null;
|
|
@@ -656,7 +695,7 @@ export function serializeExecutionPayloadBodyV2(data: ExecutionPayloadBodyV2 | n
|
|
|
656
695
|
export function serializeExecutionPayloadBody(data: ExecutionPayloadBody | null): ExecutionPayloadBodyRpc | null {
|
|
657
696
|
return data
|
|
658
697
|
? {
|
|
659
|
-
transactions: data.transactions
|
|
698
|
+
transactions: Array.from(data.transactions, (tran) => bytesToData(tran)),
|
|
660
699
|
withdrawals: data.withdrawals ? data.withdrawals.map(serializeWithdrawal) : null,
|
|
661
700
|
}
|
|
662
701
|
: null;
|
package/src/index.ts
CHANGED
|
@@ -6,6 +6,8 @@ export {persistAnchorState} from "./chain/index.js";
|
|
|
6
6
|
export {DbCPStateDatastore} from "./chain/stateCache/datastore/db.js";
|
|
7
7
|
export {FileCPStateDatastore} from "./chain/stateCache/datastore/file.js";
|
|
8
8
|
export {BeaconDb, type IBeaconDb} from "./db/index.js";
|
|
9
|
+
// Export execution engine to make it usable by builder
|
|
10
|
+
export {initializeExecutionEngine} from "./execution/index.js";
|
|
9
11
|
// Export metrics utilities to de-duplicate validator metrics
|
|
10
12
|
export {
|
|
11
13
|
type HttpMetricsServer,
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import {ProducedBlockSource} from "@lodestar/types";
|
|
2
2
|
import {BlockSelectionResult} from "../../api/impl/validator/index.js";
|
|
3
|
+
import {InclusionListSource} from "../../chain/blocks/types.js";
|
|
3
4
|
import {BlockProductionStep, PayloadPreparationType} from "../../chain/produceBlock/index.js";
|
|
4
5
|
import {RegistryMetricCreator} from "../utils/registryMetricCreator.js";
|
|
5
6
|
|
|
@@ -432,5 +433,41 @@ export function createBeaconMetrics(register: RegistryMetricCreator) {
|
|
|
432
433
|
name: "beacon_weak_head_detected_total",
|
|
433
434
|
help: "Detected current head block is weak. May reorg it out when proposing next slot. See proposer boost reorg for more",
|
|
434
435
|
}),
|
|
436
|
+
|
|
437
|
+
// HEZE:EIP-7805
|
|
438
|
+
inclusionListsReceived: register.counter<{source: InclusionListSource}>({
|
|
439
|
+
name: "beacon_inclusion_lists_received_total",
|
|
440
|
+
help: "Total number of received inclusion lists",
|
|
441
|
+
labelNames: ["source"],
|
|
442
|
+
}),
|
|
443
|
+
inclusionListsValid: register.counter<{source: InclusionListSource}>({
|
|
444
|
+
name: "beacon_inclusion_lists_valid_total",
|
|
445
|
+
help: "Total number of valid inclusion lists",
|
|
446
|
+
labelNames: ["source"],
|
|
447
|
+
}),
|
|
448
|
+
inclusionListsValidSize: register.counter({
|
|
449
|
+
name: "beacon_inclusion_lists_valid_size_bytes_total",
|
|
450
|
+
help: "Total size of valid inclusion lists in bytes",
|
|
451
|
+
}),
|
|
452
|
+
inclusionListTransactionsReceived: register.counter<{source: InclusionListSource}>({
|
|
453
|
+
name: "beacon_inclusion_list_transactions_received_total",
|
|
454
|
+
help: "Total number of transactions in received inclusion lists",
|
|
455
|
+
labelNames: ["source"],
|
|
456
|
+
}),
|
|
457
|
+
inclusionListsPublished: register.counter({
|
|
458
|
+
name: "beacon_inclusion_lists_published_total",
|
|
459
|
+
help: "Total number of published inclusion lists",
|
|
460
|
+
}),
|
|
461
|
+
inclusionListsValidationTime: register.histogram<{source: InclusionListSource}>({
|
|
462
|
+
name: "beacon_inclusion_lists_validation_time_seconds",
|
|
463
|
+
help: "Time taken to validate inclusion lists",
|
|
464
|
+
buckets: [0.005, 0.01, 0.025, 0.05, 0.1, 0.25, 0.5],
|
|
465
|
+
labelNames: ["source"],
|
|
466
|
+
}),
|
|
467
|
+
inclusionListArrivalTime: register.histogram({
|
|
468
|
+
name: "beacon_inclusion_lists_arrival_time_seconds",
|
|
469
|
+
help: "Inclusion list arrival time since the beginning of slot",
|
|
470
|
+
buckets: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11],
|
|
471
|
+
}),
|
|
435
472
|
};
|
|
436
473
|
}
|
|
@@ -16,6 +16,7 @@ import {
|
|
|
16
16
|
type InvalidAttestationData,
|
|
17
17
|
ScannedSlotsTerminationReason,
|
|
18
18
|
} from "../../chain/opPools/aggregatedAttestationPool.js";
|
|
19
|
+
import {InclusionListInsertOutcome} from "../../chain/opPools/inclusionListStore.js";
|
|
19
20
|
import {InsertOutcome} from "../../chain/opPools/types.js";
|
|
20
21
|
import {RegenCaller, RegenFnName} from "../../chain/regen/interface.js";
|
|
21
22
|
import {ReprocessStatus} from "../../chain/reprocess.js";
|
|
@@ -330,6 +331,31 @@ export function createLodestarMetrics(
|
|
|
330
331
|
}),
|
|
331
332
|
},
|
|
332
333
|
|
|
334
|
+
columnReconstructionQueue: {
|
|
335
|
+
length: register.gauge({
|
|
336
|
+
name: "lodestar_column_reconstruction_queue_length",
|
|
337
|
+
help: "Count of total column reconstruction queue length",
|
|
338
|
+
}),
|
|
339
|
+
droppedJobs: register.gauge({
|
|
340
|
+
name: "lodestar_column_reconstruction_queue_dropped_jobs_total",
|
|
341
|
+
help: "Count of total column reconstruction queue dropped jobs",
|
|
342
|
+
}),
|
|
343
|
+
jobTime: register.histogram({
|
|
344
|
+
name: "lodestar_column_reconstruction_queue_job_time_seconds",
|
|
345
|
+
help: "Time to process column reconstruction queue job in seconds",
|
|
346
|
+
buckets: [0.01, 0.1, 1, 4, 12],
|
|
347
|
+
}),
|
|
348
|
+
jobWaitTime: register.histogram({
|
|
349
|
+
name: "lodestar_column_reconstruction_queue_job_wait_time_seconds",
|
|
350
|
+
help: "Time from job added to the column reconstruction queue to starting in seconds",
|
|
351
|
+
buckets: [0.01, 0.1, 1, 4, 12],
|
|
352
|
+
}),
|
|
353
|
+
concurrency: register.gauge({
|
|
354
|
+
name: "lodestar_column_reconstruction_queue_concurrency",
|
|
355
|
+
help: "Current concurrency of column reconstruction queue",
|
|
356
|
+
}),
|
|
357
|
+
},
|
|
358
|
+
|
|
333
359
|
engineHttpProcessorQueue: {
|
|
334
360
|
length: register.gauge({
|
|
335
361
|
name: "lodestar_engine_http_processor_queue_length",
|
|
@@ -619,6 +645,11 @@ export function createLodestarMetrics(
|
|
|
619
645
|
help: "Count of peers by sync type [FullySynced, Advanced, Behind]",
|
|
620
646
|
labelNames: ["syncType"],
|
|
621
647
|
}),
|
|
648
|
+
syncPeerFinalizedCheckpointMismatch: register.counter<{reason: string}>({
|
|
649
|
+
name: "lodestar_sync_peer_finalized_checkpoint_mismatch_total",
|
|
650
|
+
help: "Total behind peers whose Status finalized checkpoint is not in our chain, by reason",
|
|
651
|
+
labelNames: ["reason"],
|
|
652
|
+
}),
|
|
622
653
|
syncSwitchGossipSubscriptions: register.gauge<{action: string}>({
|
|
623
654
|
name: "lodestar_sync_switch_gossip_subscriptions",
|
|
624
655
|
help: "Sync switched gossip subscriptions on/off",
|
|
@@ -1177,11 +1208,31 @@ export function createLodestarMetrics(
|
|
|
1177
1208
|
help: "The total result of calling notifyForkchoiceUpdate execution engine api",
|
|
1178
1209
|
labelNames: ["result"],
|
|
1179
1210
|
}),
|
|
1211
|
+
getInclusionListV1Requests: register.counter({
|
|
1212
|
+
name: "lodestar_execution_engine_get_inclusion_list_v1_requests_total",
|
|
1213
|
+
help: "Total number of engine_getInclusionListV1 requests",
|
|
1214
|
+
}),
|
|
1215
|
+
getInclusionListV1RequestsDuration: register.histogram({
|
|
1216
|
+
name: "lodestar_execution_engine_get_inclusion_list_v1_duration_seconds",
|
|
1217
|
+
help: "Duration of engine_getInclusionListV1 requests",
|
|
1218
|
+
buckets: [0.05, 0.1, 0.25, 0.5, 1],
|
|
1219
|
+
}),
|
|
1180
1220
|
engineApiRequests: register.counter<{transport: string}>({
|
|
1181
1221
|
name: "lodestar_execution_engine_api_requests_total",
|
|
1182
1222
|
help: "Total engine API requests by transport",
|
|
1183
1223
|
labelNames: ["transport"],
|
|
1184
1224
|
}),
|
|
1225
|
+
inclusionListStore: {
|
|
1226
|
+
size: register.gauge({
|
|
1227
|
+
name: "lodestar_inclusion_list_store_size",
|
|
1228
|
+
help: "Current number of inclusion lists retained in the InclusionListStore",
|
|
1229
|
+
}),
|
|
1230
|
+
insertOutcome: register.counter<{insertOutcome: InclusionListInsertOutcome}>({
|
|
1231
|
+
name: "lodestar_inclusion_list_store_insert_outcome_total",
|
|
1232
|
+
help: "Total number of InclusionListStore insertions by outcome",
|
|
1233
|
+
labelNames: ["insertOutcome"],
|
|
1234
|
+
}),
|
|
1235
|
+
},
|
|
1185
1236
|
opPool: {
|
|
1186
1237
|
aggregatedAttestationPool: {
|
|
1187
1238
|
size: register.gauge({
|
|
@@ -1428,6 +1479,11 @@ export function createLodestarMetrics(
|
|
|
1428
1479
|
help: "Total number of InsertOutcome as a result of adding an execution payload bid from gossip to the pool",
|
|
1429
1480
|
labelNames: ["insertOutcome"],
|
|
1430
1481
|
}),
|
|
1482
|
+
apiInsertOutcome: register.counter<{insertOutcome: InsertOutcome}>({
|
|
1483
|
+
name: "lodestar_oppool_execution_payload_bid_pool_api_insert_outcome_total",
|
|
1484
|
+
help: "Total number of InsertOutcome as a result of adding an execution payload bid from api to the pool",
|
|
1485
|
+
labelNames: ["insertOutcome"],
|
|
1486
|
+
}),
|
|
1431
1487
|
apiValidationTime: register.histogram({
|
|
1432
1488
|
name: "lodestar_api_execution_payload_bid_validation_time_seconds",
|
|
1433
1489
|
help: "Time elapsed for signed execution payload bid validation - api path",
|
|
@@ -2061,11 +2117,17 @@ export function createLodestarMetrics(
|
|
|
2061
2117
|
}),
|
|
2062
2118
|
streamTime: register.histogram<{routeId: string}>({
|
|
2063
2119
|
name: "lodestar_execution_engine_http_client_stream_time_seconds",
|
|
2064
|
-
help: "ExecutionEngineHttp client -
|
|
2120
|
+
help: "ExecutionEngineHttp client - response body consumption time, including failures and excluding parsing",
|
|
2065
2121
|
labelNames: ["routeId"],
|
|
2066
2122
|
// Provide max resolution on problematic values around 1 second
|
|
2067
2123
|
buckets: [0.1, 0.5, 1, 2, 5, 15],
|
|
2068
2124
|
}),
|
|
2125
|
+
responseParseTime: register.histogram<{routeId: string; encoding: "json" | "ssz"}>({
|
|
2126
|
+
name: "lodestar_execution_engine_http_client_response_parse_time_seconds",
|
|
2127
|
+
help: "ExecutionEngineHttp client - JSON.parse or SSZ deserialize time, including failures, excluding body reads and subsequent value conversion",
|
|
2128
|
+
labelNames: ["routeId", "encoding"],
|
|
2129
|
+
buckets: [0.001, 0.005, 0.01, 0.05, 0.1, 0.5, 1],
|
|
2130
|
+
}),
|
|
2069
2131
|
requestErrors: register.gauge<{routeId: string}>({
|
|
2070
2132
|
name: "lodestar_execution_engine_http_client_request_errors_total",
|
|
2071
2133
|
help: "ExecutionEngineHttp client - total count of request errors",
|
|
@@ -101,7 +101,7 @@ export class MonitoringService {
|
|
|
101
101
|
if (this.monitoringInterval) {
|
|
102
102
|
clearTimeout(this.monitoringInterval);
|
|
103
103
|
}
|
|
104
|
-
if (this.pendingRequest) {
|
|
104
|
+
if (this.pendingRequest !== undefined) {
|
|
105
105
|
this.fetchAbortController?.abort(FetchAbortReason.Close);
|
|
106
106
|
await this.pendingRequest;
|
|
107
107
|
}
|
|
@@ -10,6 +10,7 @@ import {isForkPostFulu} from "@lodestar/params";
|
|
|
10
10
|
import {ResponseIncoming} from "@lodestar/reqresp";
|
|
11
11
|
import {Epoch, Status, fulu, sszTypesFor} from "@lodestar/types";
|
|
12
12
|
import {formatNodePeer} from "../../api/impl/node/utils.js";
|
|
13
|
+
import {GoodByeReasonCode} from "../../constants/index.js";
|
|
13
14
|
import {RegistryMetricCreator} from "../../metrics/index.js";
|
|
14
15
|
import {ClockEvent, IClock} from "../../util/clock.js";
|
|
15
16
|
import {CustodyConfig} from "../../util/dataColumns.js";
|
|
@@ -332,6 +333,10 @@ export class NetworkCore implements INetworkCore {
|
|
|
332
333
|
this.peerManager.reStatusPeers(peers);
|
|
333
334
|
}
|
|
334
335
|
|
|
336
|
+
async goodbyeAndDisconnect(peer: PeerIdStr, reason: GoodByeReasonCode): Promise<void> {
|
|
337
|
+
await this.peerManager.goodbyeAndDisconnect(peerIdFromString(peer), reason);
|
|
338
|
+
}
|
|
339
|
+
|
|
335
340
|
/**
|
|
336
341
|
* Request att subnets up `toSlot`. Network will ensure to mantain some peers for each
|
|
337
342
|
*/
|
|
@@ -138,6 +138,7 @@ const libp2pWorkerApi: NetworkWorkerApi = {
|
|
|
138
138
|
prepareSyncCommitteeSubnets: (subscriptions) => core.prepareSyncCommitteeSubnets(subscriptions),
|
|
139
139
|
reportPeer: (peer, action, actionName) => core.reportPeer(peer, action, actionName),
|
|
140
140
|
reStatusPeers: (peers) => core.reStatusPeers(peers),
|
|
141
|
+
goodbyeAndDisconnect: (peer, reason) => core.goodbyeAndDisconnect(peer, reason),
|
|
141
142
|
subscribeGossipCoreTopics: () => core.subscribeGossipCoreTopics(),
|
|
142
143
|
unsubscribeGossipCoreTopics: () => core.unsubscribeGossipCoreTopics(),
|
|
143
144
|
|
|
@@ -11,6 +11,7 @@ import type {LoggerNode} from "@lodestar/logger/node";
|
|
|
11
11
|
import {ResponseIncoming, ResponseOutgoing} from "@lodestar/reqresp";
|
|
12
12
|
import {Status} from "@lodestar/types";
|
|
13
13
|
import {withTimeout} from "@lodestar/utils";
|
|
14
|
+
import {GoodByeReasonCode} from "../../constants/index.js";
|
|
14
15
|
import {Metrics} from "../../metrics/index.js";
|
|
15
16
|
import {AsyncIterableBridgeCaller, AsyncIterableBridgeHandler} from "../../util/asyncIterableToEvents.js";
|
|
16
17
|
import {PeerIdStr, peerIdFromString} from "../../util/peerId.js";
|
|
@@ -205,6 +206,9 @@ export class WorkerNetworkCore implements INetworkCore {
|
|
|
205
206
|
reStatusPeers(peers: PeerIdStr[]): Promise<void> {
|
|
206
207
|
return this.getApi().reStatusPeers(peers);
|
|
207
208
|
}
|
|
209
|
+
goodbyeAndDisconnect(peer: PeerIdStr, reason: GoodByeReasonCode): Promise<void> {
|
|
210
|
+
return this.getApi().goodbyeAndDisconnect(peer, reason);
|
|
211
|
+
}
|
|
208
212
|
reportPeer(peer: PeerIdStr, action: PeerAction, actionName: string): Promise<void> {
|
|
209
213
|
return this.getApi().reportPeer(peer, action, actionName);
|
|
210
214
|
}
|
|
@@ -5,6 +5,7 @@ import {SpecJson} from "@lodestar/config";
|
|
|
5
5
|
import {LoggerNodeOpts} from "@lodestar/logger/node";
|
|
6
6
|
import {ResponseIncoming} from "@lodestar/reqresp";
|
|
7
7
|
import {Status} from "@lodestar/types";
|
|
8
|
+
import {GoodByeReasonCode} from "../../constants/index.js";
|
|
8
9
|
import {PeerIdStr} from "../../util/peerId.js";
|
|
9
10
|
import {NetworkOptions} from "../options.js";
|
|
10
11
|
import {PeerAction, PeerScoreStats} from "../peers/index.js";
|
|
@@ -53,6 +54,7 @@ export interface INetworkCore extends INetworkCorePublic {
|
|
|
53
54
|
// Sync method
|
|
54
55
|
reportPeer(peer: PeerIdStr, action: PeerAction, actionName: string): void;
|
|
55
56
|
reStatusPeers(peers: PeerIdStr[]): Promise<void>;
|
|
57
|
+
goodbyeAndDisconnect(peer: PeerIdStr, reason: GoodByeReasonCode): Promise<void>;
|
|
56
58
|
|
|
57
59
|
// TODO: Duplicated methods with INetwork interface
|
|
58
60
|
getConnectedPeers(): Promise<PeerIdStr[]>;
|
|
@@ -21,6 +21,7 @@ import {
|
|
|
21
21
|
SLOTS_PER_EPOCH,
|
|
22
22
|
SYNC_COMMITTEE_SUBNET_COUNT,
|
|
23
23
|
} from "@lodestar/params";
|
|
24
|
+
import {getSlotDurations} from "@lodestar/state-transition";
|
|
24
25
|
import {SubnetID} from "@lodestar/types";
|
|
25
26
|
import {Logger, Map2d, Map2dArr} from "@lodestar/utils";
|
|
26
27
|
import {RegistryMetricCreator} from "../../metrics/index.js";
|
|
@@ -172,7 +173,8 @@ export class Eth2Gossipsub {
|
|
|
172
173
|
mcacheLength: 6,
|
|
173
174
|
mcacheGossip: 3,
|
|
174
175
|
// this should be in ms
|
|
175
|
-
|
|
176
|
+
// use the largest configured slot duration so the TTL stays conservative across duration changes
|
|
177
|
+
seenTTL: Math.max(...getSlotDurations(config).map(([, slotDurationMs]) => slotDurationMs)) * SLOTS_PER_EPOCH * 2,
|
|
176
178
|
scoreParams,
|
|
177
179
|
scoreThresholds: gossipScoreThresholds,
|
|
178
180
|
// For a single stream, await processing each RPC before processing the next
|
|
@@ -16,6 +16,7 @@ import {
|
|
|
16
16
|
capella,
|
|
17
17
|
deneb,
|
|
18
18
|
gloas,
|
|
19
|
+
heze,
|
|
19
20
|
phase0,
|
|
20
21
|
} from "@lodestar/types";
|
|
21
22
|
import {Logger} from "@lodestar/utils";
|
|
@@ -42,6 +43,7 @@ export enum GossipType {
|
|
|
42
43
|
payload_attestation_message = "payload_attestation_message",
|
|
43
44
|
execution_payload_bid = "execution_payload_bid",
|
|
44
45
|
proposer_preferences = "proposer_preferences",
|
|
46
|
+
inclusion_list = "inclusion_list",
|
|
45
47
|
}
|
|
46
48
|
|
|
47
49
|
export type SequentialGossipType = Exclude<GossipType, GossipType.beacon_attestation>;
|
|
@@ -80,6 +82,7 @@ export type GossipTopicTypeMap = {
|
|
|
80
82
|
[GossipType.payload_attestation_message]: {type: GossipType.payload_attestation_message};
|
|
81
83
|
[GossipType.execution_payload_bid]: {type: GossipType.execution_payload_bid};
|
|
82
84
|
[GossipType.proposer_preferences]: {type: GossipType.proposer_preferences};
|
|
85
|
+
[GossipType.inclusion_list]: {type: GossipType.inclusion_list};
|
|
83
86
|
};
|
|
84
87
|
|
|
85
88
|
export type GossipTopicMap = {
|
|
@@ -113,6 +116,7 @@ export type GossipTypeMap = {
|
|
|
113
116
|
[GossipType.payload_attestation_message]: gloas.PayloadAttestationMessage;
|
|
114
117
|
[GossipType.execution_payload_bid]: gloas.SignedExecutionPayloadBid;
|
|
115
118
|
[GossipType.proposer_preferences]: gloas.SignedProposerPreferences;
|
|
119
|
+
[GossipType.inclusion_list]: heze.SignedInclusionList;
|
|
116
120
|
};
|
|
117
121
|
|
|
118
122
|
export type GossipFnByType = {
|
|
@@ -147,6 +151,7 @@ export type GossipFnByType = {
|
|
|
147
151
|
[GossipType.proposer_preferences]: (
|
|
148
152
|
signedProposerPreferences: gloas.SignedProposerPreferences
|
|
149
153
|
) => Promise<void> | void;
|
|
154
|
+
[GossipType.inclusion_list]: (signedInclusionList: heze.SignedInclusionList) => Promise<void> | void;
|
|
150
155
|
};
|
|
151
156
|
|
|
152
157
|
export type GossipFn = GossipFnByType[keyof GossipFnByType];
|
|
@@ -4,6 +4,7 @@ import {
|
|
|
4
4
|
ATTESTATION_SUBNET_COUNT,
|
|
5
5
|
ForkName,
|
|
6
6
|
ForkSeq,
|
|
7
|
+
MAX_SIGNED_INCLUSION_LIST_SIZE,
|
|
7
8
|
SYNC_COMMITTEE_SUBNET_COUNT,
|
|
8
9
|
isForkPostAltair,
|
|
9
10
|
isForkPostElectra,
|
|
@@ -91,6 +92,7 @@ function stringifyGossipTopicType(topic: GossipTopic): string {
|
|
|
91
92
|
case GossipType.payload_attestation_message:
|
|
92
93
|
case GossipType.execution_payload_bid:
|
|
93
94
|
case GossipType.proposer_preferences:
|
|
95
|
+
case GossipType.inclusion_list:
|
|
94
96
|
return topic.type;
|
|
95
97
|
case GossipType.beacon_attestation:
|
|
96
98
|
case GossipType.sync_committee:
|
|
@@ -144,6 +146,8 @@ export function getGossipSSZType(topic: GossipTopic) {
|
|
|
144
146
|
return isForkPostGloas(fork) ? sszTypesFor(fork).SignedExecutionPayloadBid : ssz.gloas.SignedExecutionPayloadBid;
|
|
145
147
|
case GossipType.proposer_preferences:
|
|
146
148
|
return ssz.gloas.SignedProposerPreferences;
|
|
149
|
+
case GossipType.inclusion_list:
|
|
150
|
+
return ssz.heze.SignedInclusionList;
|
|
147
151
|
}
|
|
148
152
|
}
|
|
149
153
|
|
|
@@ -152,6 +156,9 @@ export function getGossipSSZType(topic: GossipTopic) {
|
|
|
152
156
|
*/
|
|
153
157
|
export function getGossipSSZMaxSize(topic: GossipTopic, config: ChainForkConfig, sszType: CompositeTypeAny): number {
|
|
154
158
|
const maxSize = Math.min(sszType.maxSize, config.MAX_PAYLOAD_SIZE);
|
|
159
|
+
if (topic.type === GossipType.inclusion_list) {
|
|
160
|
+
return Math.min(maxSize, MAX_SIGNED_INCLUSION_LIST_SIZE);
|
|
161
|
+
}
|
|
155
162
|
if (isForkPostGloas(topic.boundary.fork) && topic.type === GossipType.data_column_sidecar) {
|
|
156
163
|
return Math.min(maxSize, computeMaxGloasDataColumnSidecarSize(config));
|
|
157
164
|
}
|
|
@@ -235,6 +242,7 @@ export function parseGossipTopic(forkDigestContext: ForkDigestContext, topicStr:
|
|
|
235
242
|
case GossipType.payload_attestation_message:
|
|
236
243
|
case GossipType.execution_payload_bid:
|
|
237
244
|
case GossipType.proposer_preferences:
|
|
245
|
+
case GossipType.inclusion_list:
|
|
238
246
|
return {type: gossipTypeStr, boundary, encoding};
|
|
239
247
|
}
|
|
240
248
|
|
|
@@ -292,6 +300,10 @@ export function getCoreTopicsAtFork(
|
|
|
292
300
|
topics.push({type: GossipType.proposer_preferences});
|
|
293
301
|
}
|
|
294
302
|
|
|
303
|
+
if (ForkSeq[fork] >= ForkSeq.heze) {
|
|
304
|
+
topics.push({type: GossipType.inclusion_list});
|
|
305
|
+
}
|
|
306
|
+
|
|
295
307
|
// After fulu also track data_column_sidecar_{index}
|
|
296
308
|
if (ForkSeq[fork] >= ForkSeq.fulu) {
|
|
297
309
|
topics.push(...getDataColumnSidecarTopics(networkConfig, opts.subscribeAllColumnSubnets));
|
|
@@ -409,6 +421,7 @@ export const gossipTopicIgnoreDuplicatePublishError: Record<GossipType, boolean>
|
|
|
409
421
|
[GossipType.payload_attestation_message]: true,
|
|
410
422
|
[GossipType.execution_payload_bid]: true,
|
|
411
423
|
[GossipType.proposer_preferences]: true,
|
|
424
|
+
[GossipType.inclusion_list]: true,
|
|
412
425
|
};
|
|
413
426
|
|
|
414
427
|
/**
|
|
@@ -447,4 +460,5 @@ export const gossipTopicAllowPublishToZeroPeers: Record<GossipType, boolean> = {
|
|
|
447
460
|
[GossipType.payload_attestation_message]: false,
|
|
448
461
|
[GossipType.execution_payload_bid]: false,
|
|
449
462
|
[GossipType.proposer_preferences]: false,
|
|
463
|
+
[GossipType.inclusion_list]: false,
|
|
450
464
|
};
|
package/src/network/interface.ts
CHANGED
|
@@ -33,9 +33,11 @@ import {
|
|
|
33
33
|
deneb,
|
|
34
34
|
fulu,
|
|
35
35
|
gloas,
|
|
36
|
+
heze,
|
|
36
37
|
phase0,
|
|
37
38
|
} from "@lodestar/types";
|
|
38
39
|
import {BlockInputSource} from "../chain/blocks/blockInput/types.js";
|
|
40
|
+
import {GoodByeReasonCode} from "../constants/index.js";
|
|
39
41
|
import {CustodyConfig} from "../util/dataColumns.js";
|
|
40
42
|
import {PeerIdStr} from "../util/peerId.js";
|
|
41
43
|
import {
|
|
@@ -73,6 +75,7 @@ export interface INetwork extends INetworkCorePublic {
|
|
|
73
75
|
reportPeer(peer: PeerIdStr, action: PeerAction, actionName: string): void;
|
|
74
76
|
shouldAggregate(subnet: SubnetID, slot: Slot): boolean;
|
|
75
77
|
reStatusPeers(peers: PeerIdStr[]): Promise<void>;
|
|
78
|
+
goodbyeAndDisconnect(peer: PeerIdStr, reason: GoodByeReasonCode): Promise<void>;
|
|
76
79
|
searchUnknownBlock(slotRoot: SlotRootHex, source: BlockInputSource, peer?: PeerIdStr): void;
|
|
77
80
|
searchUnknownEnvelope(slotRoot: SlotRootHex, source: BlockInputSource, peer?: PeerIdStr): void;
|
|
78
81
|
// ReqResp
|
|
@@ -118,6 +121,7 @@ export interface INetwork extends INetworkCorePublic {
|
|
|
118
121
|
publishSignedExecutionPayloadBid(signedBid: gloas.SignedExecutionPayloadBid): Promise<number>;
|
|
119
122
|
publishPayloadAttestationMessage(payloadAttestationMessage: gloas.PayloadAttestationMessage): Promise<number>;
|
|
120
123
|
publishProposerPreferences(signedProposerPreferences: gloas.SignedProposerPreferences): Promise<number>;
|
|
124
|
+
publishInclusionList(signedInclusionList: heze.SignedInclusionList): Promise<number>;
|
|
121
125
|
|
|
122
126
|
// Debug
|
|
123
127
|
dumpGossipQueue(gossipType: GossipType): Promise<PendingGossipsubMessage[]>;
|