@lodestar/beacon-node 1.51.0-dev.83da04fef3 → 1.51.0-dev.8d5cdd33be
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 +48 -95
- 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 +22 -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 +6 -0
- package/lib/api/impl/validator/index.d.ts.map +1 -1
- package/lib/api/impl/validator/index.js +143 -35
- 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 -11
- package/lib/chain/ColumnReconstructionTracker.d.ts.map +1 -1
- package/lib/chain/ColumnReconstructionTracker.js +46 -40
- package/lib/chain/ColumnReconstructionTracker.js.map +1 -1
- package/lib/chain/GetBlobsTracker.d.ts +13 -2
- package/lib/chain/GetBlobsTracker.d.ts.map +1 -1
- package/lib/chain/GetBlobsTracker.js +69 -35
- 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 +61 -97
- package/lib/chain/archiveStore/utils/archiveBlocks.js.map +1 -1
- package/lib/chain/blocks/blockInput/blockInput.d.ts +11 -56
- package/lib/chain/blocks/blockInput/blockInput.d.ts.map +1 -1
- package/lib/chain/blocks/blockInput/blockInput.js +5 -241
- package/lib/chain/blocks/blockInput/blockInput.js.map +1 -1
- package/lib/chain/blocks/blockInput/errors.d.ts +2 -4
- package/lib/chain/blocks/blockInput/errors.d.ts.map +1 -1
- package/lib/chain/blocks/blockInput/errors.js.map +1 -1
- package/lib/chain/blocks/blockInput/types.d.ts +2 -18
- package/lib/chain/blocks/blockInput/types.d.ts.map +1 -1
- package/lib/chain/blocks/blockInput/types.js +0 -1
- package/lib/chain/blocks/blockInput/types.js.map +1 -1
- package/lib/chain/blocks/importBlock.d.ts.map +1 -1
- package/lib/chain/blocks/importBlock.js +42 -57
- package/lib/chain/blocks/importBlock.js.map +1 -1
- package/lib/chain/blocks/importExecutionPayload.d.ts +10 -11
- package/lib/chain/blocks/importExecutionPayload.d.ts.map +1 -1
- package/lib/chain/blocks/importExecutionPayload.js +82 -20
- package/lib/chain/blocks/importExecutionPayload.js.map +1 -1
- package/lib/chain/blocks/index.d.ts.map +1 -1
- package/lib/chain/blocks/index.js +4 -4
- 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 +7 -19
- package/lib/chain/blocks/types.d.ts.map +1 -1
- package/lib/chain/blocks/types.js +5 -24
- 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 +18 -7
- 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 +14 -2
- package/lib/chain/blocks/verifyBlocksDataAvailability.js.map +1 -1
- package/lib/chain/blocks/verifyBlocksExecutionPayloads.d.ts +1 -1
- package/lib/chain/blocks/verifyBlocksExecutionPayloads.d.ts.map +1 -1
- package/lib/chain/blocks/verifyBlocksExecutionPayloads.js +7 -3
- package/lib/chain/blocks/verifyBlocksExecutionPayloads.js.map +1 -1
- package/lib/chain/blocks/verifyBlocksSanityChecks.d.ts.map +1 -1
- package/lib/chain/blocks/verifyBlocksSanityChecks.js +4 -0
- package/lib/chain/blocks/verifyBlocksSanityChecks.js.map +1 -1
- package/lib/chain/blocks/verifyBlocksSignatures.d.ts.map +1 -1
- package/lib/chain/blocks/verifyBlocksSignatures.js +7 -5
- package/lib/chain/blocks/verifyBlocksSignatures.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/blocks/writeBlockInputToDb.d.ts +0 -2
- package/lib/chain/blocks/writeBlockInputToDb.d.ts.map +1 -1
- package/lib/chain/blocks/writeBlockInputToDb.js +6 -24
- package/lib/chain/blocks/writeBlockInputToDb.js.map +1 -1
- package/lib/chain/bls/interface.d.ts +2 -0
- package/lib/chain/bls/interface.d.ts.map +1 -1
- package/lib/chain/bls/multithread/index.d.ts.map +1 -1
- package/lib/chain/bls/multithread/index.js +13 -11
- 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 +26 -4
- package/lib/chain/chain.d.ts.map +1 -1
- package/lib/chain/chain.js +128 -43
- package/lib/chain/chain.js.map +1 -1
- package/lib/chain/emitter.d.ts +7 -7
- package/lib/chain/emitter.d.ts.map +1 -1
- package/lib/chain/emitter.js +5 -5
- package/lib/chain/emitter.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/executionPayloadEnvelope.d.ts +7 -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/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 -1
- package/lib/chain/errors/index.d.ts.map +1 -1
- package/lib/chain/errors/index.js +1 -1
- package/lib/chain/errors/index.js.map +1 -1
- package/lib/chain/forkChoice/index.d.ts +11 -1
- package/lib/chain/forkChoice/index.d.ts.map +1 -1
- package/lib/chain/forkChoice/index.js +11 -0
- package/lib/chain/forkChoice/index.js.map +1 -1
- package/lib/chain/forkChoiceExecutionEngine.d.ts +51 -0
- package/lib/chain/forkChoiceExecutionEngine.d.ts.map +1 -0
- package/lib/chain/forkChoiceExecutionEngine.js +117 -0
- package/lib/chain/forkChoiceExecutionEngine.js.map +1 -0
- package/lib/chain/interface.d.ts +10 -7
- package/lib/chain/interface.d.ts.map +1 -1
- package/lib/chain/interface.js.map +1 -1
- package/lib/chain/opPools/aggregatedAttestationPool.d.ts +17 -4
- package/lib/chain/opPools/aggregatedAttestationPool.d.ts.map +1 -1
- package/lib/chain/opPools/aggregatedAttestationPool.js +199 -46
- 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 +2 -0
- package/lib/chain/opPools/index.d.ts.map +1 -1
- package/lib/chain/opPools/index.js +2 -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/singleAttestationPool.d.ts +77 -0
- package/lib/chain/opPools/singleAttestationPool.d.ts.map +1 -0
- package/lib/chain/opPools/singleAttestationPool.js +209 -0
- package/lib/chain/opPools/singleAttestationPool.js.map +1 -0
- 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 +5 -3
- 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/produceBlock/produceBlockBody.d.ts +6 -3
- package/lib/chain/produceBlock/produceBlockBody.d.ts.map +1 -1
- package/lib/chain/produceBlock/produceBlockBody.js +32 -11
- package/lib/chain/produceBlock/produceBlockBody.js.map +1 -1
- package/lib/chain/proposerTracker.d.ts +31 -0
- package/lib/chain/proposerTracker.d.ts.map +1 -0
- package/lib/chain/proposerTracker.js +75 -0
- package/lib/chain/proposerTracker.js.map +1 -0
- package/lib/chain/regen/interface.d.ts +2 -2
- 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/regen/queued.d.ts +1 -1
- package/lib/chain/regen/queued.d.ts.map +1 -1
- package/lib/chain/regen/queued.js +5 -3
- package/lib/chain/regen/queued.js.map +1 -1
- package/lib/chain/seenCache/seenGossipBlockInput.d.ts +7 -14
- package/lib/chain/seenCache/seenGossipBlockInput.d.ts.map +1 -1
- package/lib/chain/seenCache/seenGossipBlockInput.js +6 -65
- package/lib/chain/seenCache/seenGossipBlockInput.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/executionPayloadEnvelope.d.ts +6 -0
- package/lib/chain/validation/executionPayloadEnvelope.d.ts.map +1 -1
- package/lib/chain/validation/executionPayloadEnvelope.js +53 -0
- package/lib/chain/validation/executionPayloadEnvelope.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 +1 -2
- package/lib/chain/validatorMonitor.d.ts.map +1 -1
- package/lib/chain/validatorMonitor.js +0 -3
- package/lib/chain/validatorMonitor.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/blobSidecars.d.ts +0 -1
- package/lib/db/repositories/blobSidecars.d.ts.map +1 -1
- package/lib/db/repositories/blobSidecars.js +0 -1
- package/lib/db/repositories/blobSidecars.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/apiClient.d.ts +14 -8
- package/lib/execution/builder/apiClient.d.ts.map +1 -1
- package/lib/execution/builder/apiClient.js +12 -10
- package/lib/execution/builder/apiClient.js.map +1 -1
- package/lib/execution/builder/http.d.ts +2 -0
- package/lib/execution/builder/http.d.ts.map +1 -1
- package/lib/execution/builder/http.js +2 -0
- package/lib/execution/builder/http.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 +12 -8
- package/lib/execution/engine/http.d.ts.map +1 -1
- package/lib/execution/engine/http.js +35 -14
- 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 +1 -1
- package/lib/execution/engine/index.js.map +1 -1
- package/lib/execution/engine/interface.d.ts +29 -8
- package/lib/execution/engine/interface.d.ts.map +1 -1
- package/lib/execution/engine/interface.js.map +1 -1
- package/lib/execution/engine/jsonRpcTransport.d.ts +5 -6
- package/lib/execution/engine/jsonRpcTransport.d.ts.map +1 -1
- package/lib/execution/engine/jsonRpcTransport.js +34 -20
- package/lib/execution/engine/jsonRpcTransport.js.map +1 -1
- package/lib/execution/engine/mock.d.ts +1 -1
- package/lib/execution/engine/mock.d.ts.map +1 -1
- package/lib/execution/engine/mock.js +31 -11
- 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 +4 -5
- package/lib/execution/engine/restTransport.d.ts.map +1 -1
- package/lib/execution/engine/restTransport.js +4 -15
- package/lib/execution/engine/restTransport.js.map +1 -1
- package/lib/execution/engine/sszTypes.d.ts +38 -47
- package/lib/execution/engine/sszTypes.d.ts.map +1 -1
- package/lib/execution/engine/sszTypes.js +0 -5
- package/lib/execution/engine/sszTypes.js.map +1 -1
- package/lib/execution/engine/transport.d.ts +4 -14
- package/lib/execution/engine/transport.d.ts.map +1 -1
- package/lib/execution/engine/types.d.ts +25 -9
- package/lib/execution/engine/types.d.ts.map +1 -1
- package/lib/execution/engine/types.js +19 -14
- package/lib/execution/engine/types.js.map +1 -1
- package/lib/execution/engine/utils.d.ts.map +1 -1
- package/lib/execution/engine/utils.js +3 -2
- package/lib/execution/engine/utils.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 -9
- package/lib/metrics/metrics/beacon.d.ts.map +1 -1
- package/lib/metrics/metrics/beacon.js +35 -30
- package/lib/metrics/metrics/beacon.js.map +1 -1
- package/lib/metrics/metrics/lodestar.d.ts +49 -8
- package/lib/metrics/metrics/lodestar.d.ts.map +1 -1
- package/lib/metrics/metrics/lodestar.js +128 -18
- package/lib/metrics/metrics/lodestar.js.map +1 -1
- package/lib/metrics/server/http.js +5 -5
- package/lib/metrics/server/http.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 +4 -1
- package/lib/network/core/networkCore.d.ts.map +1 -1
- package/lib/network/core/networkCore.js +7 -0
- package/lib/network/core/networkCore.js.map +1 -1
- package/lib/network/core/networkCoreWorker.js +2 -0
- package/lib/network/core/networkCoreWorker.js.map +1 -1
- package/lib/network/core/networkCoreWorkerHandler.d.ts +4 -1
- package/lib/network/core/networkCoreWorkerHandler.d.ts.map +1 -1
- package/lib/network/core/networkCoreWorkerHandler.js +6 -0
- package/lib/network/core/networkCoreWorkerHandler.js.map +1 -1
- package/lib/network/core/types.d.ts +6 -1
- package/lib/network/core/types.d.ts.map +1 -1
- package/lib/network/gossip/gossipsub.d.ts +1 -0
- package/lib/network/gossip/gossipsub.d.ts.map +1 -1
- package/lib/network/gossip/gossipsub.js +10 -0
- package/lib/network/gossip/gossipsub.js.map +1 -1
- package/lib/network/gossip/interface.d.ts +8 -9
- package/lib/network/gossip/interface.d.ts.map +1 -1
- package/lib/network/gossip/interface.js +1 -1
- package/lib/network/gossip/interface.js.map +1 -1
- package/lib/network/gossip/topic.d.ts +13 -21
- package/lib/network/gossip/topic.d.ts.map +1 -1
- package/lib/network/gossip/topic.js +13 -24
- package/lib/network/gossip/topic.js.map +1 -1
- package/lib/network/interface.d.ts +5 -5
- package/lib/network/interface.d.ts.map +1 -1
- package/lib/network/libp2p/index.d.ts.map +1 -1
- package/lib/network/libp2p/index.js +5 -1
- package/lib/network/libp2p/index.js.map +1 -1
- package/lib/network/network.d.ts +9 -7
- package/lib/network/network.d.ts.map +1 -1
- package/lib/network/network.js +58 -35
- package/lib/network/network.js.map +1 -1
- package/lib/network/options.d.ts +2 -0
- package/lib/network/options.d.ts.map +1 -1
- package/lib/network/options.js +2 -0
- package/lib/network/options.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 +28 -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/peers/utils/prioritizePeers.d.ts +4 -1
- package/lib/network/peers/utils/prioritizePeers.d.ts.map +1 -1
- package/lib/network/peers/utils/prioritizePeers.js +8 -16
- package/lib/network/peers/utils/prioritizePeers.js.map +1 -1
- package/lib/network/peers/utils/subnetMap.d.ts +5 -2
- package/lib/network/peers/utils/subnetMap.d.ts.map +1 -1
- package/lib/network/peers/utils/subnetMap.js +6 -3
- package/lib/network/peers/utils/subnetMap.js.map +1 -1
- package/lib/network/processor/extractSlotRootFns.d.ts.map +1 -1
- package/lib/network/processor/extractSlotRootFns.js +1 -8
- package/lib/network/processor/extractSlotRootFns.js.map +1 -1
- package/lib/network/processor/gossipHandlers.d.ts.map +1 -1
- package/lib/network/processor/gossipHandlers.js +118 -149
- package/lib/network/processor/gossipHandlers.js.map +1 -1
- package/lib/network/processor/gossipQueues/index.js +6 -6
- package/lib/network/processor/gossipQueues/index.js.map +1 -1
- package/lib/network/processor/gossipValidatorFn.js +5 -5
- package/lib/network/processor/gossipValidatorFn.js.map +1 -1
- package/lib/network/processor/index.d.ts +11 -0
- package/lib/network/processor/index.d.ts.map +1 -1
- package/lib/network/processor/index.js +66 -30
- package/lib/network/processor/index.js.map +1 -1
- package/lib/network/reqresp/ReqRespBeaconNode.js +6 -3
- package/lib/network/reqresp/ReqRespBeaconNode.js.map +1 -1
- package/lib/network/reqresp/handlers/beaconBlocksByRange.d.ts +2 -2
- package/lib/network/reqresp/handlers/beaconBlocksByRange.d.ts.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 +6 -12
- package/lib/network/reqresp/handlers/index.js.map +1 -1
- package/lib/network/reqresp/protocols.d.ts +1 -2
- package/lib/network/reqresp/protocols.d.ts.map +1 -1
- package/lib/network/reqresp/protocols.js +5 -10
- 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 +5 -17
- package/lib/network/reqresp/rateLimit.js.map +1 -1
- package/lib/network/reqresp/types.d.ts +6 -9
- package/lib/network/reqresp/types.d.ts.map +1 -1
- package/lib/network/reqresp/types.js +4 -7
- package/lib/network/reqresp/types.js.map +1 -1
- package/lib/network/subnets/attnetsService.d.ts +35 -5
- package/lib/network/subnets/attnetsService.d.ts.map +1 -1
- package/lib/network/subnets/attnetsService.js +84 -6
- package/lib/network/subnets/attnetsService.js.map +1 -1
- package/lib/network/subnets/interface.d.ts +7 -0
- package/lib/network/subnets/interface.d.ts.map +1 -1
- package/lib/network/subnets/interface.js.map +1 -1
- package/lib/node/nodejs.d.ts +3 -1
- package/lib/node/nodejs.d.ts.map +1 -1
- package/lib/node/nodejs.js +47 -21
- package/lib/node/nodejs.js.map +1 -1
- package/lib/node/options.d.ts +3 -1
- package/lib/node/options.d.ts.map +1 -1
- package/lib/node/options.js +4 -2
- 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/range/batch.d.ts +2 -3
- package/lib/sync/range/batch.d.ts.map +1 -1
- package/lib/sync/range/batch.js +9 -22
- package/lib/sync/range/batch.js.map +1 -1
- package/lib/sync/range/chain.d.ts.map +1 -1
- package/lib/sync/range/chain.js +2 -15
- package/lib/sync/range/chain.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 +43 -25
- package/lib/sync/unknownBlock.js.map +1 -1
- package/lib/sync/utils/downloadByRange.d.ts +6 -34
- package/lib/sync/utils/downloadByRange.d.ts.map +1 -1
- package/lib/sync/utils/downloadByRange.js +24 -128
- package/lib/sync/utils/downloadByRange.js.map +1 -1
- package/lib/sync/utils/downloadByRoot.d.ts +2 -18
- package/lib/sync/utils/downloadByRoot.d.ts.map +1 -1
- package/lib/sync/utils/downloadByRoot.js +14 -99
- package/lib/sync/utils/downloadByRoot.js.map +1 -1
- package/lib/util/blobs.d.ts +1 -7
- package/lib/util/blobs.d.ts.map +1 -1
- package/lib/util/blobs.js +0 -19
- package/lib/util/blobs.js.map +1 -1
- package/lib/util/execution.d.ts +3 -4
- package/lib/util/execution.d.ts.map +1 -1
- package/lib/util/execution.js +1 -73
- package/lib/util/execution.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 +5 -1
- package/lib/util/sszBytes.d.ts.map +1 -1
- package/lib/util/sszBytes.js +36 -19
- package/lib/util/sszBytes.js.map +1 -1
- package/lib/util/types.d.ts +0 -5
- package/lib/util/types.d.ts.map +1 -1
- package/lib/util/types.js +1 -2
- package/lib/util/types.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 +81 -126
- package/src/api/impl/beacon/index.ts +3 -1
- package/src/api/impl/beacon/pool/index.ts +31 -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 +178 -39
- package/src/api/options.ts +3 -0
- package/src/chain/ColumnReconstructionTracker.ts +60 -41
- package/src/chain/GetBlobsTracker.ts +82 -52
- package/src/chain/archiveStore/archiveStore.ts +1 -0
- package/src/chain/archiveStore/utils/archiveBlocks.ts +76 -130
- package/src/chain/blocks/blockInput/blockInput.ts +11 -343
- package/src/chain/blocks/blockInput/errors.ts +1 -2
- package/src/chain/blocks/blockInput/types.ts +2 -20
- package/src/chain/blocks/importBlock.ts +58 -77
- package/src/chain/blocks/importExecutionPayload.ts +123 -36
- package/src/chain/blocks/index.ts +11 -4
- package/src/chain/blocks/payloadEnvelopeProcessor.ts +35 -24
- package/src/chain/blocks/types.ts +8 -29
- package/src/chain/blocks/verifyBlock.ts +31 -16
- package/src/chain/blocks/verifyBlocksDataAvailability.ts +16 -2
- package/src/chain/blocks/verifyBlocksExecutionPayloads.ts +9 -6
- package/src/chain/blocks/verifyBlocksSanityChecks.ts +4 -1
- package/src/chain/blocks/verifyBlocksSignatures.ts +7 -5
- package/src/chain/blocks/verifyPayloadsDataAvailability.ts +14 -6
- package/src/chain/blocks/writeBlockInputToDb.ts +6 -29
- package/src/chain/bls/interface.ts +2 -0
- package/src/chain/bls/multithread/index.ts +14 -10
- 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 +145 -42
- package/src/chain/emitter.ts +8 -8
- package/src/chain/errors/blockError.ts +1 -1
- package/src/chain/errors/executionPayloadBid.ts +12 -0
- package/src/chain/errors/executionPayloadEnvelope.ts +8 -0
- package/src/chain/errors/inclusionList.ts +38 -0
- package/src/chain/errors/index.ts +1 -1
- package/src/chain/forkChoice/index.ts +11 -0
- package/src/chain/forkChoiceExecutionEngine.ts +183 -0
- package/src/chain/interface.ts +11 -6
- package/src/chain/opPools/aggregatedAttestationPool.ts +246 -43
- package/src/chain/opPools/attestationPool.ts +16 -4
- package/src/chain/opPools/inclusionListStore.ts +208 -0
- package/src/chain/opPools/index.ts +2 -0
- package/src/chain/opPools/payloadAttestationPool.ts +18 -7
- package/src/chain/opPools/singleAttestationPool.ts +287 -0
- 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 +5 -4
- package/src/chain/produceBlock/produceBlockBody.ts +67 -22
- package/src/chain/proposerTracker.ts +94 -0
- package/src/chain/regen/interface.ts +2 -2
- package/src/chain/regen/queued.ts +6 -4
- package/src/chain/seenCache/seenGossipBlockInput.ts +9 -93
- package/src/chain/validation/executionPayloadBid.ts +54 -183
- package/src/chain/validation/executionPayloadEnvelope.ts +68 -1
- package/src/chain/validation/inclusionList.ts +192 -0
- package/src/chain/validation/index.ts +1 -0
- package/src/chain/validatorMonitor.ts +0 -6
- 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/blobSidecars.ts +0 -1
- package/src/db/repositories/dataColumnSidecarArchive.ts +20 -0
- package/src/execution/builder/apiClient.ts +16 -13
- package/src/execution/builder/http.ts +4 -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 +59 -47
- package/src/execution/engine/index.ts +1 -1
- package/src/execution/engine/interface.ts +46 -13
- package/src/execution/engine/jsonRpcTransport.ts +56 -31
- package/src/execution/engine/mock.ts +32 -14
- package/src/execution/engine/payloadIdCache.ts +24 -6
- package/src/execution/engine/restTransport.ts +18 -23
- package/src/execution/engine/sszTypes.ts +0 -9
- package/src/execution/engine/transport.ts +13 -17
- package/src/execution/engine/types.ts +44 -24
- package/src/execution/engine/utils.ts +4 -2
- package/src/index.ts +2 -0
- package/src/metrics/metrics/beacon.ts +37 -30
- package/src/metrics/metrics/lodestar.ts +131 -18
- package/src/metrics/server/http.ts +5 -5
- package/src/monitoring/service.ts +1 -1
- package/src/network/core/networkCore.ts +11 -1
- package/src/network/core/networkCoreWorker.ts +2 -0
- package/src/network/core/networkCoreWorkerHandler.ts +8 -1
- package/src/network/core/types.ts +6 -1
- package/src/network/gossip/gossipsub.ts +11 -0
- package/src/network/gossip/interface.ts +5 -5
- package/src/network/gossip/topic.ts +14 -25
- package/src/network/interface.ts +4 -5
- package/src/network/libp2p/index.ts +5 -1
- package/src/network/network.ts +66 -58
- package/src/network/options.ts +4 -0
- package/src/network/peers/peerManager.ts +28 -3
- package/src/network/peers/utils/assertPeerRelevance.ts +39 -23
- package/src/network/peers/utils/enrSubnetsDeserialize.ts +5 -2
- package/src/network/peers/utils/prioritizePeers.ts +14 -22
- package/src/network/peers/utils/subnetMap.ts +6 -3
- package/src/network/processor/extractSlotRootFns.ts +0 -9
- package/src/network/processor/gossipHandlers.ts +150 -183
- package/src/network/processor/gossipQueues/index.ts +6 -6
- package/src/network/processor/gossipValidatorFn.ts +5 -5
- package/src/network/processor/index.ts +58 -28
- package/src/network/processor/types.ts +1 -1
- package/src/network/reqresp/ReqRespBeaconNode.ts +7 -7
- package/src/network/reqresp/handlers/beaconBlocksByRange.ts +2 -2
- package/src/network/reqresp/handlers/inclusionListsByIndices.ts +44 -0
- package/src/network/reqresp/handlers/index.ts +5 -17
- package/src/network/reqresp/protocols.ts +6 -12
- package/src/network/reqresp/rateLimit.ts +5 -17
- package/src/network/reqresp/types.ts +6 -13
- package/src/network/subnets/attnetsService.ts +94 -6
- package/src/network/subnets/interface.ts +7 -0
- package/src/node/nodejs.ts +58 -22
- package/src/node/options.ts +9 -6
- package/src/sync/interface.ts +1 -0
- package/src/sync/range/batch.ts +9 -21
- package/src/sync/range/chain.ts +2 -14
- package/src/sync/sync.ts +65 -4
- package/src/sync/unknownBlock.ts +48 -36
- package/src/sync/utils/downloadByRange.ts +31 -230
- package/src/sync/utils/downloadByRoot.ts +15 -142
- package/src/util/blobs.ts +0 -34
- package/src/util/execution.ts +8 -102
- package/src/util/file.ts +8 -9
- package/src/util/queue/itemQueue.ts +1 -1
- package/src/util/sszBytes.ts +42 -24
- package/src/util/types.ts +1 -8
- package/lib/chain/errors/blobSidecarError.d.ts +0 -108
- package/lib/chain/errors/blobSidecarError.d.ts.map +0 -1
- package/lib/chain/errors/blobSidecarError.js +0 -38
- package/lib/chain/errors/blobSidecarError.js.map +0 -1
- package/lib/chain/validation/blobSidecar.d.ts +0 -16
- package/lib/chain/validation/blobSidecar.d.ts.map +0 -1
- package/lib/chain/validation/blobSidecar.js +0 -276
- package/lib/chain/validation/blobSidecar.js.map +0 -1
- package/lib/network/reqresp/handlers/blobSidecarsByRange.d.ts +0 -9
- package/lib/network/reqresp/handlers/blobSidecarsByRange.d.ts.map +0 -1
- package/lib/network/reqresp/handlers/blobSidecarsByRange.js +0 -91
- package/lib/network/reqresp/handlers/blobSidecarsByRange.js.map +0 -1
- package/lib/network/reqresp/handlers/blobSidecarsByRoot.d.ts +0 -5
- package/lib/network/reqresp/handlers/blobSidecarsByRoot.d.ts.map +0 -1
- package/lib/network/reqresp/handlers/blobSidecarsByRoot.js +0 -46
- package/lib/network/reqresp/handlers/blobSidecarsByRoot.js.map +0 -1
- package/src/chain/errors/blobSidecarError.ts +0 -70
- package/src/chain/validation/blobSidecar.ts +0 -357
- package/src/network/reqresp/handlers/blobSidecarsByRange.ts +0 -133
- package/src/network/reqresp/handlers/blobSidecarsByRoot.ts +0 -69
package/src/chain/chain.ts
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import path from "node:path";
|
|
2
2
|
import {PrivateKey} from "@libp2p/interface";
|
|
3
|
-
import {type PubkeyCache} from "@chainsafe/lodestar-z/pubkeys";
|
|
4
3
|
import {Type} from "@chainsafe/ssz";
|
|
5
4
|
import {routes} from "@lodestar/api";
|
|
6
5
|
import {BeaconConfig} from "@lodestar/config";
|
|
7
6
|
import {
|
|
7
|
+
AncestorStatus,
|
|
8
8
|
CheckpointWithHex,
|
|
9
9
|
EpochDifference,
|
|
10
10
|
ForkChoiceStateGetter,
|
|
@@ -14,12 +14,14 @@ import {
|
|
|
14
14
|
UpdateHeadOpt,
|
|
15
15
|
} from "@lodestar/fork-choice";
|
|
16
16
|
import {LoggerNode} from "@lodestar/logger/node";
|
|
17
|
+
import {type PubkeyCache} from "@lodestar/native/pubkeys";
|
|
17
18
|
import {
|
|
18
19
|
EFFECTIVE_BALANCE_INCREMENT,
|
|
19
20
|
type ForkPostFulu,
|
|
20
21
|
type ForkPostGloas,
|
|
21
22
|
GENESIS_SLOT,
|
|
22
23
|
SLOTS_PER_EPOCH,
|
|
24
|
+
isForkPostFulu,
|
|
23
25
|
isForkPostGloas,
|
|
24
26
|
} from "@lodestar/params";
|
|
25
27
|
import {
|
|
@@ -33,6 +35,7 @@ import {
|
|
|
33
35
|
isStatePostAltair,
|
|
34
36
|
isStatePostElectra,
|
|
35
37
|
isStatePostGloas,
|
|
38
|
+
proposerShufflingDecisionRoot,
|
|
36
39
|
} from "@lodestar/state-transition";
|
|
37
40
|
import {
|
|
38
41
|
BeaconBlock,
|
|
@@ -60,7 +63,6 @@ import {Logger, fromHex, gweiToWei, isErrorAborted, pruneSetToMax, sleep, toRoot
|
|
|
60
63
|
import {ProcessShutdownCallback} from "@lodestar/validator";
|
|
61
64
|
import {GENESIS_EPOCH, HALF_SLOT_BPS, ZERO_HASH} from "../constants/index.js";
|
|
62
65
|
import {IBeaconDb} from "../db/index.js";
|
|
63
|
-
import {BLOB_SIDECARS_IN_WRAPPER_INDEX} from "../db/repositories/blobSidecars.js";
|
|
64
66
|
import {decodeArchivedEnvelope} from "../db/repositories/index.js";
|
|
65
67
|
import {BuilderApiClient, BuilderApiClientOpts} from "../execution/builder/apiClient.js";
|
|
66
68
|
import {BuilderStatus} from "../execution/builder/http.js";
|
|
@@ -80,7 +82,7 @@ import {getSlotFromSignedBeaconBlockSerialized} from "../util/sszBytes.js";
|
|
|
80
82
|
import {ArchiveStore} from "./archiveStore/archiveStore.js";
|
|
81
83
|
import {CheckpointBalancesCache} from "./balancesCache.js";
|
|
82
84
|
import {BeaconProposerCache} from "./beaconProposerCache.js";
|
|
83
|
-
import {IBlockInput,
|
|
85
|
+
import {IBlockInput, isBlockInputColumns} from "./blocks/blockInput/index.js";
|
|
84
86
|
import {BlockProcessor, ImportBlockOpts} from "./blocks/index.js";
|
|
85
87
|
import {PayloadEnvelopeInputSource} from "./blocks/payloadEnvelopeInput/index.js";
|
|
86
88
|
import {PayloadEnvelopeProcessor} from "./blocks/payloadEnvelopeProcessor.js";
|
|
@@ -90,8 +92,9 @@ import {persistPayloadEnvelopeInput} from "./blocks/writePayloadEnvelopeInputToD
|
|
|
90
92
|
import {BlsMultiThreadWorkerPool, BlsSingleThreadVerifier, IBlsVerifier} from "./bls/index.js";
|
|
91
93
|
import {BuilderCircuitBreaker} from "./builderCircuitBreaker.js";
|
|
92
94
|
import {ColumnReconstructionTracker} from "./ColumnReconstructionTracker.js";
|
|
93
|
-
import {ChainEvent, ChainEventEmitter} from "./emitter.js";
|
|
95
|
+
import {ChainEvent, ChainEventEmitter, ReorgEventData} from "./emitter.js";
|
|
94
96
|
import {ForkchoiceCaller, initializeForkChoice} from "./forkChoice/index.js";
|
|
97
|
+
import {ForkChoiceExecutionEngine} from "./forkChoiceExecutionEngine.js";
|
|
95
98
|
import {GetBlobsTracker} from "./GetBlobsTracker.js";
|
|
96
99
|
import {CommonBlockBody, FindHeadFnName, IBeaconChain, ProposerPreparationData, StateGetOpts} from "./interface.js";
|
|
97
100
|
import {LightClientServer} from "./lightClient/index.js";
|
|
@@ -100,9 +103,11 @@ import {
|
|
|
100
103
|
AttestationPool,
|
|
101
104
|
DeferredVoluntaryExitPool,
|
|
102
105
|
ExecutionPayloadBidPool,
|
|
106
|
+
InclusionListStore,
|
|
103
107
|
OpPool,
|
|
104
108
|
PayloadAttestationPool,
|
|
105
109
|
ProposerPreferencesPool,
|
|
110
|
+
SingleAttestationPool,
|
|
106
111
|
SyncCommitteeMessagePool,
|
|
107
112
|
SyncContributionAndProofPool,
|
|
108
113
|
} from "./opPools/index.js";
|
|
@@ -111,6 +116,7 @@ import {PrepareNextSlotScheduler} from "./prepareNextSlot.js";
|
|
|
111
116
|
import {computeNewStateRoot} from "./produceBlock/computeNewStateRoot.js";
|
|
112
117
|
import {AssembledBlockType, BlockType, ProduceResult} from "./produceBlock/index.js";
|
|
113
118
|
import {BlockAttributes, produceBlockBody, produceCommonBlockBody} from "./produceBlock/produceBlockBody.js";
|
|
119
|
+
import {ProposerTracker} from "./proposerTracker.js";
|
|
114
120
|
import {QueuedStateRegenerator, RegenCaller} from "./regen/index.js";
|
|
115
121
|
import {ReprocessController} from "./reprocess.js";
|
|
116
122
|
import {
|
|
@@ -165,7 +171,7 @@ const DEFAULT_MAX_PENDING_UNFINALIZED_PAYLOAD_ENVELOPE_WRITES = 16;
|
|
|
165
171
|
export class BeaconChain implements IBeaconChain {
|
|
166
172
|
readonly genesisTime: UintNum64;
|
|
167
173
|
readonly genesisValidatorsRoot: Root;
|
|
168
|
-
readonly executionEngine:
|
|
174
|
+
readonly executionEngine: ForkChoiceExecutionEngine;
|
|
169
175
|
readonly executionBuilder?: IExecutionBuilder;
|
|
170
176
|
readonly builderCircuitBreaker: BuilderCircuitBreaker;
|
|
171
177
|
readonly builderApiClient: BuilderApiClient;
|
|
@@ -193,11 +199,19 @@ export class BeaconChain implements IBeaconChain {
|
|
|
193
199
|
// Ops pool
|
|
194
200
|
readonly attestationPool: AttestationPool;
|
|
195
201
|
readonly aggregatedAttestationPool: AggregatedAttestationPool;
|
|
202
|
+
readonly singleAttestationPool: SingleAttestationPool;
|
|
203
|
+
readonly proposerTracker: ProposerTracker;
|
|
204
|
+
/**
|
|
205
|
+
* Head state epoch and decision root of its next epoch proposers when local proposals were last refreshed. The root
|
|
206
|
+
* alone is not enough: a reorg onto a branch without blocks in a whole epoch keeps the root but moves the epoch
|
|
207
|
+
*/
|
|
208
|
+
private localProposalsKey: string | null = null;
|
|
196
209
|
readonly syncCommitteeMessagePool: SyncCommitteeMessagePool;
|
|
197
210
|
readonly syncContributionAndProofPool;
|
|
198
211
|
readonly executionPayloadBidPool: ExecutionPayloadBidPool;
|
|
199
212
|
readonly payloadAttestationPool: PayloadAttestationPool;
|
|
200
213
|
readonly proposerPreferencesPool = new ProposerPreferencesPool();
|
|
214
|
+
readonly inclusionListStore: InclusionListStore;
|
|
201
215
|
readonly opPool: OpPool;
|
|
202
216
|
readonly deferredVoluntaryExitPool: DeferredVoluntaryExitPool;
|
|
203
217
|
|
|
@@ -315,7 +329,6 @@ export class BeaconChain implements IBeaconChain {
|
|
|
315
329
|
this.genesisTime = anchorState.genesisTime;
|
|
316
330
|
this.anchorStateLatestBlockSlot = anchorState.latestBlockHeader.slot;
|
|
317
331
|
this.genesisValidatorsRoot = anchorState.genesisValidatorsRoot;
|
|
318
|
-
this.executionEngine = executionEngine;
|
|
319
332
|
this.executionBuilder = executionBuilder;
|
|
320
333
|
const signal = this.abortController.signal;
|
|
321
334
|
const emitter = new ChainEventEmitter();
|
|
@@ -329,12 +342,15 @@ export class BeaconChain implements IBeaconChain {
|
|
|
329
342
|
this.blacklistedBlocks = new Map((opts.blacklistedBlocks ?? []).map((hex) => [hex, null]));
|
|
330
343
|
this.attestationPool = new AttestationPool(config, clock, this.opts?.preaggregateSlotDistance, metrics);
|
|
331
344
|
this.aggregatedAttestationPool = new AggregatedAttestationPool(this.config, metrics, logger);
|
|
345
|
+
this.singleAttestationPool = new SingleAttestationPool(metrics);
|
|
346
|
+
this.proposerTracker = new ProposerTracker(this.opts.singleAttestationIgnoreProposalDuty ?? false, metrics);
|
|
332
347
|
this.syncCommitteeMessagePool = new SyncCommitteeMessagePool(config, clock, this.opts?.preaggregateSlotDistance);
|
|
333
348
|
this.syncContributionAndProofPool = new SyncContributionAndProofPool(config, clock, metrics, logger);
|
|
334
349
|
this.executionPayloadBidPool = new ExecutionPayloadBidPool();
|
|
335
350
|
this.payloadAttestationPool = new PayloadAttestationPool(config, clock, metrics);
|
|
336
351
|
this.opPool = new OpPool(config);
|
|
337
352
|
this.deferredVoluntaryExitPool = new DeferredVoluntaryExitPool(logger);
|
|
353
|
+
this.inclusionListStore = new InclusionListStore(config);
|
|
338
354
|
|
|
339
355
|
this.seenAggregatedAttestations = new SeenAggregatedAttestations(metrics);
|
|
340
356
|
this.seenContributionAndProof = new SeenContributionAndProof(metrics);
|
|
@@ -454,6 +470,12 @@ export class BeaconChain implements IBeaconChain {
|
|
|
454
470
|
this.payloadEnvelopeProcessor = new PayloadEnvelopeProcessor(this, metrics, signal);
|
|
455
471
|
|
|
456
472
|
this.forkChoice = forkChoice;
|
|
473
|
+
this.executionEngine = new ForkChoiceExecutionEngine(executionEngine, {
|
|
474
|
+
forkChoice,
|
|
475
|
+
recomputeHeadAfterELInvalidResponse: () => this.recomputeHeadAfterELInvalidResponse(),
|
|
476
|
+
logger,
|
|
477
|
+
metrics,
|
|
478
|
+
});
|
|
457
479
|
|
|
458
480
|
this.builderCircuitBreaker = new BuilderCircuitBreaker(
|
|
459
481
|
{faultInspectionWindow: opts.faultInspectionWindow, allowedFaults: opts.allowedFaults},
|
|
@@ -509,6 +531,7 @@ export class BeaconChain implements IBeaconChain {
|
|
|
509
531
|
emitter,
|
|
510
532
|
metrics,
|
|
511
533
|
config,
|
|
534
|
+
signal,
|
|
512
535
|
});
|
|
513
536
|
|
|
514
537
|
this.archiveStore = new ArchiveStore(
|
|
@@ -929,16 +952,6 @@ export class BeaconChain implements IBeaconChain {
|
|
|
929
952
|
}
|
|
930
953
|
|
|
931
954
|
async getBlobSidecars(blockSlot: Slot, blockRootHex: string): Promise<deneb.BlobSidecars | null> {
|
|
932
|
-
const blockInput = this.seenBlockInputCache.get(blockRootHex);
|
|
933
|
-
if (blockInput) {
|
|
934
|
-
if (!isBlockInputBlobs(blockInput)) {
|
|
935
|
-
throw new Error(`Expected block input to have blobs: slot=${blockSlot} root=${blockRootHex}`);
|
|
936
|
-
}
|
|
937
|
-
if (!blockInput.hasAllData()) {
|
|
938
|
-
return null;
|
|
939
|
-
}
|
|
940
|
-
return blockInput.getBlobs();
|
|
941
|
-
}
|
|
942
955
|
const unfinalizedBlobSidecars = (await this.db.blobSidecars.get(fromHex(blockRootHex)))?.blobSidecars ?? null;
|
|
943
956
|
if (unfinalizedBlobSidecars) {
|
|
944
957
|
return unfinalizedBlobSidecars;
|
|
@@ -946,28 +959,6 @@ export class BeaconChain implements IBeaconChain {
|
|
|
946
959
|
return (await this.db.blobSidecarsArchive.get(blockSlot))?.blobSidecars ?? null;
|
|
947
960
|
}
|
|
948
961
|
|
|
949
|
-
async getSerializedBlobSidecars(blockSlot: Slot, blockRootHex: string): Promise<Uint8Array | null> {
|
|
950
|
-
const blockInput = this.seenBlockInputCache.get(blockRootHex);
|
|
951
|
-
if (blockInput) {
|
|
952
|
-
if (!isBlockInputBlobs(blockInput)) {
|
|
953
|
-
throw new Error(`Expected block input to have blobs: slot=${blockSlot} root=${blockRootHex}`);
|
|
954
|
-
}
|
|
955
|
-
if (!blockInput.hasAllData()) {
|
|
956
|
-
return null;
|
|
957
|
-
}
|
|
958
|
-
return ssz.deneb.BlobSidecars.serialize(blockInput.getBlobs());
|
|
959
|
-
}
|
|
960
|
-
const unfinalizedBlobSidecarsWrapper = await this.db.blobSidecars.getBinary(fromHex(blockRootHex));
|
|
961
|
-
if (unfinalizedBlobSidecarsWrapper) {
|
|
962
|
-
return unfinalizedBlobSidecarsWrapper.slice(BLOB_SIDECARS_IN_WRAPPER_INDEX);
|
|
963
|
-
}
|
|
964
|
-
const finalizedBlobSidecarsWrapper = await this.db.blobSidecarsArchive.getBinary(blockSlot);
|
|
965
|
-
if (finalizedBlobSidecarsWrapper) {
|
|
966
|
-
return finalizedBlobSidecarsWrapper.slice(BLOB_SIDECARS_IN_WRAPPER_INDEX);
|
|
967
|
-
}
|
|
968
|
-
return null;
|
|
969
|
-
}
|
|
970
|
-
|
|
971
962
|
async getSerializedExecutionPayloadEnvelope(blockSlot: Slot, blockRootHex: string): Promise<Uint8Array | null> {
|
|
972
963
|
const [bytes] = await this.getSerializedExecutionPayloadEnvelopes([{blockSlot, blockRootHex}]);
|
|
973
964
|
return bytes;
|
|
@@ -1426,6 +1417,58 @@ export class BeaconChain implements IBeaconChain {
|
|
|
1426
1417
|
}
|
|
1427
1418
|
}
|
|
1428
1419
|
|
|
1420
|
+
/**
|
|
1421
|
+
* Apply chain side effects of a fork choice head change: head state, head metrics, and reorg detection
|
|
1422
|
+
*/
|
|
1423
|
+
onHeadChanged(oldHead: ProtoBlock, newHead: ProtoBlock, maybeHeadState?: IBeaconStateView): void {
|
|
1424
|
+
// Set head state as strong reference
|
|
1425
|
+
this.regen.updateHeadState(newHead, maybeHeadState);
|
|
1426
|
+
|
|
1427
|
+
const delaySec = this.clock.secFromSlot(newHead.slot);
|
|
1428
|
+
this.logger.verbose("New chain head", {
|
|
1429
|
+
slot: newHead.slot,
|
|
1430
|
+
root: newHead.blockRoot,
|
|
1431
|
+
payloadStatus: newHead.payloadStatus,
|
|
1432
|
+
delaySec,
|
|
1433
|
+
});
|
|
1434
|
+
this.metrics?.headSlot.set(newHead.slot);
|
|
1435
|
+
|
|
1436
|
+
this.onNewHead(newHead);
|
|
1437
|
+
this.metrics?.forkChoice.changedHead.inc();
|
|
1438
|
+
|
|
1439
|
+
const ancestorResult = this.forkChoice.getCommonAncestorDepth(oldHead, newHead);
|
|
1440
|
+
if (ancestorResult.code === AncestorStatus.CommonAncestor) {
|
|
1441
|
+
// CommonAncestor = chain reorg, old head and new head not direct descendants
|
|
1442
|
+
|
|
1443
|
+
const forkChoiceReorgEventData: ReorgEventData = {
|
|
1444
|
+
depth: ancestorResult.depth,
|
|
1445
|
+
epoch: computeEpochAtSlot(newHead.slot),
|
|
1446
|
+
slot: newHead.slot,
|
|
1447
|
+
newHeadBlock: newHead.blockRoot,
|
|
1448
|
+
oldHeadBlock: oldHead.blockRoot,
|
|
1449
|
+
newHeadState: newHead.stateRoot,
|
|
1450
|
+
oldHeadState: oldHead.stateRoot,
|
|
1451
|
+
executionOptimistic: isOptimisticBlock(newHead),
|
|
1452
|
+
};
|
|
1453
|
+
|
|
1454
|
+
this.emitter.emit(routes.events.EventType.chainReorg, forkChoiceReorgEventData);
|
|
1455
|
+
this.logger.verbose("Chain reorg", forkChoiceReorgEventData);
|
|
1456
|
+
|
|
1457
|
+
this.metrics?.forkChoice.reorg.inc();
|
|
1458
|
+
this.metrics?.forkChoice.reorgDistance.observe(ancestorResult.depth);
|
|
1459
|
+
}
|
|
1460
|
+
}
|
|
1461
|
+
|
|
1462
|
+
private recomputeHeadAfterELInvalidResponse(): void {
|
|
1463
|
+
// validateLatestHash only re-scores proto-array, the cached head is still the old one
|
|
1464
|
+
const oldHead = this.forkChoice.getHead();
|
|
1465
|
+
const newHead = this.recomputeForkChoiceHead(ForkchoiceCaller.executionInvalid);
|
|
1466
|
+
if (newHead.blockRoot === oldHead.blockRoot && newHead.payloadStatus === oldHead.payloadStatus) {
|
|
1467
|
+
return;
|
|
1468
|
+
}
|
|
1469
|
+
this.onHeadChanged(oldHead, newHead);
|
|
1470
|
+
}
|
|
1471
|
+
|
|
1429
1472
|
/**
|
|
1430
1473
|
* Emit `head` and `head_v2` when the fork choice head differs between two observations. Every caller that
|
|
1431
1474
|
* can move the head, `updateAndGetHead()` and `updateTime()`, must capture the head before and pass both.
|
|
@@ -1482,10 +1525,10 @@ export class BeaconChain implements IBeaconChain {
|
|
|
1482
1525
|
this.metrics?.forkChoice.requests.inc();
|
|
1483
1526
|
const timer = this.metrics?.forkChoice.findHead.startTimer({caller: FindHeadFnName.predictProposerHead});
|
|
1484
1527
|
const slot = this.clock.currentSlot;
|
|
1485
|
-
const
|
|
1528
|
+
const msFromSlot = this.clock.msFromSlot(slot);
|
|
1486
1529
|
|
|
1487
1530
|
try {
|
|
1488
|
-
return this.forkChoice.updateAndGetHead({mode: UpdateHeadOpt.GetPredictedProposerHead,
|
|
1531
|
+
return this.forkChoice.updateAndGetHead({mode: UpdateHeadOpt.GetPredictedProposerHead, msFromSlot, slot}).head;
|
|
1489
1532
|
} catch (e) {
|
|
1490
1533
|
this.metrics?.forkChoice.errors.inc({entrypoint: UpdateHeadOpt.GetPredictedProposerHead});
|
|
1491
1534
|
throw e;
|
|
@@ -1497,13 +1540,13 @@ export class BeaconChain implements IBeaconChain {
|
|
|
1497
1540
|
getProposerHead(slot: Slot): ProtoBlock {
|
|
1498
1541
|
this.metrics?.forkChoice.requests.inc();
|
|
1499
1542
|
const timer = this.metrics?.forkChoice.findHead.startTimer({caller: FindHeadFnName.getProposerHead});
|
|
1500
|
-
const
|
|
1543
|
+
const msFromSlot = this.clock.msFromSlot(slot);
|
|
1501
1544
|
|
|
1502
1545
|
try {
|
|
1503
1546
|
// Do not emit head event here, when proposing we rely on the one emitted when importing our own block
|
|
1504
1547
|
const {head, isHeadTimely, notReorgedReason} = this.forkChoice.updateAndGetHead({
|
|
1505
1548
|
mode: UpdateHeadOpt.GetProposerHead,
|
|
1506
|
-
|
|
1549
|
+
msFromSlot,
|
|
1507
1550
|
slot,
|
|
1508
1551
|
});
|
|
1509
1552
|
|
|
@@ -1825,12 +1868,15 @@ export class BeaconChain implements IBeaconChain {
|
|
|
1825
1868
|
|
|
1826
1869
|
this.attestationPool.prune(slot);
|
|
1827
1870
|
this.aggregatedAttestationPool.prune(slot);
|
|
1871
|
+
this.proposerTracker.prune(slot);
|
|
1872
|
+
this.singleAttestationPool.prune(this.proposerTracker);
|
|
1828
1873
|
this.syncCommitteeMessagePool.prune(slot);
|
|
1829
1874
|
this.seenSyncCommitteeMessages.prune(slot);
|
|
1830
1875
|
this.payloadAttestationPool.prune(slot);
|
|
1831
1876
|
this.executionPayloadBidPool.prune(slot);
|
|
1832
1877
|
this.seenExecutionPayloadBids.prune(slot);
|
|
1833
1878
|
this.proposerPreferencesPool.prune(slot);
|
|
1879
|
+
this.inclusionListStore.prune(slot);
|
|
1834
1880
|
this.seenAttestationDatas.onSlot(slot);
|
|
1835
1881
|
this.reprocessController.onSlot(slot);
|
|
1836
1882
|
|
|
@@ -1850,6 +1896,55 @@ export class BeaconChain implements IBeaconChain {
|
|
|
1850
1896
|
}
|
|
1851
1897
|
}
|
|
1852
1898
|
|
|
1899
|
+
/**
|
|
1900
|
+
* Track upcoming proposals of validators connected to this node, so that SingleAttestationPool only collects and
|
|
1901
|
+
* the network only subscribes to all attestation subnets before them. Proposals only change when the decision block
|
|
1902
|
+
* of next epoch proposers changes (the head enters a new epoch or reorgs that block) or a new validator connects,
|
|
1903
|
+
* set localProposalsKey to null before calling for the latter.
|
|
1904
|
+
* Never throws, it runs during block import.
|
|
1905
|
+
*/
|
|
1906
|
+
private refreshLocalProposals(): void {
|
|
1907
|
+
const clockSlot = this.clock.currentSlot;
|
|
1908
|
+
try {
|
|
1909
|
+
const headState = this.getHeadState();
|
|
1910
|
+
const headFork = this.config.getForkName(headState.slot);
|
|
1911
|
+
// post-fulu, the head state knows proposers of its epoch and the next one thanks to the proposer lookahead,
|
|
1912
|
+
// a pre-fulu state only predicts next epoch proposers
|
|
1913
|
+
if (!isForkPostFulu(headFork) || headState.epoch < computeEpochAtSlot(clockSlot) - 1) {
|
|
1914
|
+
return;
|
|
1915
|
+
}
|
|
1916
|
+
|
|
1917
|
+
const decisionRoot = proposerShufflingDecisionRoot(headFork, headState, headState.epoch + 1);
|
|
1918
|
+
if (decisionRoot === null) {
|
|
1919
|
+
return;
|
|
1920
|
+
}
|
|
1921
|
+
const localProposalsKey = `${headState.epoch}_${toRootHex(decisionRoot)}`;
|
|
1922
|
+
if (localProposalsKey === this.localProposalsKey) {
|
|
1923
|
+
return;
|
|
1924
|
+
}
|
|
1925
|
+
this.localProposalsKey = localProposalsKey;
|
|
1926
|
+
|
|
1927
|
+
const startSlot = computeStartSlotAtEpoch(headState.epoch);
|
|
1928
|
+
const newProposalSlots: Slot[] = [];
|
|
1929
|
+
for (const [i, proposerIndex] of [...headState.currentProposers, ...headState.nextProposers].entries()) {
|
|
1930
|
+
const proposalSlot = startSlot + i;
|
|
1931
|
+
if (
|
|
1932
|
+
proposalSlot >= clockSlot &&
|
|
1933
|
+
this.beaconProposerCache.has(proposerIndex) &&
|
|
1934
|
+
this.proposerTracker.addProposal(proposalSlot)
|
|
1935
|
+
) {
|
|
1936
|
+
newProposalSlots.push(proposalSlot);
|
|
1937
|
+
}
|
|
1938
|
+
}
|
|
1939
|
+
|
|
1940
|
+
if (newProposalSlots.length > 0) {
|
|
1941
|
+
this.emitter.emit(ChainEvent.localProposalSlots, newProposalSlots);
|
|
1942
|
+
}
|
|
1943
|
+
} catch (e) {
|
|
1944
|
+
this.logger.debug("Error refreshing local proposals", {slot: clockSlot}, e as Error);
|
|
1945
|
+
}
|
|
1946
|
+
}
|
|
1947
|
+
|
|
1853
1948
|
private onClockEpoch(epoch: Epoch): void {
|
|
1854
1949
|
this.metrics?.clockEpoch.set(epoch);
|
|
1855
1950
|
|
|
@@ -1864,6 +1959,8 @@ export class BeaconChain implements IBeaconChain {
|
|
|
1864
1959
|
protected onNewHead(head: ProtoBlock): void {
|
|
1865
1960
|
this.syncContributionAndProofPool.prune(head.slot);
|
|
1866
1961
|
this.seenContributionAndProof.prune(head.slot);
|
|
1962
|
+
|
|
1963
|
+
this.refreshLocalProposals();
|
|
1867
1964
|
}
|
|
1868
1965
|
|
|
1869
1966
|
private onForkChoiceJustified(this: BeaconChain, cp: CheckpointWithHex): void {
|
|
@@ -1932,6 +2029,9 @@ export class BeaconChain implements IBeaconChain {
|
|
|
1932
2029
|
|
|
1933
2030
|
// Only update validator custody if we discovered new validators
|
|
1934
2031
|
if (newValidatorCount > previousValidatorCount) {
|
|
2032
|
+
// new validators may propose in the current or next epoch, a failed attempt leaves null so the next head retries
|
|
2033
|
+
this.localProposalsKey = null;
|
|
2034
|
+
this.refreshLocalProposals();
|
|
1935
2035
|
const finalizedCheckpoint = this.forkChoice.getFinalizedCheckpoint();
|
|
1936
2036
|
await this.updateValidatorsCustodyRequirement(finalizedCheckpoint);
|
|
1937
2037
|
}
|
|
@@ -1947,6 +2047,9 @@ export class BeaconChain implements IBeaconChain {
|
|
|
1947
2047
|
|
|
1948
2048
|
// Only update validator custody if we discovered new validators
|
|
1949
2049
|
if (hasNewValidators) {
|
|
2050
|
+
// new validators may propose in the current or next epoch, a failed attempt leaves null so the next head retries
|
|
2051
|
+
this.localProposalsKey = null;
|
|
2052
|
+
this.refreshLocalProposals();
|
|
1950
2053
|
const finalizedCheckpoint = this.forkChoice.getFinalizedCheckpoint();
|
|
1951
2054
|
await this.updateValidatorsCustodyRequirement(finalizedCheckpoint);
|
|
1952
2055
|
}
|
package/src/chain/emitter.ts
CHANGED
|
@@ -3,7 +3,7 @@ import {StrictEventEmitter} from "strict-event-emitter-types";
|
|
|
3
3
|
import {routes} from "@lodestar/api";
|
|
4
4
|
import {CheckpointWithHex, PtcQuorumEvent} from "@lodestar/fork-choice";
|
|
5
5
|
import {IBeaconStateView} from "@lodestar/state-transition";
|
|
6
|
-
import {DataColumnSidecar, RootHex, Slot,
|
|
6
|
+
import {DataColumnSidecar, RootHex, Slot, phase0} from "@lodestar/types";
|
|
7
7
|
import {PeerIdStr} from "../util/peerId.js";
|
|
8
8
|
import {BlockInputSource, IBlockInput} from "./blocks/blockInput/types.js";
|
|
9
9
|
import {PayloadEnvelopeInput} from "./blocks/payloadEnvelopeInput/payloadEnvelopeInput.js";
|
|
@@ -50,16 +50,16 @@ export enum ChainEvent {
|
|
|
50
50
|
* and are ready to be published.
|
|
51
51
|
*/
|
|
52
52
|
publishDataColumns = "publishDataColumns",
|
|
53
|
-
/**
|
|
54
|
-
* This event signals that blobs have been fetched from the execution engine
|
|
55
|
-
* and are ready to be published.
|
|
56
|
-
*/
|
|
57
|
-
publishBlobSidecars = "publishBlobSidecars",
|
|
58
53
|
/**
|
|
59
54
|
* This event signals that a proposer slashing has been produced from an observed equivocation
|
|
60
55
|
* and is ready to be published.
|
|
61
56
|
*/
|
|
62
57
|
publishProposerSlashing = "publishProposerSlashing",
|
|
58
|
+
/**
|
|
59
|
+
* New block proposal slots of validators connected to this node, the network subscribes to all attestation
|
|
60
|
+
* subnets before them, see `slotsToSubscribeBeforeProposalDuty`
|
|
61
|
+
*/
|
|
62
|
+
localProposalSlots = "localProposalSlots",
|
|
63
63
|
/**
|
|
64
64
|
* Trigger an update of status so reqresp by peers have current earliestAvailableSlot
|
|
65
65
|
*/
|
|
@@ -123,10 +123,10 @@ export type IChainEvents = ApiEvents & {
|
|
|
123
123
|
|
|
124
124
|
[ChainEvent.publishDataColumns]: (sidecars: DataColumnSidecar[]) => void;
|
|
125
125
|
|
|
126
|
-
[ChainEvent.publishBlobSidecars]: (sidecars: deneb.BlobSidecar[]) => void;
|
|
127
|
-
|
|
128
126
|
[ChainEvent.publishProposerSlashing]: (proposerSlashing: phase0.ProposerSlashing) => void;
|
|
129
127
|
|
|
128
|
+
[ChainEvent.localProposalSlots]: (proposalSlots: Slot[]) => void;
|
|
129
|
+
|
|
130
130
|
[ChainEvent.updateStatus]: () => void;
|
|
131
131
|
|
|
132
132
|
// Sync events that are chain->chain. Initiated from network requests but do not cross the network
|
|
@@ -72,7 +72,7 @@ export enum BlockErrorCode {
|
|
|
72
72
|
* whoever served the block MAY be downscored. Mirrors PayloadErrorCode.EXECUTION_ENGINE_INVALID.
|
|
73
73
|
*/
|
|
74
74
|
EXECUTION_ENGINE_INVALID = "BLOCK_ERROR_EXECUTION_INVALID",
|
|
75
|
-
/** The
|
|
75
|
+
/** The blob or column data did not arrive within the availability wait */
|
|
76
76
|
DATA_UNAVAILABLE = "BLOCK_ERROR_DATA_UNAVAILABLE",
|
|
77
77
|
/** Block contains too many kzg commitments */
|
|
78
78
|
TOO_MANY_KZG_COMMITMENTS = "BLOCK_ERROR_TOO_MANY_KZG_COMMITMENTS",
|
|
@@ -21,6 +21,8 @@ export enum ExecutionPayloadBidErrorCode {
|
|
|
21
21
|
NO_MATCHING_PROPOSER_PREFERENCES = "EXECUTION_PAYLOAD_BID_ERROR_NO_MATCHING_PROPOSER_PREFERENCES",
|
|
22
22
|
PROPOSER_PREFERENCES_FEE_RECIPIENT_MISMATCH = "EXECUTION_PAYLOAD_BID_ERROR_PROPOSER_PREFERENCES_FEE_RECIPIENT_MISMATCH",
|
|
23
23
|
PROPOSER_PREFERENCES_GAS_LIMIT_MISMATCH = "EXECUTION_PAYLOAD_BID_ERROR_PROPOSER_PREFERENCES_GAS_LIMIT_MISMATCH",
|
|
24
|
+
INCLUSION_LIST_BITS_NOT_INCLUSIVE = "EXECUTION_PAYLOAD_BID_ERROR_INCLUSION_LIST_BITS_NOT_INCLUSIVE",
|
|
25
|
+
BEFORE_INCLUSION_LIST_DEADLINE = "EXECUTION_PAYLOAD_BID_ERROR_BEFORE_INCLUSION_LIST_DEADLINE",
|
|
24
26
|
}
|
|
25
27
|
|
|
26
28
|
export type ExecutionPayloadBidErrorType =
|
|
@@ -86,6 +88,16 @@ export type ExecutionPayloadBidErrorType =
|
|
|
86
88
|
bidFeeRecipient: string;
|
|
87
89
|
expectedFeeRecipient: string;
|
|
88
90
|
}
|
|
91
|
+
| {
|
|
92
|
+
code: ExecutionPayloadBidErrorCode.INCLUSION_LIST_BITS_NOT_INCLUSIVE;
|
|
93
|
+
builderIndex: BuilderIndex;
|
|
94
|
+
slot: Slot;
|
|
95
|
+
}
|
|
96
|
+
| {
|
|
97
|
+
code: ExecutionPayloadBidErrorCode.BEFORE_INCLUSION_LIST_DEADLINE;
|
|
98
|
+
builderIndex: BuilderIndex;
|
|
99
|
+
slot: Slot;
|
|
100
|
+
}
|
|
89
101
|
| {
|
|
90
102
|
code: ExecutionPayloadBidErrorCode.PROPOSER_PREFERENCES_GAS_LIMIT_MISMATCH;
|
|
91
103
|
builderIndex: BuilderIndex;
|
|
@@ -12,6 +12,7 @@ export enum ExecutionPayloadEnvelopeErrorCode {
|
|
|
12
12
|
BUILDER_INDEX_MISMATCH = "EXECUTION_PAYLOAD_ENVELOPE_ERROR_BUILDER_INDEX_MISMATCH",
|
|
13
13
|
BLOCK_HASH_MISMATCH = "EXECUTION_PAYLOAD_ENVELOPE_ERROR_BLOCK_HASH_MISMATCH",
|
|
14
14
|
EXECUTION_REQUESTS_ROOT_MISMATCH = "EXECUTION_PAYLOAD_ENVELOPE_ERROR_EXECUTION_REQUESTS_ROOT_MISMATCH",
|
|
15
|
+
TOO_MANY_TRANSACTIONS = "EXECUTION_PAYLOAD_ENVELOPE_ERROR_TOO_MANY_TRANSACTIONS",
|
|
15
16
|
INVALID_SIGNATURE = "EXECUTION_PAYLOAD_ENVELOPE_ERROR_INVALID_SIGNATURE",
|
|
16
17
|
PAYLOAD_ENVELOPE_INPUT_MISSING = "EXECUTION_PAYLOAD_ENVELOPE_ERROR_PAYLOAD_ENVELOPE_INPUT_MISSING",
|
|
17
18
|
}
|
|
@@ -54,6 +55,13 @@ export type ExecutionPayloadEnvelopeErrorType =
|
|
|
54
55
|
envelopeRequestsRoot: RootHex;
|
|
55
56
|
bidRequestsRoot: RootHex;
|
|
56
57
|
}
|
|
58
|
+
| {
|
|
59
|
+
code: ExecutionPayloadEnvelopeErrorCode.TOO_MANY_TRANSACTIONS;
|
|
60
|
+
slot: Slot;
|
|
61
|
+
root: RootHex;
|
|
62
|
+
transactionCount: number;
|
|
63
|
+
maxTransactionCount: number;
|
|
64
|
+
}
|
|
57
65
|
| {code: ExecutionPayloadEnvelopeErrorCode.INVALID_SIGNATURE; slot: Slot; root: RootHex}
|
|
58
66
|
| {code: ExecutionPayloadEnvelopeErrorCode.PAYLOAD_ENVELOPE_INPUT_MISSING; blockRoot: RootHex};
|
|
59
67
|
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import {Epoch, RootHex, Slot, ValidatorIndex} from "@lodestar/types";
|
|
2
|
+
import {GossipActionError} from "./gossipValidation.js";
|
|
3
|
+
|
|
4
|
+
export enum InclusionListErrorCode {
|
|
5
|
+
EMPTY_TRANSACTIONS = "INCLUSION_LIST_ERROR_EMPTY_TRANSACTIONS",
|
|
6
|
+
MAXIMUM_SIZE_EXCEEDED = "INCLUSION_LIST_ERROR_MAXIMUM_SIZE_EXCEEDED",
|
|
7
|
+
EMPTY_TRANSACTION = "INCLUSION_LIST_ERROR_EMPTY_TRANSACTION",
|
|
8
|
+
INVALID_SLOT = "INCLUSION_LIST_ERROR_INVALID_SLOT",
|
|
9
|
+
MORE_THAN_TWO = "INCLUSION_LIST_ERROR_MORE_THAN_TWO",
|
|
10
|
+
VALIDATOR_NOT_IN_COMMITTEE = "INCLUSION_LIST_ERROR_VALIDATOR_NOT_IN_COMMITTEE",
|
|
11
|
+
UNKNOWN_DEPENDENT_ROOT = "INCLUSION_LIST_ERROR_UNKNOWN_DEPENDENT_ROOT",
|
|
12
|
+
INVALID_DEPENDENT_ROOT_SLOT = "INCLUSION_LIST_ERROR_INVALID_DEPENDENT_ROOT_SLOT",
|
|
13
|
+
INVALID_DEPENDENT_ROOT = "INCLUSION_LIST_ERROR_INVALID_DEPENDENT_ROOT",
|
|
14
|
+
MISSING_SHUFFLING = "INCLUSION_LIST_ERROR_MISSING_SHUFFLING",
|
|
15
|
+
INVALID_SIGNATURE = "INCLUSION_LIST_ERROR_INVALID_SIGNATURE",
|
|
16
|
+
PRE_HEZE_SLOT = "INCLUSION_LIST_ERROR_PRE_HEZE_SLOT",
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
export type InclusionListErrorType =
|
|
20
|
+
| {code: InclusionListErrorCode.EMPTY_TRANSACTIONS}
|
|
21
|
+
| {code: InclusionListErrorCode.MAXIMUM_SIZE_EXCEEDED; totalBytes: number; maxBytes: number}
|
|
22
|
+
| {code: InclusionListErrorCode.EMPTY_TRANSACTION; transactionIndex: number}
|
|
23
|
+
| {code: InclusionListErrorCode.INVALID_SLOT; inclusionListSlot: Slot; currentSlot: Slot}
|
|
24
|
+
| {code: InclusionListErrorCode.MORE_THAN_TWO; validatorIndex: ValidatorIndex}
|
|
25
|
+
| {code: InclusionListErrorCode.VALIDATOR_NOT_IN_COMMITTEE; validatorIndex: ValidatorIndex}
|
|
26
|
+
| {code: InclusionListErrorCode.UNKNOWN_DEPENDENT_ROOT; dependentRoot: RootHex}
|
|
27
|
+
| {
|
|
28
|
+
code: InclusionListErrorCode.INVALID_DEPENDENT_ROOT_SLOT;
|
|
29
|
+
dependentRoot: RootHex;
|
|
30
|
+
dependentSlot: Slot;
|
|
31
|
+
maxSlot: Slot;
|
|
32
|
+
}
|
|
33
|
+
| {code: InclusionListErrorCode.INVALID_DEPENDENT_ROOT; dependentRoot: RootHex; epoch: Epoch}
|
|
34
|
+
| {code: InclusionListErrorCode.MISSING_SHUFFLING; dependentRoot: RootHex; epoch: Epoch}
|
|
35
|
+
| {code: InclusionListErrorCode.INVALID_SIGNATURE}
|
|
36
|
+
| {code: InclusionListErrorCode.PRE_HEZE_SLOT; inclusionListSlot: Slot};
|
|
37
|
+
|
|
38
|
+
export class InclusionListError extends GossipActionError<InclusionListErrorType> {}
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
export * from "./attestationError.js";
|
|
2
2
|
export * from "./attesterSlashingError.js";
|
|
3
|
-
export * from "./blobSidecarError.js";
|
|
4
3
|
export * from "./blockError.js";
|
|
5
4
|
export * from "./blsToExecutionChangeError.js";
|
|
6
5
|
export * from "./dataColumnSidecarError.js";
|
|
@@ -8,6 +7,7 @@ export * from "./envelopeReconstructionError.js";
|
|
|
8
7
|
export * from "./executionPayloadBid.js";
|
|
9
8
|
export * from "./executionPayloadEnvelope.js";
|
|
10
9
|
export * from "./gossipValidation.js";
|
|
10
|
+
export * from "./inclusionList.js";
|
|
11
11
|
export * from "./payloadAttestation.js";
|
|
12
12
|
export * from "./proposerPreferences.js";
|
|
13
13
|
export * from "./proposerSlashingError.js";
|
|
@@ -34,6 +34,17 @@ export type ForkChoiceOpts = RawForkChoiceOpts & {
|
|
|
34
34
|
export enum ForkchoiceCaller {
|
|
35
35
|
prepareNextSlot = "prepare_next_slot",
|
|
36
36
|
importBlock = "import_block",
|
|
37
|
+
executionInvalid = "execution_invalid",
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
/**
|
|
41
|
+
* Where an execution engine INVALID verdict comes from. Only `blockSegment` verdicts are about the payload the engine
|
|
42
|
+
* just processed and keep the consensus failure semantics in fork choice, the others are applied leniently.
|
|
43
|
+
*/
|
|
44
|
+
export enum ExecutionInvalidSource {
|
|
45
|
+
forkchoiceUpdated = "forkchoice_updated",
|
|
46
|
+
newPayload = "new_payload",
|
|
47
|
+
blockSegment = "block_segment",
|
|
37
48
|
}
|
|
38
49
|
|
|
39
50
|
/**
|