@lodestar/beacon-node 1.51.0-dev.32db66b396 → 1.51.0-dev.36022cc5cb
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 +29 -34
- 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 +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/GetBlobsTracker.d.ts +13 -2
- 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 +61 -97
- package/lib/chain/archiveStore/utils/archiveBlocks.js.map +1 -1
- package/lib/chain/blocks/importBlock.d.ts.map +1 -1
- package/lib/chain/blocks/importBlock.js +23 -51
- 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 +8 -1
- 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 +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 +8 -1
- 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/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/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 +10 -3
- package/lib/chain/chain.d.ts.map +1 -1
- package/lib/chain/chain.js +61 -8
- 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/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 -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/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 +53 -0
- package/lib/chain/forkChoiceExecutionEngine.d.ts.map +1 -0
- package/lib/chain/forkChoiceExecutionEngine.js +121 -0
- package/lib/chain/forkChoiceExecutionEngine.js.map +1 -0
- package/lib/chain/interface.d.ts +7 -6
- 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/produceBlock/produceBlockBody.d.ts +6 -3
- package/lib/chain/produceBlock/produceBlockBody.d.ts.map +1 -1
- package/lib/chain/produceBlock/produceBlockBody.js +30 -10
- package/lib/chain/produceBlock/produceBlockBody.js.map +1 -1
- 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/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/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/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 +10 -4
- package/lib/execution/engine/http.d.ts.map +1 -1
- package/lib/execution/engine/http.js +32 -8
- 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 +28 -5
- 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 -4
- package/lib/execution/engine/jsonRpcTransport.d.ts.map +1 -1
- package/lib/execution/engine/jsonRpcTransport.js +34 -10
- 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 +4 -3
- package/lib/execution/engine/restTransport.d.ts.map +1 -1
- package/lib/execution/engine/restTransport.js +3 -0
- 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 +4 -12
- package/lib/execution/engine/transport.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 +19 -6
- 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 -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 +16 -0
- package/lib/metrics/metrics/lodestar.d.ts.map +1 -1
- package/lib/metrics/metrics/lodestar.js +35 -0
- 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 +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 +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 -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 -5
- 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/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 +6 -2
- package/lib/network/network.d.ts.map +1 -1
- package/lib/network/network.js +50 -15
- 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.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/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/processor/gossipHandlers.d.ts.map +1 -1
- package/lib/network/processor/gossipHandlers.js +100 -38
- 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 +11 -0
- package/lib/network/processor/index.d.ts.map +1 -1
- package/lib/network/processor/index.js +66 -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/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 +4 -0
- 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/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/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 +42 -18
- package/lib/sync/unknownBlock.js.map +1 -1
- package/lib/util/execution.d.ts +4 -4
- package/lib/util/execution.d.ts.map +1 -1
- 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 -0
- package/lib/util/sszBytes.d.ts.map +1 -1
- package/lib/util/sszBytes.js +35 -2
- 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 +57 -62
- 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 +178 -39
- package/src/api/options.ts +3 -0
- package/src/chain/GetBlobsTracker.ts +99 -40
- package/src/chain/archiveStore/archiveStore.ts +1 -0
- package/src/chain/archiveStore/utils/archiveBlocks.ts +76 -130
- package/src/chain/blocks/importBlock.ts +37 -72
- 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 +9 -1
- package/src/chain/blocks/verifyBlock.ts +31 -16
- package/src/chain/blocks/verifyBlocksDataAvailability.ts +10 -1
- package/src/chain/blocks/verifyBlocksExecutionPayloads.ts +1 -1
- 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/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 +71 -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 -0
- package/src/chain/forkChoice/index.ts +11 -0
- package/src/chain/forkChoiceExecutionEngine.ts +197 -0
- package/src/chain/interface.ts +7 -5
- 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/produceBlock/produceBlockBody.ts +64 -21
- package/src/chain/regen/interface.ts +2 -2
- package/src/chain/regen/queued.ts +6 -4
- 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/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/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 +52 -18
- package/src/execution/engine/index.ts +1 -1
- package/src/execution/engine/interface.ts +46 -6
- package/src/execution/engine/jsonRpcTransport.ts +56 -11
- package/src/execution/engine/mock.ts +32 -7
- package/src/execution/engine/payloadIdCache.ts +24 -6
- package/src/execution/engine/restTransport.ts +18 -2
- package/src/execution/engine/transport.ts +13 -14
- package/src/execution/engine/types.ts +44 -7
- package/src/execution/engine/utils.ts +4 -2
- package/src/index.ts +2 -0
- package/src/metrics/metrics/beacon.ts +37 -0
- package/src/metrics/metrics/lodestar.ts +36 -0
- package/src/metrics/server/http.ts +5 -5
- 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 +11 -0
- 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/libp2p/index.ts +5 -1
- package/src/network/network.ts +56 -19
- package/src/network/options.ts +2 -0
- package/src/network/peers/peerManager.ts +28 -3
- package/src/network/peers/utils/assertPeerRelevance.ts +39 -23
- package/src/network/peers/utils/prioritizePeers.ts +14 -22
- package/src/network/processor/gossipHandlers.ts +124 -41
- package/src/network/processor/gossipQueues/index.ts +6 -0
- package/src/network/processor/gossipValidatorFn.ts +5 -0
- package/src/network/processor/index.ts +58 -27
- package/src/network/processor/types.ts +1 -1
- package/src/network/reqresp/ReqRespBeaconNode.ts +7 -0
- 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 +4 -0
- package/src/network/reqresp/types.ts +6 -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/sync.ts +65 -4
- package/src/sync/unknownBlock.ts +47 -28
- package/src/util/execution.ts +6 -6
- package/src/util/file.ts +8 -9
- package/src/util/queue/itemQueue.ts +1 -1
- package/src/util/sszBytes.ts +42 -2
|
@@ -8,7 +8,7 @@ import {
|
|
|
8
8
|
isForkPostBellatrix,
|
|
9
9
|
isForkPostFulu,
|
|
10
10
|
} from "@lodestar/params";
|
|
11
|
-
import {BlobsBundle, ExecutionPayload, ExecutionRequests, Root, RootHex, Wei} from "@lodestar/types";
|
|
11
|
+
import {BlobsBundle, ExecutionPayload, ExecutionRequests, Root, RootHex, Wei, bellatrix} from "@lodestar/types";
|
|
12
12
|
import {BlobAndProof} from "@lodestar/types/deneb";
|
|
13
13
|
import {BlobAndProofV2} from "@lodestar/types/fulu";
|
|
14
14
|
import {isErrorAborted} from "@lodestar/utils";
|
|
@@ -22,9 +22,11 @@ import {
|
|
|
22
22
|
ExecutePayloadResponse,
|
|
23
23
|
ExecutionEngineState,
|
|
24
24
|
ExecutionPayloadStatus,
|
|
25
|
+
ForkchoiceUpdatedResult,
|
|
25
26
|
IExecutionEngine,
|
|
26
27
|
PayloadAttributes,
|
|
27
28
|
PayloadId,
|
|
29
|
+
PayloadStatusResult,
|
|
28
30
|
VersionedHashes,
|
|
29
31
|
} from "./interface.js";
|
|
30
32
|
import {ErrorJsonRpcResponse, HttpRpcError, JsonRpcHttpClientEvent} from "./jsonRpcHttpClient.js";
|
|
@@ -32,7 +34,7 @@ import {PayloadIdCache} from "./payloadIdCache.js";
|
|
|
32
34
|
import {EngineRestError, EngineRestResponseError, isRetryableEngineRestError} from "./restHttpClient.js";
|
|
33
35
|
import {EngineCapabilities, RestEngineTransport} from "./restTransport.js";
|
|
34
36
|
import {executionForkName} from "./sszTypes.js";
|
|
35
|
-
import {IEngineTransport
|
|
37
|
+
import {IEngineTransport} from "./transport.js";
|
|
36
38
|
import {ExecutionPayloadBodyV2, serializePayloadAttributes} from "./types.js";
|
|
37
39
|
import {getExecutionEngineState} from "./utils.js";
|
|
38
40
|
|
|
@@ -224,9 +226,13 @@ export class ExecutionEngineHttp implements IExecutionEngine {
|
|
|
224
226
|
executionPayload: ExecutionPayload,
|
|
225
227
|
versionedHashes?: VersionedHashes,
|
|
226
228
|
parentBlockRoot?: Root,
|
|
227
|
-
executionRequests?: ExecutionRequests
|
|
229
|
+
executionRequests?: ExecutionRequests,
|
|
230
|
+
inclusionListTransactions?: bellatrix.Transactions
|
|
228
231
|
): Promise<ExecutePayloadResponse> {
|
|
229
232
|
// Validate before queueing, argument errors must not be reported as an unavailable execution client
|
|
233
|
+
if (ForkSeq[fork] >= ForkSeq.heze && inclusionListTransactions === undefined) {
|
|
234
|
+
throw Error(`inclusionListTransactions required in notifyNewPayload for fork=${fork}`);
|
|
235
|
+
}
|
|
230
236
|
if (ForkSeq[fork] >= ForkSeq.deneb) {
|
|
231
237
|
if (versionedHashes === undefined) {
|
|
232
238
|
throw Error(`versionedHashes required in notifyNewPayload for fork=${fork}`);
|
|
@@ -243,7 +249,14 @@ export class ExecutionEngineHttp implements IExecutionEngine {
|
|
|
243
249
|
try {
|
|
244
250
|
result = await this.enqueue(() =>
|
|
245
251
|
this.withTransport(fork, undefined, (transport) =>
|
|
246
|
-
transport.newPayload(
|
|
252
|
+
transport.newPayload(
|
|
253
|
+
fork,
|
|
254
|
+
executionPayload,
|
|
255
|
+
versionedHashes,
|
|
256
|
+
parentBlockRoot,
|
|
257
|
+
executionRequests,
|
|
258
|
+
inclusionListTransactions
|
|
259
|
+
)
|
|
247
260
|
)
|
|
248
261
|
);
|
|
249
262
|
} catch (e) {
|
|
@@ -264,7 +277,12 @@ export class ExecutionEngineHttp implements IExecutionEngine {
|
|
|
264
277
|
|
|
265
278
|
switch (status) {
|
|
266
279
|
case ExecutionPayloadStatus.VALID:
|
|
267
|
-
return {
|
|
280
|
+
return {
|
|
281
|
+
status,
|
|
282
|
+
latestValidHash: latestValidHash ?? "0x0",
|
|
283
|
+
validationError: null,
|
|
284
|
+
inclusionListSatisfied: result.inclusionListSatisfied ?? null,
|
|
285
|
+
};
|
|
268
286
|
|
|
269
287
|
case ExecutionPayloadStatus.INVALID:
|
|
270
288
|
// As per latest specs if latestValidHash can be null and it would mean only
|
|
@@ -326,15 +344,16 @@ export class ExecutionEngineHttp implements IExecutionEngine {
|
|
|
326
344
|
safeBlockHash: RootHex,
|
|
327
345
|
finalizedBlockHash: RootHex,
|
|
328
346
|
payloadAttributes?: PayloadAttributes
|
|
329
|
-
): Promise<
|
|
330
|
-
const
|
|
331
|
-
payloadStatus: {status, validationError},
|
|
332
|
-
payloadId,
|
|
333
|
-
} = await this.enqueue(() =>
|
|
347
|
+
): Promise<ForkchoiceUpdatedResult> {
|
|
348
|
+
const result = await this.enqueue(() =>
|
|
334
349
|
this.withTransport(fork, undefined, (transport) =>
|
|
335
350
|
transport.forkchoiceUpdated(fork, headBlockHash, safeBlockHash, finalizedBlockHash, payloadAttributes)
|
|
336
351
|
)
|
|
337
352
|
);
|
|
353
|
+
const {
|
|
354
|
+
payloadStatus: {status},
|
|
355
|
+
payloadId,
|
|
356
|
+
} = result;
|
|
338
357
|
|
|
339
358
|
this.updateEngineState(getExecutionEngineState({payloadStatus: status, oldState: this.state}));
|
|
340
359
|
this.metrics?.engineNotifyForkchoiceUpdateResult.inc({result: status});
|
|
@@ -348,24 +367,27 @@ export class ExecutionEngineHttp implements IExecutionEngine {
|
|
|
348
367
|
}
|
|
349
368
|
|
|
350
369
|
const payloadAttributesRpc = serializePayloadAttributes(payloadAttributes);
|
|
351
|
-
this.payloadIdCache.add(
|
|
370
|
+
this.payloadIdCache.add(
|
|
371
|
+
{
|
|
372
|
+
headBlockHash,
|
|
373
|
+
...payloadAttributesRpc,
|
|
374
|
+
inclusionListTransactions: payloadAttributes.inclusionListTransactions,
|
|
375
|
+
},
|
|
376
|
+
payloadId
|
|
377
|
+
);
|
|
352
378
|
void this.prunePayloadIdCache();
|
|
353
379
|
}
|
|
354
|
-
return
|
|
380
|
+
return result;
|
|
355
381
|
|
|
356
382
|
case ExecutionPayloadStatus.SYNCING:
|
|
357
383
|
// Throw error on syncing if requested to produce a block, else silently ignore
|
|
358
384
|
if (payloadAttributes) {
|
|
359
385
|
throw Error("Execution Layer Syncing");
|
|
360
386
|
}
|
|
361
|
-
return
|
|
387
|
+
return result;
|
|
362
388
|
|
|
363
389
|
case ExecutionPayloadStatus.INVALID:
|
|
364
|
-
|
|
365
|
-
`Invalid ${payloadAttributes ? "prepare payload" : "forkchoice request"}, validationError=${
|
|
366
|
-
validationError ?? ""
|
|
367
|
-
}`
|
|
368
|
-
);
|
|
390
|
+
return result;
|
|
369
391
|
|
|
370
392
|
default:
|
|
371
393
|
throw Error(`Unknown status ${status}`);
|
|
@@ -423,6 +445,18 @@ export class ExecutionEngineHttp implements IExecutionEngine {
|
|
|
423
445
|
return this.withTransport(undefined, "v1", (transport) => transport.getBlobsV1(versionedHashes));
|
|
424
446
|
}
|
|
425
447
|
|
|
448
|
+
/**
|
|
449
|
+
* `engine_getInclusionListV1`, JSON-RPC only as the REST engine API defines no inclusion list route.
|
|
450
|
+
* Queued so it runs after the forkchoiceUpdated of a payload imported just before, which prunes that
|
|
451
|
+
* payload's transactions from the mempool the list is built from.
|
|
452
|
+
*/
|
|
453
|
+
async getInclusionList(): Promise<bellatrix.Transactions> {
|
|
454
|
+
return this.enqueue(() => {
|
|
455
|
+
this.metrics?.engineApiRequests.inc({transport: "json-rpc"});
|
|
456
|
+
return this.jsonRpc.getInclusionList();
|
|
457
|
+
});
|
|
458
|
+
}
|
|
459
|
+
|
|
426
460
|
private enqueue<T>(job: () => Promise<T>): Promise<T> {
|
|
427
461
|
return this.queue.push(job) as Promise<T>;
|
|
428
462
|
}
|
|
@@ -17,8 +17,8 @@ import {EngineRestHttpClient} from "./restHttpClient.js";
|
|
|
17
17
|
import {RestEngineTransport, formatClientVersionHeader} from "./restTransport.js";
|
|
18
18
|
import {ExecutionEngineMockJsonRpcClient, JsonRpcBackend} from "./utils.js";
|
|
19
19
|
|
|
20
|
-
export {ExecutionEngineHttp, ExecutionEngineDisabled, defaultExecutionEngineHttpOpts, engineApiModes};
|
|
21
20
|
export type {EngineApiMode};
|
|
21
|
+
export {ExecutionEngineDisabled, ExecutionEngineHttp, defaultExecutionEngineHttpOpts, engineApiModes};
|
|
22
22
|
|
|
23
23
|
export type ExecutionEngineOpts =
|
|
24
24
|
| ({mode?: "http"} & ExecutionEngineHttpOpts)
|
|
@@ -9,14 +9,23 @@ import {
|
|
|
9
9
|
ForkPreFulu,
|
|
10
10
|
WITHDRAWAL_REQUEST_TYPE,
|
|
11
11
|
} from "@lodestar/params";
|
|
12
|
-
import {
|
|
12
|
+
import {
|
|
13
|
+
BlobsBundle,
|
|
14
|
+
ExecutionPayload,
|
|
15
|
+
ExecutionRequests,
|
|
16
|
+
Root,
|
|
17
|
+
RootHex,
|
|
18
|
+
Wei,
|
|
19
|
+
bellatrix,
|
|
20
|
+
capella,
|
|
21
|
+
} from "@lodestar/types";
|
|
13
22
|
import {BlobAndProof} from "@lodestar/types/deneb";
|
|
14
23
|
import {BlobAndProofV2} from "@lodestar/types/fulu";
|
|
15
24
|
import {PayloadId, PayloadIdCache, WithdrawalV1} from "./payloadIdCache.js";
|
|
16
25
|
import {ExecutionPayloadBodyV2} from "./types.js";
|
|
17
26
|
import {DATA} from "./utils.js";
|
|
18
27
|
|
|
19
|
-
export {
|
|
28
|
+
export {type PayloadId, PayloadIdCache, type WithdrawalV1};
|
|
20
29
|
export type ClientVersion = routes.node.ClientVersion;
|
|
21
30
|
export const ClientCode = routes.node.ClientCode;
|
|
22
31
|
|
|
@@ -73,7 +82,13 @@ export type ExecutePayloadResponse =
|
|
|
73
82
|
latestValidHash: null;
|
|
74
83
|
validationError: null;
|
|
75
84
|
}
|
|
76
|
-
| {
|
|
85
|
+
| {
|
|
86
|
+
status: ExecutionPayloadStatus.VALID;
|
|
87
|
+
latestValidHash: RootHex;
|
|
88
|
+
validationError: null;
|
|
89
|
+
/** PayloadStatusV2: whether the payload satisfied the inclusion list constraints */
|
|
90
|
+
inclusionListSatisfied?: boolean | null;
|
|
91
|
+
}
|
|
77
92
|
| {status: ExecutionPayloadStatus.INVALID; latestValidHash: RootHex | null; validationError: string | null}
|
|
78
93
|
| {
|
|
79
94
|
status:
|
|
@@ -84,6 +99,19 @@ export type ExecutePayloadResponse =
|
|
|
84
99
|
validationError: string;
|
|
85
100
|
};
|
|
86
101
|
|
|
102
|
+
export type PayloadStatusResult = {
|
|
103
|
+
status: ExecutionPayloadStatus;
|
|
104
|
+
latestValidHash: RootHex | null;
|
|
105
|
+
validationError: string | null;
|
|
106
|
+
/** PayloadStatusV2: whether a VALID payload satisfied the inclusion list constraints, null otherwise */
|
|
107
|
+
inclusionListSatisfied?: boolean | null;
|
|
108
|
+
};
|
|
109
|
+
|
|
110
|
+
export type ForkchoiceUpdatedResult = {
|
|
111
|
+
payloadStatus: PayloadStatusResult;
|
|
112
|
+
payloadId: PayloadId | null;
|
|
113
|
+
};
|
|
114
|
+
|
|
87
115
|
export type ForkChoiceUpdateStatus =
|
|
88
116
|
| ExecutionPayloadStatus.VALID
|
|
89
117
|
| ExecutionPayloadStatus.INVALID
|
|
@@ -99,6 +127,8 @@ export type PayloadAttributes = {
|
|
|
99
127
|
parentBeaconBlockRoot?: Uint8Array;
|
|
100
128
|
slotNumber?: number; // EIP-7843
|
|
101
129
|
targetGasLimit?: bigint; // GLOAS (PayloadAttributesV4, execution-apis#796)
|
|
130
|
+
/** Transactions the built payload must include (PayloadAttributesV5, HEZE:EIP-7805) */
|
|
131
|
+
inclusionListTransactions?: bellatrix.Transactions;
|
|
102
132
|
};
|
|
103
133
|
|
|
104
134
|
export type VersionedHashes = Uint8Array[];
|
|
@@ -129,9 +159,16 @@ export interface IExecutionEngine {
|
|
|
129
159
|
executionPayload: ExecutionPayload,
|
|
130
160
|
versionedHashes?: VersionedHashes,
|
|
131
161
|
parentBeaconBlockRoot?: Root,
|
|
132
|
-
executionRequests?: ExecutionRequests
|
|
162
|
+
executionRequests?: ExecutionRequests,
|
|
163
|
+
inclusionListTransactions?: bellatrix.Transactions
|
|
133
164
|
): Promise<ExecutePayloadResponse>;
|
|
134
165
|
|
|
166
|
+
/**
|
|
167
|
+
* Transactions the execution layer wants included in the next payload. Parameterless since
|
|
168
|
+
* execution-apis#609: the execution layer builds against its own view of the head.
|
|
169
|
+
*/
|
|
170
|
+
getInclusionList(): Promise<bellatrix.Transactions>;
|
|
171
|
+
|
|
135
172
|
/**
|
|
136
173
|
* Signal fork choice updates
|
|
137
174
|
* This function performs two actions atomically:
|
|
@@ -142,7 +179,10 @@ export interface IExecutionEngine {
|
|
|
142
179
|
* The call of the notify_forkchoice_updated function maps on the POS_FORKCHOICE_UPDATED event defined in the EIP-3675.
|
|
143
180
|
* https://github.com/ethereum/consensus-specs/blob/v1.1.7/specs/merge/fork-choice.md#notify_forkchoice_updated
|
|
144
181
|
*
|
|
145
|
-
* Should be called in response to fork-choice head and finalized events
|
|
182
|
+
* Should be called in response to fork-choice head and finalized events.
|
|
183
|
+
*
|
|
184
|
+
* An INVALID verdict is returned, not thrown: the caller feeds it back into fork choice together with the
|
|
185
|
+
* `latestValidHash`. Only SYNCING while building a payload is an error.
|
|
146
186
|
*/
|
|
147
187
|
notifyForkchoiceUpdate(
|
|
148
188
|
fork: ForkName,
|
|
@@ -150,7 +190,7 @@ export interface IExecutionEngine {
|
|
|
150
190
|
safeBlockHash: RootHex,
|
|
151
191
|
finalizedBlockHash: RootHex,
|
|
152
192
|
payloadAttributes?: PayloadAttributes
|
|
153
|
-
): Promise<
|
|
193
|
+
): Promise<ForkchoiceUpdatedResult>;
|
|
154
194
|
|
|
155
195
|
/**
|
|
156
196
|
* Given the payload_id, get_payload returns the most recent version of the execution payload that has been built
|
|
@@ -1,11 +1,19 @@
|
|
|
1
1
|
import {ForkName, ForkSeq} from "@lodestar/params";
|
|
2
|
-
import {ExecutionPayload, ExecutionRequests, Root, RootHex} from "@lodestar/types";
|
|
2
|
+
import {ExecutionPayload, ExecutionRequests, Root, RootHex, bellatrix} from "@lodestar/types";
|
|
3
3
|
import {BlobAndProof} from "@lodestar/types/deneb";
|
|
4
4
|
import {BlobAndProofV2} from "@lodestar/types/fulu";
|
|
5
5
|
import {strip0xPrefix} from "@lodestar/utils";
|
|
6
|
-
import {
|
|
6
|
+
import {
|
|
7
|
+
ClientCode,
|
|
8
|
+
ClientVersion,
|
|
9
|
+
ForkchoiceUpdatedResult,
|
|
10
|
+
PayloadAttributes,
|
|
11
|
+
PayloadId,
|
|
12
|
+
PayloadStatusResult,
|
|
13
|
+
VersionedHashes,
|
|
14
|
+
} from "./interface.js";
|
|
7
15
|
import {IJsonRpcHttpClient, JsonRpcHttpClientEventEmitter, ReqOpts} from "./jsonRpcHttpClient.js";
|
|
8
|
-
import {
|
|
16
|
+
import {GetPayloadResult, IEngineTransport} from "./transport.js";
|
|
9
17
|
import {
|
|
10
18
|
BLOB_AND_PROOF_V2_RPC_BYTES,
|
|
11
19
|
EngineApiRpcParamTypes,
|
|
@@ -16,10 +24,12 @@ import {
|
|
|
16
24
|
deserializeBlobAndProofsV2,
|
|
17
25
|
deserializeBlobAndProofsV2IntoBytes,
|
|
18
26
|
deserializeExecutionPayloadBodyV2,
|
|
27
|
+
deserializeInclusionList,
|
|
19
28
|
parseExecutionPayload,
|
|
20
29
|
serializeBeaconBlockRoot,
|
|
21
30
|
serializeExecutionPayload,
|
|
22
31
|
serializeExecutionRequests,
|
|
32
|
+
serializeInclusionList,
|
|
23
33
|
serializePayloadAttributes,
|
|
24
34
|
serializeVersionedHashes,
|
|
25
35
|
} from "./types.js";
|
|
@@ -40,6 +50,7 @@ const getPayloadBodiesByHashOpts: ReqOpts = {routeId: "getPayloadBodiesByHash"};
|
|
|
40
50
|
const getBlobsV1Opts: ReqOpts = {routeId: "getBlobsV1"};
|
|
41
51
|
const getBlobsV2Opts: ReqOpts = {routeId: "getBlobsV2"};
|
|
42
52
|
const getClientVersionOpts: ReqOpts = {routeId: "getClientVersion"};
|
|
53
|
+
const getInclusionListOpts: ReqOpts = {routeId: "getInclusionList"};
|
|
43
54
|
|
|
44
55
|
/**
|
|
45
56
|
* Legacy `engine_*` JSON-RPC methods
|
|
@@ -57,7 +68,8 @@ export class JsonRpcEngineTransport implements IEngineTransport {
|
|
|
57
68
|
executionPayload: ExecutionPayload,
|
|
58
69
|
versionedHashes?: VersionedHashes,
|
|
59
70
|
parentBeaconBlockRoot?: Root,
|
|
60
|
-
executionRequests?: ExecutionRequests
|
|
71
|
+
executionRequests?: ExecutionRequests,
|
|
72
|
+
inclusionListTransactions?: bellatrix.Transactions
|
|
61
73
|
): Promise<PayloadStatusResult> {
|
|
62
74
|
const serializedExecutionPayload = serializeExecutionPayload(fork, executionPayload);
|
|
63
75
|
|
|
@@ -76,6 +88,28 @@ export class JsonRpcEngineTransport implements IEngineTransport {
|
|
|
76
88
|
if (executionRequests === undefined) {
|
|
77
89
|
throw Error(`executionRequests required in notifyNewPayload for fork=${fork}`);
|
|
78
90
|
}
|
|
91
|
+
if (ForkSeq[fork] >= ForkSeq.heze) {
|
|
92
|
+
if (inclusionListTransactions === undefined) {
|
|
93
|
+
throw Error(`inclusionListTransactions required in notifyNewPayload for fork=${fork}`);
|
|
94
|
+
}
|
|
95
|
+
const method = "engine_newPayloadV6";
|
|
96
|
+
return this.rpc.fetchWithRetries<
|
|
97
|
+
EngineApiRpcReturnTypes[typeof method],
|
|
98
|
+
EngineApiRpcParamTypes[typeof method]
|
|
99
|
+
>(
|
|
100
|
+
{
|
|
101
|
+
method,
|
|
102
|
+
params: [
|
|
103
|
+
serializedExecutionPayload,
|
|
104
|
+
serializedVersionedHashes,
|
|
105
|
+
serializedParentBeaconBlockRoot,
|
|
106
|
+
serializeExecutionRequests(fork, executionRequests),
|
|
107
|
+
serializeInclusionList(inclusionListTransactions),
|
|
108
|
+
],
|
|
109
|
+
},
|
|
110
|
+
notifyNewPayloadOpts
|
|
111
|
+
);
|
|
112
|
+
}
|
|
79
113
|
const method = ForkSeq[fork] >= ForkSeq.gloas ? "engine_newPayloadV5" : "engine_newPayloadV4";
|
|
80
114
|
return this.rpc.fetchWithRetries<EngineApiRpcReturnTypes[typeof method], EngineApiRpcParamTypes[typeof method]>(
|
|
81
115
|
{
|
|
@@ -113,13 +147,15 @@ export class JsonRpcEngineTransport implements IEngineTransport {
|
|
|
113
147
|
payloadAttributes?: PayloadAttributes
|
|
114
148
|
): Promise<ForkchoiceUpdatedResult> {
|
|
115
149
|
const method =
|
|
116
|
-
ForkSeq[fork] >= ForkSeq.
|
|
117
|
-
? "
|
|
118
|
-
: ForkSeq[fork] >= ForkSeq.
|
|
119
|
-
? "
|
|
120
|
-
: ForkSeq[fork] >= ForkSeq.
|
|
121
|
-
? "
|
|
122
|
-
:
|
|
150
|
+
ForkSeq[fork] >= ForkSeq.heze
|
|
151
|
+
? "engine_forkchoiceUpdatedV5"
|
|
152
|
+
: ForkSeq[fork] >= ForkSeq.gloas
|
|
153
|
+
? "engine_forkchoiceUpdatedV4"
|
|
154
|
+
: ForkSeq[fork] >= ForkSeq.deneb
|
|
155
|
+
? "engine_forkchoiceUpdatedV3"
|
|
156
|
+
: ForkSeq[fork] >= ForkSeq.capella
|
|
157
|
+
? "engine_forkchoiceUpdatedV2"
|
|
158
|
+
: "engine_forkchoiceUpdatedV1";
|
|
123
159
|
const payloadAttributesRpc = payloadAttributes ? serializePayloadAttributes(payloadAttributes) : undefined;
|
|
124
160
|
// If we are just fcUing and not asking execution for payload, retry is not required
|
|
125
161
|
// and we can move on, as the next fcU will be issued soon on the new slot
|
|
@@ -244,4 +280,13 @@ export class JsonRpcEngineTransport implements IEngineTransport {
|
|
|
244
280
|
return {code, name: cv.name, version: cv.version, commit: strip0xPrefix(cv.commit)};
|
|
245
281
|
});
|
|
246
282
|
}
|
|
283
|
+
|
|
284
|
+
async getInclusionList(): Promise<bellatrix.Transactions> {
|
|
285
|
+
const method = "engine_getInclusionListV1";
|
|
286
|
+
const response = await this.rpc.fetchWithRetries<
|
|
287
|
+
EngineApiRpcReturnTypes[typeof method],
|
|
288
|
+
EngineApiRpcParamTypes[typeof method]
|
|
289
|
+
>({method, params: []}, getInclusionListOpts);
|
|
290
|
+
return deserializeInclusionList(response);
|
|
291
|
+
}
|
|
247
292
|
}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import crypto from "node:crypto";
|
|
2
|
+
import {SerializedList} from "@chainsafe/ssz";
|
|
2
3
|
import {ChainConfig} from "@lodestar/config";
|
|
3
4
|
import {
|
|
4
5
|
BLOB_TX_TYPE,
|
|
@@ -137,10 +138,12 @@ export class ExecutionEngineMockBackend implements JsonRpcBackend {
|
|
|
137
138
|
engine_newPayloadV3: this.notifyNewPayload.bind(this),
|
|
138
139
|
engine_newPayloadV4: this.notifyNewPayload.bind(this),
|
|
139
140
|
engine_newPayloadV5: this.notifyNewPayload.bind(this),
|
|
141
|
+
engine_newPayloadV6: this.notifyNewPayload.bind(this),
|
|
140
142
|
engine_forkchoiceUpdatedV1: this.notifyForkchoiceUpdate.bind(this),
|
|
141
143
|
engine_forkchoiceUpdatedV2: this.notifyForkchoiceUpdate.bind(this),
|
|
142
144
|
engine_forkchoiceUpdatedV3: this.notifyForkchoiceUpdate.bind(this),
|
|
143
145
|
engine_forkchoiceUpdatedV4: this.notifyForkchoiceUpdate.bind(this),
|
|
146
|
+
engine_forkchoiceUpdatedV5: this.notifyForkchoiceUpdate.bind(this),
|
|
144
147
|
engine_getPayloadV1: this.getPayloadV1.bind(this),
|
|
145
148
|
engine_getPayloadV2: this.getPayloadV5.bind(this),
|
|
146
149
|
engine_getPayloadV3: this.getPayloadV5.bind(this),
|
|
@@ -151,6 +154,7 @@ export class ExecutionEngineMockBackend implements JsonRpcBackend {
|
|
|
151
154
|
engine_getClientVersionV1: this.getClientVersionV1.bind(this),
|
|
152
155
|
engine_getBlobsV1: this.getBlobs.bind(this),
|
|
153
156
|
engine_getBlobsV2: this.getBlobsV2.bind(this),
|
|
157
|
+
engine_getInclusionListV1: this.getInclusionList.bind(this),
|
|
154
158
|
};
|
|
155
159
|
}
|
|
156
160
|
|
|
@@ -234,7 +238,13 @@ export class ExecutionEngineMockBackend implements JsonRpcBackend {
|
|
|
234
238
|
// IF the payload has been fully validated while processing the call
|
|
235
239
|
// RETURN payload status from the Payload validation process
|
|
236
240
|
// If validation succeeds, the response MUST contain {status: VALID, latestValidHash: payload.blockHash}
|
|
237
|
-
|
|
241
|
+
// The mock does not check inclusion list constraints, so every payload satisfies them (PayloadStatusV2)
|
|
242
|
+
return {
|
|
243
|
+
status: ExecutionPayloadStatus.VALID,
|
|
244
|
+
latestValidHash: blockHash,
|
|
245
|
+
validationError: null,
|
|
246
|
+
inclusionListSatisfied: true,
|
|
247
|
+
};
|
|
238
248
|
}
|
|
239
249
|
|
|
240
250
|
/**
|
|
@@ -343,14 +353,14 @@ export class ExecutionEngineMockBackend implements JsonRpcBackend {
|
|
|
343
353
|
executionPayload.gasUsed = Math.floor(0.5 * INTEROP_GAS_LIMIT);
|
|
344
354
|
executionPayload.timestamp = payloadAttributes.timestamp;
|
|
345
355
|
executionPayload.blockHash = crypto.randomBytes(32);
|
|
346
|
-
|
|
356
|
+
const transactions: Uint8Array[] = [];
|
|
347
357
|
|
|
348
358
|
// Between 0 and 4 transactions for all forks
|
|
349
359
|
const eip1559TxCount = Math.round(4 * Math.random());
|
|
350
360
|
for (let i = 0; i < eip1559TxCount; i++) {
|
|
351
361
|
const tx = crypto.randomBytes(512);
|
|
352
362
|
tx[0] = TX_TYPE_EIP1559;
|
|
353
|
-
|
|
363
|
+
transactions.push(tx);
|
|
354
364
|
}
|
|
355
365
|
|
|
356
366
|
const commitments: deneb.KZGCommitment[] = [];
|
|
@@ -364,7 +374,7 @@ export class ExecutionEngineMockBackend implements JsonRpcBackend {
|
|
|
364
374
|
const blob = generateRandomBlob();
|
|
365
375
|
const commitment = kzg.blobToKzgCommitment(blob);
|
|
366
376
|
const {proofs: cellProofs} = kzg.computeCellsAndKzgProofs(blob);
|
|
367
|
-
|
|
377
|
+
transactions.push(transactionForKzgCommitment(commitment));
|
|
368
378
|
commitments.push(commitment);
|
|
369
379
|
blobs.push(blob);
|
|
370
380
|
proofs.push(...cellProofs);
|
|
@@ -376,12 +386,13 @@ export class ExecutionEngineMockBackend implements JsonRpcBackend {
|
|
|
376
386
|
const blob = generateRandomBlob();
|
|
377
387
|
const commitment = kzg.blobToKzgCommitment(blob);
|
|
378
388
|
const proof = kzg.computeBlobKzgProof(blob, commitment);
|
|
379
|
-
|
|
389
|
+
transactions.push(transactionForKzgCommitment(commitment));
|
|
380
390
|
commitments.push(commitment);
|
|
381
391
|
blobs.push(blob);
|
|
382
392
|
proofs.push(proof);
|
|
383
393
|
}
|
|
384
394
|
}
|
|
395
|
+
executionPayload.transactions = SerializedList.fromArray(transactions);
|
|
385
396
|
|
|
386
397
|
if (ForkSeq[fork] >= ForkSeq.capella) {
|
|
387
398
|
(executionPayload as ExecutionPayload<ForkPostCapella>).withdrawals = ssz.capella.Withdrawals.defaultValue();
|
|
@@ -409,7 +420,12 @@ export class ExecutionEngineMockBackend implements JsonRpcBackend {
|
|
|
409
420
|
// IF the payload is deemed VALID and the build process has begun
|
|
410
421
|
// {payloadStatus: {status: VALID, latestValidHash: forkchoiceState.headBlockHash, validationError: null}, payloadId: buildProcessId}
|
|
411
422
|
return {
|
|
412
|
-
payloadStatus: {
|
|
423
|
+
payloadStatus: {
|
|
424
|
+
status: ExecutionPayloadStatus.VALID,
|
|
425
|
+
latestValidHash: null,
|
|
426
|
+
validationError: null,
|
|
427
|
+
inclusionListSatisfied: true,
|
|
428
|
+
},
|
|
413
429
|
payloadId: String(payloadId as number),
|
|
414
430
|
};
|
|
415
431
|
}
|
|
@@ -418,7 +434,12 @@ export class ExecutionEngineMockBackend implements JsonRpcBackend {
|
|
|
418
434
|
// IF the payload is deemed VALID and a build process hasn't been started
|
|
419
435
|
// {payloadStatus: {status: VALID, latestValidHash: forkchoiceState.headBlockHash, validationError: null}, payloadId: null}
|
|
420
436
|
return {
|
|
421
|
-
payloadStatus: {
|
|
437
|
+
payloadStatus: {
|
|
438
|
+
status: ExecutionPayloadStatus.VALID,
|
|
439
|
+
latestValidHash: null,
|
|
440
|
+
validationError: null,
|
|
441
|
+
inclusionListSatisfied: true,
|
|
442
|
+
},
|
|
422
443
|
payloadId: null,
|
|
423
444
|
};
|
|
424
445
|
}
|
|
@@ -487,6 +508,10 @@ export class ExecutionEngineMockBackend implements JsonRpcBackend {
|
|
|
487
508
|
return null;
|
|
488
509
|
}
|
|
489
510
|
|
|
511
|
+
private getInclusionList(): EngineApiRpcReturnTypes["engine_getInclusionListV1"] {
|
|
512
|
+
return [];
|
|
513
|
+
}
|
|
514
|
+
|
|
490
515
|
private timestampToFork(timestamp: number): ForkPostBellatrix {
|
|
491
516
|
if (timestamp >= this.gloasForkTimestamp) return ForkName.gloas;
|
|
492
517
|
if (timestamp >= this.fuluForkTimestamp) return ForkName.fulu;
|
|
@@ -1,4 +1,6 @@
|
|
|
1
|
+
import {byteArrayEquals} from "@chainsafe/ssz";
|
|
1
2
|
import {SLOTS_PER_EPOCH} from "@lodestar/params";
|
|
3
|
+
import {bellatrix} from "@lodestar/types";
|
|
2
4
|
import {pruneSetToMax} from "@lodestar/utils";
|
|
3
5
|
import {PayloadAttributesRpc} from "./types.js";
|
|
4
6
|
import {DATA, QUANTITY} from "./utils.js";
|
|
@@ -17,13 +19,18 @@ export type WithdrawalV1 = {
|
|
|
17
19
|
amount: QUANTITY;
|
|
18
20
|
};
|
|
19
21
|
|
|
20
|
-
type FcuAttributes = {headBlockHash: DATA
|
|
22
|
+
type FcuAttributes = {headBlockHash: DATA} & Omit<PayloadAttributesRpc, "withdrawals" | "inclusionListTransactions"> & {
|
|
23
|
+
inclusionListTransactions?: bellatrix.Transactions;
|
|
24
|
+
};
|
|
21
25
|
|
|
22
26
|
export class PayloadIdCache {
|
|
23
|
-
private readonly payloadIdByFcuAttributes = new Map<
|
|
27
|
+
private readonly payloadIdByFcuAttributes = new Map<
|
|
28
|
+
string,
|
|
29
|
+
{payloadId: PayloadId; fullKey: string; inclusionListTransactions?: bellatrix.Transactions}
|
|
30
|
+
>();
|
|
24
31
|
|
|
25
|
-
getFullKey({headBlockHash,
|
|
26
|
-
return `${headBlockHash}-${
|
|
32
|
+
getFullKey({headBlockHash, timestamp, prevRandao, suggestedFeeRecipient}: FcuAttributes): string {
|
|
33
|
+
return `${headBlockHash}-${timestamp}-${prevRandao}-${suggestedFeeRecipient}`;
|
|
27
34
|
}
|
|
28
35
|
getKey({timestamp}: Pick<FcuAttributes, "timestamp">): string {
|
|
29
36
|
return timestamp;
|
|
@@ -37,7 +44,8 @@ export class PayloadIdCache {
|
|
|
37
44
|
add(fcuAttributes: FcuAttributes, payloadId: PayloadId): void {
|
|
38
45
|
const key = this.getKey(fcuAttributes);
|
|
39
46
|
const fullKey = this.getFullKey(fcuAttributes);
|
|
40
|
-
|
|
47
|
+
const {inclusionListTransactions} = fcuAttributes;
|
|
48
|
+
this.payloadIdByFcuAttributes.set(key, {payloadId, fullKey, inclusionListTransactions});
|
|
41
49
|
}
|
|
42
50
|
|
|
43
51
|
prune(): void {
|
|
@@ -49,6 +57,16 @@ export class PayloadIdCache {
|
|
|
49
57
|
const key = this.getKey(fcuAttributes);
|
|
50
58
|
const fullKey = this.getFullKey(fcuAttributes);
|
|
51
59
|
const payloadInfo = this.payloadIdByFcuAttributes.get(key);
|
|
52
|
-
return payloadInfo?.fullKey === fullKey
|
|
60
|
+
return payloadInfo?.fullKey === fullKey &&
|
|
61
|
+
isSameInclusionList(payloadInfo.inclusionListTransactions, fcuAttributes.inclusionListTransactions)
|
|
62
|
+
? payloadInfo.payloadId
|
|
63
|
+
: undefined;
|
|
53
64
|
}
|
|
54
65
|
}
|
|
66
|
+
|
|
67
|
+
function isSameInclusionList(a?: bellatrix.Transactions, b?: bellatrix.Transactions): boolean {
|
|
68
|
+
if (a === undefined || b === undefined) {
|
|
69
|
+
return a === b;
|
|
70
|
+
}
|
|
71
|
+
return byteArrayEquals(a.bytes, b.bytes);
|
|
72
|
+
}
|
|
@@ -1,6 +1,16 @@
|
|
|
1
1
|
import {Type} from "@chainsafe/ssz";
|
|
2
2
|
import {CELLS_PER_EXT_BLOB, ForkName, ForkSeq, isForkPostBellatrix} from "@lodestar/params";
|
|
3
|
-
import {
|
|
3
|
+
import {
|
|
4
|
+
ExecutionPayload,
|
|
5
|
+
ExecutionRequests,
|
|
6
|
+
Root,
|
|
7
|
+
RootHex,
|
|
8
|
+
bellatrix,
|
|
9
|
+
capella,
|
|
10
|
+
deneb,
|
|
11
|
+
electra,
|
|
12
|
+
gloas,
|
|
13
|
+
} from "@lodestar/types";
|
|
4
14
|
import {BlobAndProof} from "@lodestar/types/deneb";
|
|
5
15
|
import {BlobAndProofV2} from "@lodestar/types/fulu";
|
|
6
16
|
import {EndTimer, LodestarError, fromHex, strip0xPrefix, toHex, toRootHex} from "@lodestar/utils";
|
|
@@ -9,8 +19,10 @@ import {
|
|
|
9
19
|
ClientCode,
|
|
10
20
|
ClientVersion,
|
|
11
21
|
ExecutionPayloadStatus,
|
|
22
|
+
ForkchoiceUpdatedResult,
|
|
12
23
|
PayloadAttributes,
|
|
13
24
|
PayloadId,
|
|
25
|
+
PayloadStatusResult,
|
|
14
26
|
VersionedHashes,
|
|
15
27
|
} from "./interface.js";
|
|
16
28
|
import {JsonRpcHttpClientEventEmitter, ReqOpts} from "./jsonRpcHttpClient.js";
|
|
@@ -47,7 +59,7 @@ import {
|
|
|
47
59
|
PayloadStatusSsz,
|
|
48
60
|
executionForkName,
|
|
49
61
|
} from "./sszTypes.js";
|
|
50
|
-
import {
|
|
62
|
+
import {GetPayloadResult, IEngineTransport} from "./transport.js";
|
|
51
63
|
import {EngineTransportMetrics} from "./transportMetrics.js";
|
|
52
64
|
import {
|
|
53
65
|
ExecutionPayloadBodyV2,
|
|
@@ -454,6 +466,10 @@ export class RestEngineTransport implements IEngineTransport {
|
|
|
454
466
|
};
|
|
455
467
|
});
|
|
456
468
|
}
|
|
469
|
+
|
|
470
|
+
getInclusionList(): Promise<bellatrix.Transactions> {
|
|
471
|
+
throw Error("engine_getInclusionListV1 is not available over the REST engine API");
|
|
472
|
+
}
|
|
457
473
|
}
|
|
458
474
|
|
|
459
475
|
function toPayloadAttributesBellatrix(attributes: PayloadAttributes) {
|
|
@@ -1,22 +1,18 @@
|
|
|
1
1
|
import {ForkName} from "@lodestar/params";
|
|
2
|
-
import {BlobsBundle, ExecutionPayload, ExecutionRequests, Root, RootHex, Wei} from "@lodestar/types";
|
|
2
|
+
import {BlobsBundle, ExecutionPayload, ExecutionRequests, Root, RootHex, Wei, bellatrix} from "@lodestar/types";
|
|
3
3
|
import {BlobAndProof} from "@lodestar/types/deneb";
|
|
4
4
|
import {BlobAndProofV2} from "@lodestar/types/fulu";
|
|
5
|
-
import {
|
|
5
|
+
import {
|
|
6
|
+
ClientVersion,
|
|
7
|
+
ForkchoiceUpdatedResult,
|
|
8
|
+
PayloadAttributes,
|
|
9
|
+
PayloadId,
|
|
10
|
+
PayloadStatusResult,
|
|
11
|
+
VersionedHashes,
|
|
12
|
+
} from "./interface.js";
|
|
6
13
|
import {JsonRpcHttpClientEventEmitter} from "./jsonRpcHttpClient.js";
|
|
7
14
|
import {ExecutionPayloadBodyV2} from "./types.js";
|
|
8
15
|
|
|
9
|
-
export type PayloadStatusResult = {
|
|
10
|
-
status: ExecutionPayloadStatus;
|
|
11
|
-
latestValidHash: RootHex | null;
|
|
12
|
-
validationError: string | null;
|
|
13
|
-
};
|
|
14
|
-
|
|
15
|
-
export type ForkchoiceUpdatedResult = {
|
|
16
|
-
payloadStatus: PayloadStatusResult;
|
|
17
|
-
payloadId: PayloadId | null;
|
|
18
|
-
};
|
|
19
|
-
|
|
20
16
|
export type GetPayloadResult = {
|
|
21
17
|
executionPayload: ExecutionPayload;
|
|
22
18
|
executionPayloadValue: Wei;
|
|
@@ -38,7 +34,8 @@ export interface IEngineTransport {
|
|
|
38
34
|
executionPayload: ExecutionPayload,
|
|
39
35
|
versionedHashes?: VersionedHashes,
|
|
40
36
|
parentBeaconBlockRoot?: Root,
|
|
41
|
-
executionRequests?: ExecutionRequests
|
|
37
|
+
executionRequests?: ExecutionRequests,
|
|
38
|
+
inclusionListTransactions?: bellatrix.Transactions
|
|
42
39
|
): Promise<PayloadStatusResult>;
|
|
43
40
|
|
|
44
41
|
forkchoiceUpdated(
|
|
@@ -58,4 +55,6 @@ export interface IEngineTransport {
|
|
|
58
55
|
getBlobsV2(versionedHashes: VersionedHashes, buffers?: Uint8Array[]): Promise<BlobAndProofV2[] | null>;
|
|
59
56
|
|
|
60
57
|
getClientVersion(clientVersion: ClientVersion): Promise<ClientVersion[]>;
|
|
58
|
+
|
|
59
|
+
getInclusionList(): Promise<bellatrix.Transactions>;
|
|
61
60
|
}
|