@lodestar/beacon-node 1.42.0-dev.4411584fd8 → 1.42.0-dev.47afaa6bb7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/api/impl/beacon/blocks/index.d.ts.map +1 -1
- package/lib/api/impl/beacon/blocks/index.js +60 -29
- package/lib/api/impl/beacon/blocks/index.js.map +1 -1
- package/lib/api/impl/beacon/pool/index.d.ts.map +1 -1
- package/lib/api/impl/beacon/pool/index.js +5 -1
- 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 +38 -40
- package/lib/api/impl/beacon/state/index.js.map +1 -1
- package/lib/api/impl/beacon/state/utils.d.ts +4 -4
- package/lib/api/impl/beacon/state/utils.d.ts.map +1 -1
- package/lib/api/impl/beacon/state/utils.js +7 -10
- package/lib/api/impl/beacon/state/utils.js.map +1 -1
- package/lib/api/impl/debug/index.js.map +1 -1
- package/lib/api/impl/lodestar/index.d.ts.map +1 -1
- package/lib/api/impl/lodestar/index.js +8 -6
- package/lib/api/impl/lodestar/index.js.map +1 -1
- package/lib/api/impl/proof/index.d.ts.map +1 -1
- package/lib/api/impl/proof/index.js +2 -6
- package/lib/api/impl/proof/index.js.map +1 -1
- package/lib/api/impl/validator/index.d.ts.map +1 -1
- package/lib/api/impl/validator/index.js +35 -29
- package/lib/api/impl/validator/index.js.map +1 -1
- package/lib/api/impl/validator/utils.d.ts +2 -2
- package/lib/api/impl/validator/utils.d.ts.map +1 -1
- package/lib/api/impl/validator/utils.js +3 -3
- package/lib/api/impl/validator/utils.js.map +1 -1
- package/lib/chain/ColumnReconstructionTracker.d.ts +2 -1
- package/lib/chain/ColumnReconstructionTracker.d.ts.map +1 -1
- package/lib/chain/ColumnReconstructionTracker.js +5 -5
- package/lib/chain/ColumnReconstructionTracker.js.map +1 -1
- package/lib/chain/GetBlobsTracker.d.ts +2 -1
- package/lib/chain/GetBlobsTracker.d.ts.map +1 -1
- package/lib/chain/GetBlobsTracker.js +14 -12
- 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/historicalState/getHistoricalState.d.ts +3 -7
- package/lib/chain/archiveStore/historicalState/getHistoricalState.d.ts.map +1 -1
- package/lib/chain/archiveStore/historicalState/getHistoricalState.js +8 -26
- package/lib/chain/archiveStore/historicalState/getHistoricalState.js.map +1 -1
- package/lib/chain/archiveStore/historicalState/historicalStateRegen.d.ts +2 -2
- package/lib/chain/archiveStore/historicalState/historicalStateRegen.d.ts.map +1 -1
- package/lib/chain/archiveStore/historicalState/historicalStateRegen.js +1 -0
- package/lib/chain/archiveStore/historicalState/historicalStateRegen.js.map +1 -1
- package/lib/chain/archiveStore/historicalState/types.d.ts +2 -0
- package/lib/chain/archiveStore/historicalState/types.d.ts.map +1 -1
- package/lib/chain/archiveStore/historicalState/types.js.map +1 -1
- package/lib/chain/archiveStore/historicalState/worker.js +1 -3
- package/lib/chain/archiveStore/historicalState/worker.js.map +1 -1
- package/lib/chain/archiveStore/interface.d.ts +1 -0
- package/lib/chain/archiveStore/interface.d.ts.map +1 -1
- package/lib/chain/balancesCache.d.ts +2 -2
- package/lib/chain/balancesCache.d.ts.map +1 -1
- package/lib/chain/balancesCache.js +4 -4
- package/lib/chain/balancesCache.js.map +1 -1
- package/lib/chain/blocks/blockInput/blockInput.d.ts +5 -5
- package/lib/chain/blocks/blockInput/blockInput.d.ts.map +1 -1
- package/lib/chain/blocks/blockInput/blockInput.js.map +1 -1
- package/lib/chain/blocks/blockInput/types.d.ts +5 -4
- package/lib/chain/blocks/blockInput/types.d.ts.map +1 -1
- package/lib/chain/blocks/blockInput/types.js +1 -0
- package/lib/chain/blocks/blockInput/types.js.map +1 -1
- package/lib/chain/blocks/importBlock.d.ts +3 -3
- package/lib/chain/blocks/importBlock.d.ts.map +1 -1
- package/lib/chain/blocks/importBlock.js +54 -24
- package/lib/chain/blocks/importBlock.js.map +1 -1
- package/lib/chain/blocks/importExecutionPayload.d.ts +50 -0
- package/lib/chain/blocks/importExecutionPayload.d.ts.map +1 -0
- package/lib/chain/blocks/importExecutionPayload.js +195 -0
- package/lib/chain/blocks/importExecutionPayload.js.map +1 -0
- package/lib/chain/blocks/index.d.ts.map +1 -1
- package/lib/chain/blocks/index.js +3 -2
- package/lib/chain/blocks/index.js.map +1 -1
- package/lib/chain/blocks/payloadEnvelopeInput/index.d.ts +3 -0
- package/lib/chain/blocks/payloadEnvelopeInput/index.d.ts.map +1 -0
- package/lib/chain/blocks/payloadEnvelopeInput/index.js +3 -0
- package/lib/chain/blocks/payloadEnvelopeInput/index.js.map +1 -0
- package/lib/chain/blocks/payloadEnvelopeInput/payloadEnvelopeInput.d.ts +88 -0
- package/lib/chain/blocks/payloadEnvelopeInput/payloadEnvelopeInput.d.ts.map +1 -0
- package/lib/chain/blocks/payloadEnvelopeInput/payloadEnvelopeInput.js +279 -0
- package/lib/chain/blocks/payloadEnvelopeInput/payloadEnvelopeInput.js.map +1 -0
- package/lib/chain/blocks/payloadEnvelopeInput/types.d.ts +30 -0
- package/lib/chain/blocks/payloadEnvelopeInput/types.d.ts.map +1 -0
- package/lib/chain/blocks/payloadEnvelopeInput/types.js +11 -0
- package/lib/chain/blocks/payloadEnvelopeInput/types.js.map +1 -0
- package/lib/chain/blocks/payloadEnvelopeProcessor.d.ts +15 -0
- package/lib/chain/blocks/payloadEnvelopeProcessor.d.ts.map +1 -0
- package/lib/chain/blocks/payloadEnvelopeProcessor.js +46 -0
- package/lib/chain/blocks/payloadEnvelopeProcessor.js.map +1 -0
- package/lib/chain/blocks/types.d.ts +28 -15
- package/lib/chain/blocks/types.d.ts.map +1 -1
- package/lib/chain/blocks/types.js.map +1 -1
- package/lib/chain/blocks/utils/checkpoint.d.ts +2 -2
- package/lib/chain/blocks/utils/checkpoint.d.ts.map +1 -1
- package/lib/chain/blocks/utils/checkpoint.js.map +1 -1
- package/lib/chain/blocks/verifyBlock.d.ts +2 -2
- package/lib/chain/blocks/verifyBlock.d.ts.map +1 -1
- package/lib/chain/blocks/verifyBlock.js +4 -4
- package/lib/chain/blocks/verifyBlock.js.map +1 -1
- package/lib/chain/blocks/verifyBlocksExecutionPayloads.d.ts +5 -5
- package/lib/chain/blocks/verifyBlocksExecutionPayloads.d.ts.map +1 -1
- package/lib/chain/blocks/verifyBlocksExecutionPayloads.js +5 -4
- package/lib/chain/blocks/verifyBlocksExecutionPayloads.js.map +1 -1
- package/lib/chain/blocks/verifyBlocksSignatures.d.ts +2 -2
- package/lib/chain/blocks/verifyBlocksSignatures.d.ts.map +1 -1
- package/lib/chain/blocks/verifyBlocksSignatures.js +4 -2
- package/lib/chain/blocks/verifyBlocksSignatures.js.map +1 -1
- package/lib/chain/blocks/verifyBlocksStateTransitionOnly.d.ts +3 -3
- package/lib/chain/blocks/verifyBlocksStateTransitionOnly.d.ts.map +1 -1
- package/lib/chain/blocks/verifyBlocksStateTransitionOnly.js +3 -3
- package/lib/chain/blocks/verifyBlocksStateTransitionOnly.js.map +1 -1
- package/lib/chain/blocks/writePayloadEnvelopeInputToDb.d.ts +12 -0
- package/lib/chain/blocks/writePayloadEnvelopeInputToDb.d.ts.map +1 -0
- package/lib/chain/blocks/writePayloadEnvelopeInputToDb.js +40 -0
- package/lib/chain/blocks/writePayloadEnvelopeInputToDb.js.map +1 -0
- package/lib/chain/chain.d.ts +22 -16
- package/lib/chain/chain.d.ts.map +1 -1
- package/lib/chain/chain.js +142 -69
- package/lib/chain/chain.js.map +1 -1
- package/lib/chain/emitter.d.ts +31 -9
- package/lib/chain/emitter.d.ts.map +1 -1
- package/lib/chain/emitter.js +12 -3
- package/lib/chain/emitter.js.map +1 -1
- package/lib/chain/errors/blockError.d.ts +10 -5
- package/lib/chain/errors/blockError.d.ts.map +1 -1
- package/lib/chain/errors/blockError.js +2 -0
- package/lib/chain/errors/blockError.js.map +1 -1
- package/lib/chain/errors/dataColumnSidecarError.d.ts +31 -1
- package/lib/chain/errors/dataColumnSidecarError.d.ts.map +1 -1
- package/lib/chain/errors/dataColumnSidecarError.js +7 -0
- package/lib/chain/errors/dataColumnSidecarError.js.map +1 -1
- package/lib/chain/errors/executionPayloadEnvelope.d.ts +12 -2
- package/lib/chain/errors/executionPayloadEnvelope.d.ts.map +1 -1
- package/lib/chain/errors/executionPayloadEnvelope.js +3 -1
- package/lib/chain/errors/executionPayloadEnvelope.js.map +1 -1
- package/lib/chain/forkChoice/index.d.ts +4 -4
- package/lib/chain/forkChoice/index.d.ts.map +1 -1
- package/lib/chain/forkChoice/index.js +30 -34
- package/lib/chain/forkChoice/index.js.map +1 -1
- package/lib/chain/initState.d.ts +2 -2
- package/lib/chain/initState.d.ts.map +1 -1
- package/lib/chain/initState.js +1 -1
- package/lib/chain/initState.js.map +1 -1
- package/lib/chain/interface.d.ts +21 -17
- package/lib/chain/interface.d.ts.map +1 -1
- package/lib/chain/lightClient/index.d.ts +2 -2
- package/lib/chain/lightClient/index.d.ts.map +1 -1
- package/lib/chain/lightClient/index.js +11 -4
- package/lib/chain/lightClient/index.js.map +1 -1
- package/lib/chain/opPools/aggregatedAttestationPool.d.ts +6 -6
- package/lib/chain/opPools/aggregatedAttestationPool.d.ts.map +1 -1
- package/lib/chain/opPools/aggregatedAttestationPool.js +13 -13
- package/lib/chain/opPools/aggregatedAttestationPool.js.map +1 -1
- package/lib/chain/opPools/executionPayloadBidPool.d.ts +2 -2
- package/lib/chain/opPools/executionPayloadBidPool.d.ts.map +1 -1
- package/lib/chain/opPools/executionPayloadBidPool.js +2 -2
- package/lib/chain/opPools/executionPayloadBidPool.js.map +1 -1
- package/lib/chain/opPools/opPool.d.ts +3 -3
- package/lib/chain/opPools/opPool.d.ts.map +1 -1
- package/lib/chain/opPools/opPool.js +7 -7
- package/lib/chain/opPools/opPool.js.map +1 -1
- package/lib/chain/opPools/utils.d.ts +2 -2
- 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 +1 -0
- package/lib/chain/options.d.ts.map +1 -1
- package/lib/chain/options.js +1 -0
- package/lib/chain/options.js.map +1 -1
- package/lib/chain/prepareNextSlot.d.ts +2 -2
- package/lib/chain/prepareNextSlot.d.ts.map +1 -1
- package/lib/chain/prepareNextSlot.js +10 -4
- package/lib/chain/prepareNextSlot.js.map +1 -1
- package/lib/chain/produceBlock/computeNewStateRoot.d.ts +4 -4
- package/lib/chain/produceBlock/computeNewStateRoot.d.ts.map +1 -1
- package/lib/chain/produceBlock/computeNewStateRoot.js +14 -10
- package/lib/chain/produceBlock/computeNewStateRoot.js.map +1 -1
- package/lib/chain/produceBlock/produceBlockBody.d.ts +7 -7
- package/lib/chain/produceBlock/produceBlockBody.d.ts.map +1 -1
- package/lib/chain/produceBlock/produceBlockBody.js +32 -17
- package/lib/chain/produceBlock/produceBlockBody.js.map +1 -1
- package/lib/chain/regen/interface.d.ts +15 -13
- package/lib/chain/regen/interface.d.ts.map +1 -1
- package/lib/chain/regen/interface.js +2 -0
- package/lib/chain/regen/interface.js.map +1 -1
- package/lib/chain/regen/queued.d.ts +14 -14
- package/lib/chain/regen/queued.d.ts.map +1 -1
- package/lib/chain/regen/queued.js.map +1 -1
- package/lib/chain/regen/regen.d.ts +6 -5
- package/lib/chain/regen/regen.d.ts.map +1 -1
- package/lib/chain/regen/regen.js +6 -6
- package/lib/chain/regen/regen.js.map +1 -1
- package/lib/chain/seenCache/index.d.ts +1 -1
- package/lib/chain/seenCache/index.d.ts.map +1 -1
- package/lib/chain/seenCache/index.js +1 -1
- package/lib/chain/seenCache/index.js.map +1 -1
- package/lib/chain/seenCache/seenGossipBlockInput.d.ts +1 -1
- package/lib/chain/seenCache/seenGossipBlockInput.d.ts.map +1 -1
- package/lib/chain/seenCache/seenGossipBlockInput.js +4 -4
- package/lib/chain/seenCache/seenGossipBlockInput.js.map +1 -1
- package/lib/chain/seenCache/seenPayloadEnvelopeInput.d.ts +38 -0
- package/lib/chain/seenCache/seenPayloadEnvelopeInput.d.ts.map +1 -0
- package/lib/chain/seenCache/seenPayloadEnvelopeInput.js +76 -0
- package/lib/chain/seenCache/seenPayloadEnvelopeInput.js.map +1 -0
- package/lib/chain/serializeState.d.ts +2 -2
- package/lib/chain/serializeState.d.ts.map +1 -1
- package/lib/chain/serializeState.js +1 -1
- package/lib/chain/serializeState.js.map +1 -1
- package/lib/chain/shufflingCache.d.ts +2 -2
- package/lib/chain/shufflingCache.d.ts.map +1 -1
- package/lib/chain/shufflingCache.js +3 -4
- package/lib/chain/shufflingCache.js.map +1 -1
- package/lib/chain/stateCache/fifoBlockStateCache.d.ts +6 -6
- package/lib/chain/stateCache/fifoBlockStateCache.d.ts.map +1 -1
- package/lib/chain/stateCache/fifoBlockStateCache.js.map +1 -1
- package/lib/chain/stateCache/persistentCheckpointsCache.d.ts +11 -11
- package/lib/chain/stateCache/persistentCheckpointsCache.d.ts.map +1 -1
- package/lib/chain/stateCache/persistentCheckpointsCache.js +12 -16
- package/lib/chain/stateCache/persistentCheckpointsCache.js.map +1 -1
- package/lib/chain/stateCache/types.d.ts +14 -14
- package/lib/chain/stateCache/types.d.ts.map +1 -1
- package/lib/chain/stateCache/types.js.map +1 -1
- package/lib/chain/validation/attesterSlashing.js +3 -3
- package/lib/chain/validation/attesterSlashing.js.map +1 -1
- package/lib/chain/validation/blobSidecar.js +1 -1
- package/lib/chain/validation/blobSidecar.js.map +1 -1
- package/lib/chain/validation/block.d.ts.map +1 -1
- package/lib/chain/validation/block.js +15 -6
- package/lib/chain/validation/block.js.map +1 -1
- package/lib/chain/validation/blsToExecutionChange.js +2 -2
- package/lib/chain/validation/blsToExecutionChange.js.map +1 -1
- package/lib/chain/validation/dataColumnSidecar.d.ts +11 -4
- package/lib/chain/validation/dataColumnSidecar.d.ts.map +1 -1
- package/lib/chain/validation/dataColumnSidecar.js +185 -6
- package/lib/chain/validation/dataColumnSidecar.js.map +1 -1
- package/lib/chain/validation/executionPayloadBid.d.ts.map +1 -1
- package/lib/chain/validation/executionPayloadBid.js +10 -7
- package/lib/chain/validation/executionPayloadBid.js.map +1 -1
- package/lib/chain/validation/executionPayloadEnvelope.d.ts.map +1 -1
- package/lib/chain/validation/executionPayloadEnvelope.js +34 -19
- package/lib/chain/validation/executionPayloadEnvelope.js.map +1 -1
- package/lib/chain/validation/payloadAttestationMessage.js +5 -3
- package/lib/chain/validation/payloadAttestationMessage.js.map +1 -1
- package/lib/chain/validation/proposerSlashing.js +1 -1
- package/lib/chain/validation/proposerSlashing.js.map +1 -1
- package/lib/chain/validation/signatureSets/contributionAndProof.d.ts +2 -2
- package/lib/chain/validation/signatureSets/contributionAndProof.d.ts.map +1 -1
- package/lib/chain/validation/signatureSets/contributionAndProof.js +1 -1
- package/lib/chain/validation/signatureSets/contributionAndProof.js.map +1 -1
- package/lib/chain/validation/signatureSets/syncCommittee.d.ts +2 -2
- package/lib/chain/validation/signatureSets/syncCommittee.d.ts.map +1 -1
- package/lib/chain/validation/signatureSets/syncCommittee.js +1 -1
- package/lib/chain/validation/signatureSets/syncCommittee.js.map +1 -1
- package/lib/chain/validation/signatureSets/syncCommitteeContribution.d.ts +2 -2
- package/lib/chain/validation/signatureSets/syncCommitteeContribution.d.ts.map +1 -1
- package/lib/chain/validation/signatureSets/syncCommitteeContribution.js.map +1 -1
- package/lib/chain/validation/signatureSets/syncCommitteeSelectionProof.d.ts +2 -2
- package/lib/chain/validation/signatureSets/syncCommitteeSelectionProof.d.ts.map +1 -1
- package/lib/chain/validation/signatureSets/syncCommitteeSelectionProof.js +1 -1
- package/lib/chain/validation/signatureSets/syncCommitteeSelectionProof.js.map +1 -1
- package/lib/chain/validation/syncCommittee.d.ts +4 -4
- package/lib/chain/validation/syncCommittee.d.ts.map +1 -1
- package/lib/chain/validation/syncCommittee.js +17 -12
- package/lib/chain/validation/syncCommittee.js.map +1 -1
- package/lib/chain/validation/syncCommitteeContributionAndProof.d.ts.map +1 -1
- package/lib/chain/validation/syncCommitteeContributionAndProof.js +5 -2
- package/lib/chain/validation/syncCommitteeContributionAndProof.js.map +1 -1
- package/lib/chain/validation/voluntaryExit.d.ts.map +1 -1
- package/lib/chain/validation/voluntaryExit.js +3 -3
- package/lib/chain/validation/voluntaryExit.js.map +1 -1
- package/lib/chain/validatorMonitor.d.ts +5 -4
- package/lib/chain/validatorMonitor.d.ts.map +1 -1
- package/lib/chain/validatorMonitor.js +14 -9
- package/lib/chain/validatorMonitor.js.map +1 -1
- package/lib/db/buckets.d.ts +2 -2
- package/lib/db/buckets.d.ts.map +1 -1
- package/lib/db/buckets.js +2 -2
- package/lib/db/buckets.js.map +1 -1
- package/lib/db/repositories/blockArchiveIndex.d.ts +2 -2
- package/lib/db/repositories/blockArchiveIndex.d.ts.map +1 -1
- package/lib/db/repositories/dataColumnSidecar.d.ts.map +1 -1
- package/lib/db/repositories/dataColumnSidecar.js +4 -2
- package/lib/db/repositories/dataColumnSidecar.js.map +1 -1
- package/lib/db/repositories/dataColumnSidecarArchive.d.ts.map +1 -1
- package/lib/db/repositories/dataColumnSidecarArchive.js +4 -2
- package/lib/db/repositories/dataColumnSidecarArchive.js.map +1 -1
- package/lib/metrics/metrics/lodestar.d.ts +60 -4
- package/lib/metrics/metrics/lodestar.d.ts.map +1 -1
- package/lib/metrics/metrics/lodestar.js +126 -15
- package/lib/metrics/metrics/lodestar.js.map +1 -1
- package/lib/network/gossip/encoding.d.ts.map +1 -1
- package/lib/network/gossip/encoding.js +15 -0
- package/lib/network/gossip/encoding.js.map +1 -1
- package/lib/network/interface.d.ts +7 -4
- 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 +22 -11
- package/lib/network/libp2p/index.js.map +1 -1
- package/lib/network/network.d.ts +7 -4
- package/lib/network/network.d.ts.map +1 -1
- package/lib/network/network.js +12 -3
- package/lib/network/network.js.map +1 -1
- package/lib/network/options.d.ts.map +1 -1
- package/lib/network/options.js +7 -2
- package/lib/network/options.js.map +1 -1
- package/lib/network/processor/extractSlotRootFns.d.ts +1 -1
- package/lib/network/processor/extractSlotRootFns.d.ts.map +1 -1
- package/lib/network/processor/extractSlotRootFns.js +34 -4
- 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 +287 -70
- package/lib/network/processor/gossipHandlers.js.map +1 -1
- package/lib/network/processor/index.d.ts +22 -7
- package/lib/network/processor/index.d.ts.map +1 -1
- package/lib/network/processor/index.js +313 -80
- 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 +9 -0
- package/lib/network/reqresp/ReqRespBeaconNode.js.map +1 -1
- package/lib/network/reqresp/handlers/executionPayloadEnvelopesByRange.d.ts +8 -0
- package/lib/network/reqresp/handlers/executionPayloadEnvelopesByRange.d.ts.map +1 -0
- package/lib/network/reqresp/handlers/executionPayloadEnvelopesByRange.js +69 -0
- package/lib/network/reqresp/handlers/executionPayloadEnvelopesByRange.js.map +1 -0
- package/lib/network/reqresp/handlers/executionPayloadEnvelopesByRoot.d.ts +6 -0
- package/lib/network/reqresp/handlers/executionPayloadEnvelopesByRoot.d.ts.map +1 -0
- package/lib/network/reqresp/handlers/executionPayloadEnvelopesByRoot.js +28 -0
- package/lib/network/reqresp/handlers/executionPayloadEnvelopesByRoot.js.map +1 -0
- package/lib/network/reqresp/handlers/index.d.ts.map +1 -1
- package/lib/network/reqresp/handlers/index.js +11 -1
- package/lib/network/reqresp/handlers/index.js.map +1 -1
- package/lib/network/reqresp/protocols.d.ts +2 -0
- package/lib/network/reqresp/protocols.d.ts.map +1 -1
- package/lib/network/reqresp/protocols.js +10 -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 +8 -0
- package/lib/network/reqresp/rateLimit.js.map +1 -1
- package/lib/network/reqresp/score.d.ts.map +1 -1
- package/lib/network/reqresp/score.js +2 -0
- package/lib/network/reqresp/score.js.map +1 -1
- package/lib/network/reqresp/types.d.ts +10 -4
- package/lib/network/reqresp/types.d.ts.map +1 -1
- package/lib/network/reqresp/types.js +16 -4
- package/lib/network/reqresp/types.js.map +1 -1
- package/lib/node/nodejs.d.ts +2 -2
- package/lib/node/nodejs.d.ts.map +1 -1
- package/lib/node/nodejs.js +3 -3
- package/lib/node/nodejs.js.map +1 -1
- package/lib/node/notifier.d.ts.map +1 -1
- package/lib/node/notifier.js +3 -3
- package/lib/node/notifier.js.map +1 -1
- package/lib/sync/backfill/backfill.d.ts +2 -2
- package/lib/sync/backfill/backfill.d.ts.map +1 -1
- package/lib/sync/backfill/backfill.js +2 -2
- package/lib/sync/backfill/backfill.js.map +1 -1
- package/lib/sync/unknownBlock.d.ts +3 -9
- package/lib/sync/unknownBlock.d.ts.map +1 -1
- package/lib/sync/unknownBlock.js +10 -43
- package/lib/sync/unknownBlock.js.map +1 -1
- package/lib/sync/utils/downloadByRange.d.ts +3 -3
- package/lib/sync/utils/downloadByRange.d.ts.map +1 -1
- package/lib/sync/utils/downloadByRange.js +4 -2
- package/lib/sync/utils/downloadByRange.js.map +1 -1
- package/lib/sync/utils/downloadByRoot.d.ts +3 -3
- package/lib/sync/utils/downloadByRoot.d.ts.map +1 -1
- package/lib/sync/utils/downloadByRoot.js +10 -5
- package/lib/sync/utils/downloadByRoot.js.map +1 -1
- package/lib/util/blobs.d.ts +3 -3
- package/lib/util/blobs.d.ts.map +1 -1
- package/lib/util/blobs.js +21 -10
- package/lib/util/blobs.js.map +1 -1
- package/lib/util/dataColumns.d.ts +18 -11
- package/lib/util/dataColumns.d.ts.map +1 -1
- package/lib/util/dataColumns.js +51 -17
- package/lib/util/dataColumns.js.map +1 -1
- package/lib/util/execution.d.ts +6 -2
- package/lib/util/execution.d.ts.map +1 -1
- package/lib/util/execution.js +49 -25
- package/lib/util/execution.js.map +1 -1
- package/lib/util/sszBytes.d.ts +29 -2
- package/lib/util/sszBytes.d.ts.map +1 -1
- package/lib/util/sszBytes.js +258 -14
- package/lib/util/sszBytes.js.map +1 -1
- package/lib/util/types.d.ts +2 -0
- package/lib/util/types.d.ts.map +1 -1
- package/lib/util/types.js +1 -0
- package/lib/util/types.js.map +1 -1
- package/package.json +16 -16
- package/src/api/impl/beacon/blocks/index.ts +69 -33
- package/src/api/impl/beacon/pool/index.ts +5 -1
- package/src/api/impl/beacon/state/index.ts +43 -55
- package/src/api/impl/beacon/state/utils.ts +11 -25
- package/src/api/impl/debug/index.ts +2 -2
- package/src/api/impl/lodestar/index.ts +8 -8
- package/src/api/impl/proof/index.ts +2 -9
- package/src/api/impl/validator/index.ts +38 -43
- package/src/api/impl/validator/utils.ts +4 -7
- package/src/chain/ColumnReconstructionTracker.ts +6 -5
- package/src/chain/GetBlobsTracker.ts +14 -12
- package/src/chain/archiveStore/archiveStore.ts +1 -0
- package/src/chain/archiveStore/historicalState/getHistoricalState.ts +10 -39
- package/src/chain/archiveStore/historicalState/historicalStateRegen.ts +2 -1
- package/src/chain/archiveStore/historicalState/types.ts +2 -0
- package/src/chain/archiveStore/historicalState/worker.ts +1 -4
- package/src/chain/archiveStore/interface.ts +1 -0
- package/src/chain/balancesCache.ts +5 -11
- package/src/chain/blocks/blockInput/blockInput.ts +8 -8
- package/src/chain/blocks/blockInput/types.ts +5 -4
- package/src/chain/blocks/importBlock.ts +85 -32
- package/src/chain/blocks/importExecutionPayload.ts +277 -0
- package/src/chain/blocks/index.ts +3 -2
- package/src/chain/blocks/payloadEnvelopeInput/index.ts +2 -0
- package/src/chain/blocks/payloadEnvelopeInput/payloadEnvelopeInput.ts +377 -0
- package/src/chain/blocks/payloadEnvelopeInput/types.ts +34 -0
- package/src/chain/blocks/payloadEnvelopeProcessor.ts +61 -0
- package/src/chain/blocks/types.ts +34 -15
- package/src/chain/blocks/utils/checkpoint.ts +2 -2
- package/src/chain/blocks/verifyBlock.ts +5 -10
- package/src/chain/blocks/verifyBlocksExecutionPayloads.ts +10 -14
- package/src/chain/blocks/verifyBlocksSignatures.ts +10 -3
- package/src/chain/blocks/verifyBlocksStateTransitionOnly.ts +6 -8
- package/src/chain/blocks/writePayloadEnvelopeInputToDb.ts +55 -0
- package/src/chain/chain.ts +188 -101
- package/src/chain/emitter.ts +27 -9
- package/src/chain/errors/blockError.ts +8 -5
- package/src/chain/errors/dataColumnSidecarError.ts +32 -1
- package/src/chain/errors/executionPayloadEnvelope.ts +6 -2
- package/src/chain/forkChoice/index.ts +35 -51
- package/src/chain/initState.ts +7 -2
- package/src/chain/interface.ts +22 -18
- package/src/chain/lightClient/index.ts +17 -18
- package/src/chain/opPools/aggregatedAttestationPool.ts +20 -21
- package/src/chain/opPools/executionPayloadBidPool.ts +3 -3
- package/src/chain/opPools/opPool.ts +13 -14
- package/src/chain/opPools/utils.ts +3 -3
- package/src/chain/options.ts +2 -0
- package/src/chain/prepareNextSlot.ts +14 -8
- package/src/chain/produceBlock/computeNewStateRoot.ts +18 -16
- package/src/chain/produceBlock/produceBlockBody.ts +51 -48
- package/src/chain/regen/interface.ts +15 -17
- package/src/chain/regen/queued.ts +16 -20
- package/src/chain/regen/regen.ts +16 -17
- package/src/chain/seenCache/index.ts +1 -1
- package/src/chain/seenCache/seenGossipBlockInput.ts +4 -4
- package/src/chain/seenCache/seenPayloadEnvelopeInput.ts +106 -0
- package/src/chain/serializeState.ts +3 -3
- package/src/chain/shufflingCache.ts +5 -7
- package/src/chain/stateCache/fifoBlockStateCache.ts +7 -7
- package/src/chain/stateCache/persistentCheckpointsCache.ts +27 -42
- package/src/chain/stateCache/types.ts +14 -18
- package/src/chain/validation/attesterSlashing.ts +3 -3
- package/src/chain/validation/blobSidecar.ts +1 -1
- package/src/chain/validation/block.ts +16 -10
- package/src/chain/validation/blsToExecutionChange.ts +2 -2
- package/src/chain/validation/dataColumnSidecar.ts +231 -8
- package/src/chain/validation/executionPayloadBid.ts +10 -10
- package/src/chain/validation/executionPayloadEnvelope.ts +42 -26
- package/src/chain/validation/payloadAttestationMessage.ts +6 -4
- package/src/chain/validation/proposerSlashing.ts +1 -1
- package/src/chain/validation/signatureSets/contributionAndProof.ts +2 -7
- package/src/chain/validation/signatureSets/syncCommittee.ts +2 -7
- package/src/chain/validation/signatureSets/syncCommitteeContribution.ts +2 -2
- package/src/chain/validation/signatureSets/syncCommitteeSelectionProof.ts +2 -7
- package/src/chain/validation/syncCommittee.ts +25 -20
- package/src/chain/validation/syncCommitteeContributionAndProof.ts +9 -10
- package/src/chain/validation/voluntaryExit.ts +3 -8
- package/src/chain/validatorMonitor.ts +25 -13
- package/src/db/buckets.ts +2 -2
- package/src/db/repositories/dataColumnSidecar.ts +4 -2
- package/src/db/repositories/dataColumnSidecarArchive.ts +4 -2
- package/src/metrics/metrics/lodestar.ts +134 -19
- package/src/network/gossip/encoding.ts +16 -0
- package/src/network/interface.ts +18 -4
- package/src/network/libp2p/index.ts +24 -13
- package/src/network/network.ts +39 -8
- package/src/network/options.ts +7 -2
- package/src/network/processor/extractSlotRootFns.ts +43 -4
- package/src/network/processor/gossipHandlers.ts +356 -80
- package/src/network/processor/index.ts +395 -92
- package/src/network/reqresp/ReqRespBeaconNode.ts +13 -0
- package/src/network/reqresp/handlers/executionPayloadEnvelopesByRange.ts +94 -0
- package/src/network/reqresp/handlers/executionPayloadEnvelopesByRoot.ts +43 -0
- package/src/network/reqresp/handlers/index.ts +12 -0
- package/src/network/reqresp/protocols.ts +12 -0
- package/src/network/reqresp/rateLimit.ts +18 -0
- package/src/network/reqresp/score.ts +2 -0
- package/src/network/reqresp/types.ts +26 -5
- package/src/node/nodejs.ts +6 -5
- package/src/node/notifier.ts +5 -6
- package/src/sync/backfill/backfill.ts +3 -3
- package/src/sync/unknownBlock.ts +13 -53
- package/src/sync/utils/downloadByRange.ts +9 -7
- package/src/sync/utils/downloadByRoot.ts +16 -12
- package/src/util/blobs.ts +35 -15
- package/src/util/dataColumns.ts +69 -25
- package/src/util/execution.ts +49 -30
- package/src/util/sszBytes.ts +335 -13
- package/src/util/types.ts +6 -0
- package/lib/chain/seenCache/seenExecutionPayloadEnvelope.d.ts +0 -15
- package/lib/chain/seenCache/seenExecutionPayloadEnvelope.d.ts.map +0 -1
- package/lib/chain/seenCache/seenExecutionPayloadEnvelope.js +0 -28
- package/lib/chain/seenCache/seenExecutionPayloadEnvelope.js.map +0 -1
- package/src/chain/seenCache/seenExecutionPayloadEnvelope.ts +0 -34
package/src/util/sszBytes.ts
CHANGED
|
@@ -8,6 +8,7 @@ import {
|
|
|
8
8
|
ForkSeq,
|
|
9
9
|
MAX_COMMITTEES_PER_SLOT,
|
|
10
10
|
isForkPostElectra,
|
|
11
|
+
isForkPostGloas,
|
|
11
12
|
} from "@lodestar/params";
|
|
12
13
|
import {BLSSignature, CommitteeIndex, RootHex, Slot, ValidatorIndex, ssz} from "@lodestar/types";
|
|
13
14
|
|
|
@@ -16,6 +17,8 @@ export type BlockRootHex = RootHex;
|
|
|
16
17
|
export type AttDataBase64 = string;
|
|
17
18
|
// electra, CommitteeBits
|
|
18
19
|
export type CommitteeBitsBase64 = string;
|
|
20
|
+
/** `attestation.data.index` from gossip-serialized attestations / aggregates */
|
|
21
|
+
export type AttDataIndex = number;
|
|
19
22
|
|
|
20
23
|
// pre-electra
|
|
21
24
|
// class Attestation(Container):
|
|
@@ -56,6 +59,7 @@ const SIGNATURE_SIZE = 96;
|
|
|
56
59
|
const SINGLE_ATTESTATION_ATTDATA_OFFSET = 8 + 8;
|
|
57
60
|
const SINGLE_ATTESTATION_SLOT_OFFSET = SINGLE_ATTESTATION_ATTDATA_OFFSET;
|
|
58
61
|
const SINGLE_ATTESTATION_COMMITTEE_INDEX_OFFSET = 0;
|
|
62
|
+
const SINGLE_ATTESTATION_DATA_INDEX_OFFSET = SINGLE_ATTESTATION_ATTDATA_OFFSET + 8;
|
|
59
63
|
const SINGLE_ATTESTATION_ATTESTER_INDEX_OFFSET = 8;
|
|
60
64
|
const SINGLE_ATTESTATION_BEACON_BLOCK_ROOT_OFFSET = SINGLE_ATTESTATION_ATTDATA_OFFSET + 8 + 8;
|
|
61
65
|
const SINGLE_ATTESTATION_SIGNATURE_OFFSET = SINGLE_ATTESTATION_ATTDATA_OFFSET + ATTESTATION_DATA_SIZE;
|
|
@@ -179,7 +183,7 @@ export function getSlotFromSingleAttestationSerialized(data: Uint8Array): Slot |
|
|
|
179
183
|
|
|
180
184
|
/**
|
|
181
185
|
* Extract committee index from SingleAttestation serialized bytes.
|
|
182
|
-
* Return null if data is not long enough to extract
|
|
186
|
+
* Return null if data is not long enough to extract the committee index.
|
|
183
187
|
*/
|
|
184
188
|
export function getCommitteeIndexFromSingleAttestationSerialized(
|
|
185
189
|
fork: ForkName,
|
|
@@ -200,6 +204,29 @@ export function getCommitteeIndexFromSingleAttestationSerialized(
|
|
|
200
204
|
return getIndexFromOffset(data, VARIABLE_FIELD_OFFSET + SLOT_SIZE);
|
|
201
205
|
}
|
|
202
206
|
|
|
207
|
+
/**
|
|
208
|
+
* Extract data index from SingleAttestation serialized bytes.
|
|
209
|
+
* Post-gloas, `data.index` field is repurposed:
|
|
210
|
+
* - 0 - payload was not available (or attestation is same-slot, where availability is not yet known)
|
|
211
|
+
* - 1 - payload was available
|
|
212
|
+
* Return null if data is not long enough to extract the index.
|
|
213
|
+
*/
|
|
214
|
+
export function getDataIndexFromSingleAttestationSerialized(fork: ForkName, data: Uint8Array): AttDataIndex | null {
|
|
215
|
+
if (isForkPostElectra(fork)) {
|
|
216
|
+
if (data.length !== SINGLE_ATTESTATION_SIZE) {
|
|
217
|
+
return null;
|
|
218
|
+
}
|
|
219
|
+
|
|
220
|
+
return getIndexFromOffset(data, SINGLE_ATTESTATION_DATA_INDEX_OFFSET);
|
|
221
|
+
}
|
|
222
|
+
|
|
223
|
+
if (data.length < VARIABLE_FIELD_OFFSET + SLOT_SIZE + COMMITTEE_INDEX_SIZE) {
|
|
224
|
+
return null;
|
|
225
|
+
}
|
|
226
|
+
|
|
227
|
+
return getIndexFromOffset(data, VARIABLE_FIELD_OFFSET + SLOT_SIZE);
|
|
228
|
+
}
|
|
229
|
+
|
|
203
230
|
/**
|
|
204
231
|
* Extract attester index from SingleAttestation serialized bytes.
|
|
205
232
|
* Return null if data is not long enough to extract index.
|
|
@@ -268,6 +295,7 @@ export function getSignatureFromSingleAttestationSerialized(data: Uint8Array): B
|
|
|
268
295
|
const AGGREGATE_AND_PROOF_OFFSET = 4 + 96;
|
|
269
296
|
const AGGREGATE_OFFSET = AGGREGATE_AND_PROOF_OFFSET + 8 + 4 + 96;
|
|
270
297
|
const SIGNED_AGGREGATE_AND_PROOF_SLOT_OFFSET = AGGREGATE_OFFSET + VARIABLE_FIELD_OFFSET;
|
|
298
|
+
const SIGNED_AGGREGATE_AND_PROOF_ATTESTATION_DATA_INDEX_OFFSET = SIGNED_AGGREGATE_AND_PROOF_SLOT_OFFSET + SLOT_SIZE;
|
|
271
299
|
const SIGNED_AGGREGATE_AND_PROOF_BLOCK_ROOT_OFFSET = SIGNED_AGGREGATE_AND_PROOF_SLOT_OFFSET + 8 + 8;
|
|
272
300
|
|
|
273
301
|
/**
|
|
@@ -302,6 +330,19 @@ export function getBlockRootFromSignedAggregateAndProofSerialized(data: Uint8Arr
|
|
|
302
330
|
return "0x" + blockRootBuf.toString("hex");
|
|
303
331
|
}
|
|
304
332
|
|
|
333
|
+
/**
|
|
334
|
+
* Extract data index from signed aggregate and proof serialized bytes.
|
|
335
|
+
* Return null if data is not long enough to extract the index.
|
|
336
|
+
* This works for both phase0 + electra (index is in attestation data at the same offset).
|
|
337
|
+
*/
|
|
338
|
+
export function getDataIndexFromSignedAggregateAndProofSerialized(data: Uint8Array): AttDataIndex | null {
|
|
339
|
+
if (data.length < SIGNED_AGGREGATE_AND_PROOF_ATTESTATION_DATA_INDEX_OFFSET + COMMITTEE_INDEX_SIZE) {
|
|
340
|
+
return null;
|
|
341
|
+
}
|
|
342
|
+
|
|
343
|
+
return getIndexFromOffset(data, SIGNED_AGGREGATE_AND_PROOF_ATTESTATION_DATA_INDEX_OFFSET);
|
|
344
|
+
}
|
|
345
|
+
|
|
305
346
|
/**
|
|
306
347
|
* Extract AttestationData base64 from SignedAggregateAndProof for electra
|
|
307
348
|
* Return null if data is not long enough
|
|
@@ -368,6 +409,8 @@ export function getAttDataFromSignedAggregateAndProofPhase0(data: Uint8Array): A
|
|
|
368
409
|
* ```
|
|
369
410
|
*/
|
|
370
411
|
const SLOT_BYTES_POSITION_IN_SIGNED_BEACON_BLOCK = VARIABLE_FIELD_OFFSET + SIGNATURE_SIZE;
|
|
412
|
+
// proposer_index is ValidatorIndex = uint64 = 8 bytes
|
|
413
|
+
const PARENT_ROOT_BYTES_POSITION_IN_SIGNED_BEACON_BLOCK = VARIABLE_FIELD_OFFSET + SIGNATURE_SIZE + SLOT_SIZE + 8;
|
|
371
414
|
|
|
372
415
|
export function getSlotFromSignedBeaconBlockSerialized(data: Uint8Array): Slot | null {
|
|
373
416
|
if (data.length < SLOT_BYTES_POSITION_IN_SIGNED_BEACON_BLOCK + SLOT_SIZE) {
|
|
@@ -377,6 +420,68 @@ export function getSlotFromSignedBeaconBlockSerialized(data: Uint8Array): Slot |
|
|
|
377
420
|
return getSlotFromOffset(data, SLOT_BYTES_POSITION_IN_SIGNED_BEACON_BLOCK);
|
|
378
421
|
}
|
|
379
422
|
|
|
423
|
+
export function getParentRootFromSignedBeaconBlockSerialized(data: Uint8Array): RootHex | null {
|
|
424
|
+
if (data.length < PARENT_ROOT_BYTES_POSITION_IN_SIGNED_BEACON_BLOCK + ROOT_SIZE) {
|
|
425
|
+
return null;
|
|
426
|
+
}
|
|
427
|
+
blockRootBuf.set(
|
|
428
|
+
data.subarray(
|
|
429
|
+
PARENT_ROOT_BYTES_POSITION_IN_SIGNED_BEACON_BLOCK,
|
|
430
|
+
PARENT_ROOT_BYTES_POSITION_IN_SIGNED_BEACON_BLOCK + ROOT_SIZE
|
|
431
|
+
)
|
|
432
|
+
);
|
|
433
|
+
return `0x${blockRootBuf.toString("hex")}`;
|
|
434
|
+
}
|
|
435
|
+
|
|
436
|
+
/**
|
|
437
|
+
* Extract parentBlockHash from a GLOAS SignedBeaconBlock by navigating the SSZ offset pointer
|
|
438
|
+
* to the embedded SignedExecutionPayloadBid.
|
|
439
|
+
*
|
|
440
|
+
* Layout (bytes from start of SignedBeaconBlock):
|
|
441
|
+
* [0..4) message offset
|
|
442
|
+
* [4..100) signature (96 B)
|
|
443
|
+
* [100..184) BeaconBlock fixed section: slot(8)+proposer_index(8)+parent_root(32)+state_root(32)+body_offset(4)
|
|
444
|
+
* [184..) BeaconBlockBody
|
|
445
|
+
*
|
|
446
|
+
* BeaconBlockBody (GLOAS) fixed section before signedExecutionPayloadBid offset pointer:
|
|
447
|
+
* randaoReveal(96) + eth1Data(72) + graffiti(32)
|
|
448
|
+
* + proposerSlashings(4) + attesterSlashings(4) + attestations(4) + deposits(4) + voluntaryExits(4)
|
|
449
|
+
* + syncAggregate(160) + blsToExecutionChanges(4) = 384 bytes
|
|
450
|
+
*
|
|
451
|
+
* The 4-byte pointer at byte 568 (= 184+384) gives the offset of SignedExecutionPayloadBid
|
|
452
|
+
* within BeaconBlockBody. parentBlockHash is at that bid's byte 100 (after offset+sig).
|
|
453
|
+
*/
|
|
454
|
+
// BeaconBlock body starts after: msg_offset(4) + sig(96) + slot(8) + proposer_index(8) + parent_root(32) + state_root(32) + body_offset_ptr(4)
|
|
455
|
+
const GLOAS_BODY_START_IN_SIGNED_BEACON_BLOCK =
|
|
456
|
+
VARIABLE_FIELD_OFFSET + SIGNATURE_SIZE + SLOT_SIZE + 8 + ROOT_SIZE + ROOT_SIZE + VARIABLE_FIELD_OFFSET; // = 184
|
|
457
|
+
const GLOAS_SIGNED_BID_OFFSET_POINTER_IN_BODY = 96 + 72 + 32 + 4 + 4 + 4 + 4 + 4 + 160 + 4; // = 384
|
|
458
|
+
const GLOAS_SIGNED_BID_OFFSET_POINTER_IN_SIGNED_BEACON_BLOCK =
|
|
459
|
+
GLOAS_BODY_START_IN_SIGNED_BEACON_BLOCK + GLOAS_SIGNED_BID_OFFSET_POINTER_IN_BODY; // = 568
|
|
460
|
+
// Within SignedExecutionPayloadBid, parentBlockHash is at byte 100 (msg_offset:4 + sig:96)
|
|
461
|
+
const PARENT_BLOCK_HASH_OFFSET_IN_SIGNED_BID = VARIABLE_FIELD_OFFSET + SIGNATURE_SIZE; // = 100
|
|
462
|
+
|
|
463
|
+
// CAUTION: update offsets if BeaconBlockBody fixed fields change after Gloas
|
|
464
|
+
export function getParentBlockHashFromGloasSignedBeaconBlockSerialized(data: Uint8Array): RootHex | null {
|
|
465
|
+
if (data.length < GLOAS_SIGNED_BID_OFFSET_POINTER_IN_SIGNED_BEACON_BLOCK + VARIABLE_FIELD_OFFSET) {
|
|
466
|
+
return null;
|
|
467
|
+
}
|
|
468
|
+
const bidOffset =
|
|
469
|
+
data[GLOAS_SIGNED_BID_OFFSET_POINTER_IN_SIGNED_BEACON_BLOCK] |
|
|
470
|
+
(data[GLOAS_SIGNED_BID_OFFSET_POINTER_IN_SIGNED_BEACON_BLOCK + 1] << 8) |
|
|
471
|
+
(data[GLOAS_SIGNED_BID_OFFSET_POINTER_IN_SIGNED_BEACON_BLOCK + 2] << 16) |
|
|
472
|
+
(data[GLOAS_SIGNED_BID_OFFSET_POINTER_IN_SIGNED_BEACON_BLOCK + 3] << 24);
|
|
473
|
+
|
|
474
|
+
const parentBlockHashStart =
|
|
475
|
+
GLOAS_BODY_START_IN_SIGNED_BEACON_BLOCK + bidOffset + PARENT_BLOCK_HASH_OFFSET_IN_SIGNED_BID;
|
|
476
|
+
|
|
477
|
+
if (data.length < parentBlockHashStart + ROOT_SIZE) {
|
|
478
|
+
return null;
|
|
479
|
+
}
|
|
480
|
+
|
|
481
|
+
blockRootBuf.set(data.subarray(parentBlockHashStart, parentBlockHashStart + ROOT_SIZE));
|
|
482
|
+
return `0x${blockRootBuf.toString("hex")}`;
|
|
483
|
+
}
|
|
484
|
+
|
|
380
485
|
/**
|
|
381
486
|
* class BlobSidecar(Container):
|
|
382
487
|
* index: BlobIndex [fixed - 8 bytes ],
|
|
@@ -398,23 +503,102 @@ export function getSlotFromBlobSidecarSerialized(data: Uint8Array): Slot | null
|
|
|
398
503
|
}
|
|
399
504
|
|
|
400
505
|
/**
|
|
506
|
+
* Pre-Gloas DataColumnSidecar:
|
|
507
|
+
* {
|
|
508
|
+
* index: ColumnIndex [fixed - 8 bytes],
|
|
509
|
+
* column: DataColumn (offset - 4 bytes),
|
|
510
|
+
* kzgCommitments: (offset - 4 bytes),
|
|
511
|
+
* kzgProofs: (offset - 4 bytes),
|
|
512
|
+
* signedBlockHeader: (offset - 4 bytes) -> slot at variable offset after fixed header
|
|
513
|
+
* kzgCommitmentsInclusionProof: (offset - 4 bytes),
|
|
514
|
+
* }
|
|
515
|
+
* Post-Gloas DataColumnSidecar:
|
|
401
516
|
* {
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
517
|
+
* index: ColumnIndex [8 bytes],
|
|
518
|
+
* column: DataColumn (offset - 4 bytes),
|
|
519
|
+
* kzgProofs: (offset - 4 bytes),
|
|
520
|
+
* slot: Slot [8 bytes] - at offset 16,
|
|
521
|
+
* beaconBlockRoot: Root [32 bytes] - at offset 24,
|
|
522
|
+
* }
|
|
523
|
+
*/
|
|
524
|
+
const SLOT_BYTES_POSITION_IN_SIGNED_DATA_COLUMN_SIDECAR_PRE_GLOAS = 20;
|
|
525
|
+
const SLOT_BYTES_POSITION_IN_SIGNED_DATA_COLUMN_SIDECAR_POST_GLOAS = 16;
|
|
526
|
+
const BEACON_BLOCK_ROOT_POSITION_IN_GLOAS_DATA_COLUMN_SIDECAR = 24;
|
|
527
|
+
|
|
528
|
+
export function getSlotFromDataColumnSidecarSerialized(data: Uint8Array, fork: ForkName): Slot | null {
|
|
529
|
+
const offset = isForkPostGloas(fork)
|
|
530
|
+
? SLOT_BYTES_POSITION_IN_SIGNED_DATA_COLUMN_SIDECAR_POST_GLOAS
|
|
531
|
+
: SLOT_BYTES_POSITION_IN_SIGNED_DATA_COLUMN_SIDECAR_PRE_GLOAS;
|
|
532
|
+
|
|
533
|
+
if (data.length < offset + SLOT_SIZE) {
|
|
534
|
+
return null;
|
|
408
535
|
}
|
|
536
|
+
|
|
537
|
+
return getSlotFromOffset(data, offset);
|
|
538
|
+
}
|
|
539
|
+
|
|
540
|
+
export function getBeaconBlockRootFromDataColumnSidecarSerialized(data: Uint8Array): RootHex | null {
|
|
541
|
+
if (data.length < BEACON_BLOCK_ROOT_POSITION_IN_GLOAS_DATA_COLUMN_SIDECAR + ROOT_SIZE) {
|
|
542
|
+
return null;
|
|
543
|
+
}
|
|
544
|
+
|
|
545
|
+
blockRootBuf.set(
|
|
546
|
+
data.subarray(
|
|
547
|
+
BEACON_BLOCK_ROOT_POSITION_IN_GLOAS_DATA_COLUMN_SIDECAR,
|
|
548
|
+
BEACON_BLOCK_ROOT_POSITION_IN_GLOAS_DATA_COLUMN_SIDECAR + ROOT_SIZE
|
|
549
|
+
)
|
|
550
|
+
);
|
|
551
|
+
return "0x" + blockRootBuf.toString("hex");
|
|
552
|
+
}
|
|
553
|
+
|
|
554
|
+
/**
|
|
555
|
+
* SignedExecutionPayloadEnvelope SSZ Layout:
|
|
556
|
+
* ├─ 4 bytes: message offset (points to byte 100)
|
|
557
|
+
* ├─ 96 bytes: signature
|
|
558
|
+
* └─ ExecutionPayloadEnvelope (starts at byte 100):
|
|
559
|
+
* ├─ 4 bytes: payload offset
|
|
560
|
+
* ├─ 4 bytes: executionRequests offset
|
|
561
|
+
* ├─ 8 bytes: builderIndex (offset 108-115)
|
|
562
|
+
* ├─ 32 bytes: beaconBlockRoot (offset 116-147)
|
|
563
|
+
* ├─ 8 bytes: slot (offset 148-155)
|
|
564
|
+
* └─ 32 bytes: stateRoot (offset 156-187)
|
|
409
565
|
*/
|
|
566
|
+
const SIGNED_EXECUTION_PAYLOAD_ENVELOPE_MESSAGE_OFFSET = 4;
|
|
567
|
+
const SIGNED_EXECUTION_PAYLOAD_ENVELOPE_SIGNATURE_SIZE = 96;
|
|
568
|
+
const EXECUTION_PAYLOAD_ENVELOPE_PAYLOAD_OFFSET = 4;
|
|
569
|
+
const EXECUTION_PAYLOAD_ENVELOPE_REQUESTS_OFFSET = 4;
|
|
570
|
+
const EXECUTION_PAYLOAD_ENVELOPE_BUILDER_INDEX_SIZE = 8;
|
|
571
|
+
|
|
572
|
+
const BEACON_BLOCK_ROOT_OFFSET_IN_SIGNED_EXECUTION_PAYLOAD_ENVELOPE =
|
|
573
|
+
SIGNED_EXECUTION_PAYLOAD_ENVELOPE_MESSAGE_OFFSET +
|
|
574
|
+
SIGNED_EXECUTION_PAYLOAD_ENVELOPE_SIGNATURE_SIZE +
|
|
575
|
+
EXECUTION_PAYLOAD_ENVELOPE_PAYLOAD_OFFSET +
|
|
576
|
+
EXECUTION_PAYLOAD_ENVELOPE_REQUESTS_OFFSET +
|
|
577
|
+
EXECUTION_PAYLOAD_ENVELOPE_BUILDER_INDEX_SIZE; // 116
|
|
578
|
+
|
|
579
|
+
const SLOT_OFFSET_IN_SIGNED_EXECUTION_PAYLOAD_ENVELOPE =
|
|
580
|
+
BEACON_BLOCK_ROOT_OFFSET_IN_SIGNED_EXECUTION_PAYLOAD_ENVELOPE + ROOT_SIZE; // 148
|
|
581
|
+
|
|
582
|
+
export function getSlotFromExecutionPayloadEnvelopeSerialized(data: Uint8Array): Slot | null {
|
|
583
|
+
if (data.length < SLOT_OFFSET_IN_SIGNED_EXECUTION_PAYLOAD_ENVELOPE + SLOT_SIZE) {
|
|
584
|
+
return null;
|
|
585
|
+
}
|
|
410
586
|
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
587
|
+
return getSlotFromOffset(data, SLOT_OFFSET_IN_SIGNED_EXECUTION_PAYLOAD_ENVELOPE);
|
|
588
|
+
}
|
|
589
|
+
|
|
590
|
+
export function getBeaconBlockRootFromExecutionPayloadEnvelopeSerialized(data: Uint8Array): RootHex | null {
|
|
591
|
+
if (data.length < BEACON_BLOCK_ROOT_OFFSET_IN_SIGNED_EXECUTION_PAYLOAD_ENVELOPE + ROOT_SIZE) {
|
|
414
592
|
return null;
|
|
415
593
|
}
|
|
416
594
|
|
|
417
|
-
|
|
595
|
+
blockRootBuf.set(
|
|
596
|
+
data.subarray(
|
|
597
|
+
BEACON_BLOCK_ROOT_OFFSET_IN_SIGNED_EXECUTION_PAYLOAD_ENVELOPE,
|
|
598
|
+
BEACON_BLOCK_ROOT_OFFSET_IN_SIGNED_EXECUTION_PAYLOAD_ENVELOPE + ROOT_SIZE
|
|
599
|
+
)
|
|
600
|
+
);
|
|
601
|
+
return "0x" + blockRootBuf.toString("hex");
|
|
418
602
|
}
|
|
419
603
|
|
|
420
604
|
/**
|
|
@@ -447,6 +631,104 @@ export function getSlotFromBeaconStateSerialized(data: Uint8Array): Slot | null
|
|
|
447
631
|
return getSlotFromOffset(data, SLOT_BYTES_POSITION_IN_BEACON_STATE);
|
|
448
632
|
}
|
|
449
633
|
|
|
634
|
+
/**
|
|
635
|
+
* PayloadAttestationMessage: {
|
|
636
|
+
* validatorIndex: ValidatorIndex (8 bytes)
|
|
637
|
+
* data: PayloadAttestationData {
|
|
638
|
+
* beaconBlockRoot: Root (32 bytes) ← offset 8
|
|
639
|
+
* slot: Slot (8 bytes) ← offset 40
|
|
640
|
+
* payloadPresent: Boolean (1 byte)
|
|
641
|
+
* blobDataAvailable: Boolean (1 byte)
|
|
642
|
+
* }
|
|
643
|
+
* signature: BLSSignature (96 bytes)
|
|
644
|
+
* }
|
|
645
|
+
* Fully fixed-size container, no offset table.
|
|
646
|
+
*/
|
|
647
|
+
const PAYLOAD_ATTESTATION_MESSAGE_BEACON_BLOCK_ROOT_OFFSET = 8;
|
|
648
|
+
const PAYLOAD_ATTESTATION_MESSAGE_SLOT_OFFSET = 8 + ROOT_SIZE; // 40
|
|
649
|
+
const PAYLOAD_ATTESTATION_MESSAGE_PAYLOAD_PRESENT_OFFSET = PAYLOAD_ATTESTATION_MESSAGE_SLOT_OFFSET + SLOT_SIZE; // 48
|
|
650
|
+
|
|
651
|
+
export function getSlotFromPayloadAttestationMessageSerialized(data: Uint8Array): Slot | null {
|
|
652
|
+
if (data.length < PAYLOAD_ATTESTATION_MESSAGE_SLOT_OFFSET + SLOT_SIZE) {
|
|
653
|
+
return null;
|
|
654
|
+
}
|
|
655
|
+
return getSlotFromOffset(data, PAYLOAD_ATTESTATION_MESSAGE_SLOT_OFFSET);
|
|
656
|
+
}
|
|
657
|
+
|
|
658
|
+
export function getPayloadPresentFromPayloadAttestationMessageSerialized(data: Uint8Array): boolean | null {
|
|
659
|
+
if (data.length < PAYLOAD_ATTESTATION_MESSAGE_PAYLOAD_PRESENT_OFFSET + 1) {
|
|
660
|
+
return null;
|
|
661
|
+
}
|
|
662
|
+
return data[PAYLOAD_ATTESTATION_MESSAGE_PAYLOAD_PRESENT_OFFSET] !== 0;
|
|
663
|
+
}
|
|
664
|
+
|
|
665
|
+
export function getBlockRootFromPayloadAttestationMessageSerialized(data: Uint8Array): RootHex | null {
|
|
666
|
+
if (data.length < PAYLOAD_ATTESTATION_MESSAGE_BEACON_BLOCK_ROOT_OFFSET + ROOT_SIZE) {
|
|
667
|
+
return null;
|
|
668
|
+
}
|
|
669
|
+
blockRootBuf.set(
|
|
670
|
+
data.subarray(
|
|
671
|
+
PAYLOAD_ATTESTATION_MESSAGE_BEACON_BLOCK_ROOT_OFFSET,
|
|
672
|
+
PAYLOAD_ATTESTATION_MESSAGE_BEACON_BLOCK_ROOT_OFFSET + ROOT_SIZE
|
|
673
|
+
)
|
|
674
|
+
);
|
|
675
|
+
return `0x${blockRootBuf.toString("hex")}`;
|
|
676
|
+
}
|
|
677
|
+
|
|
678
|
+
/**
|
|
679
|
+
* SignedExecutionPayloadBid: {message: ExecutionPayloadBid (variable), signature: BLSSignature (96 bytes)}
|
|
680
|
+
* Fixed part: 4-byte offset + 96-byte signature = 100 bytes
|
|
681
|
+
* message data starts at byte 100
|
|
682
|
+
*
|
|
683
|
+
* ExecutionPayloadBid fixed fields (in order):
|
|
684
|
+
* parentBlockHash: Bytes32 (32 bytes)
|
|
685
|
+
* parentBlockRoot: Root (32 bytes)
|
|
686
|
+
* blockHash: Bytes32 (32 bytes)
|
|
687
|
+
* prevRandao: Bytes32 (32 bytes)
|
|
688
|
+
* feeRecipient: ExecutionAddress(20 bytes)
|
|
689
|
+
* gasLimit: UintBn64 (8 bytes)
|
|
690
|
+
* builderIndex: BuilderIndex (8 bytes)
|
|
691
|
+
* slot: Slot (8 bytes) ← absolute offset 264
|
|
692
|
+
*/
|
|
693
|
+
const SIGNED_EXECUTION_PAYLOAD_BID_PARENT_BLOCK_HASH_OFFSET = VARIABLE_FIELD_OFFSET + SIGNATURE_SIZE; // 100
|
|
694
|
+
const SIGNED_EXECUTION_PAYLOAD_BID_PARENT_BLOCK_ROOT_OFFSET =
|
|
695
|
+
SIGNED_EXECUTION_PAYLOAD_BID_PARENT_BLOCK_HASH_OFFSET + ROOT_SIZE; // 132
|
|
696
|
+
const SIGNED_EXECUTION_PAYLOAD_BID_SLOT_OFFSET =
|
|
697
|
+
VARIABLE_FIELD_OFFSET + SIGNATURE_SIZE + 32 + 32 + 32 + 32 + 20 + 8 + 8; // 264
|
|
698
|
+
|
|
699
|
+
export function getSlotFromSignedExecutionPayloadBidSerialized(data: Uint8Array): Slot | null {
|
|
700
|
+
if (data.length < SIGNED_EXECUTION_PAYLOAD_BID_SLOT_OFFSET + SLOT_SIZE) {
|
|
701
|
+
return null;
|
|
702
|
+
}
|
|
703
|
+
return getSlotFromOffset(data, SIGNED_EXECUTION_PAYLOAD_BID_SLOT_OFFSET);
|
|
704
|
+
}
|
|
705
|
+
|
|
706
|
+
export function getParentBlockHashFromSignedExecutionPayloadBidSerialized(data: Uint8Array): RootHex | null {
|
|
707
|
+
if (data.length < SIGNED_EXECUTION_PAYLOAD_BID_PARENT_BLOCK_HASH_OFFSET + ROOT_SIZE) {
|
|
708
|
+
return null;
|
|
709
|
+
}
|
|
710
|
+
blockRootBuf.set(
|
|
711
|
+
data.subarray(
|
|
712
|
+
SIGNED_EXECUTION_PAYLOAD_BID_PARENT_BLOCK_HASH_OFFSET,
|
|
713
|
+
SIGNED_EXECUTION_PAYLOAD_BID_PARENT_BLOCK_HASH_OFFSET + ROOT_SIZE
|
|
714
|
+
)
|
|
715
|
+
);
|
|
716
|
+
return `0x${blockRootBuf.toString("hex")}`;
|
|
717
|
+
}
|
|
718
|
+
|
|
719
|
+
export function getParentBlockRootFromSignedExecutionPayloadBidSerialized(data: Uint8Array): RootHex | null {
|
|
720
|
+
if (data.length < SIGNED_EXECUTION_PAYLOAD_BID_PARENT_BLOCK_ROOT_OFFSET + ROOT_SIZE) {
|
|
721
|
+
return null;
|
|
722
|
+
}
|
|
723
|
+
blockRootBuf.set(
|
|
724
|
+
data.subarray(
|
|
725
|
+
SIGNED_EXECUTION_PAYLOAD_BID_PARENT_BLOCK_ROOT_OFFSET,
|
|
726
|
+
SIGNED_EXECUTION_PAYLOAD_BID_PARENT_BLOCK_ROOT_OFFSET + ROOT_SIZE
|
|
727
|
+
)
|
|
728
|
+
);
|
|
729
|
+
return `0x${blockRootBuf.toString("hex")}`;
|
|
730
|
+
}
|
|
731
|
+
|
|
450
732
|
/**
|
|
451
733
|
* Read only the first 4 bytes of Slot, max value is 4,294,967,295 will be reached 1634 years after genesis
|
|
452
734
|
*
|
|
@@ -482,9 +764,49 @@ export function getBlobKzgCommitmentsCountFromSignedBeaconBlockSerialized(
|
|
|
482
764
|
if (slot === null) throw new Error("Can not parse the slot from block bytes");
|
|
483
765
|
|
|
484
766
|
if (config.getForkSeq(slot) < ForkSeq.deneb) return 0;
|
|
767
|
+
const forkName = config.getForkName(slot);
|
|
768
|
+
|
|
769
|
+
if (isForkPostGloas(forkName)) {
|
|
770
|
+
// Gloas stores commitments under signedExecutionPayloadBid.message.blobKzgCommitments.
|
|
771
|
+
// Navigate the offset chain: SignedBeaconBlock → message → body → signedExecutionPayloadBid → message → blobKzgCommitments
|
|
772
|
+
const {SignedBeaconBlock: GloasSignedBlock, BeaconBlock: GloasBlock, BeaconBlockBody: GloasBody} = ssz[forkName];
|
|
773
|
+
const {SignedExecutionPayloadBid, ExecutionPayloadBid} = ssz[forkName];
|
|
774
|
+
const commitmentSize = ssz.deneb.KZGCommitment.fixedSize;
|
|
775
|
+
|
|
776
|
+
const view = new DataView(blockBytes.buffer, blockBytes.byteOffset, blockBytes.byteLength);
|
|
777
|
+
|
|
778
|
+
const signedBlockRanges = GloasSignedBlock.getFieldRanges(view, 0, blockBytes.length);
|
|
779
|
+
const messageIdx = Object.keys(GloasSignedBlock.fields).indexOf("message");
|
|
780
|
+
const messageRange = signedBlockRanges[messageIdx];
|
|
781
|
+
|
|
782
|
+
const blockRanges = GloasBlock.getFieldRanges(view, messageRange.start, messageRange.end);
|
|
783
|
+
const bodyIdx = Object.keys(GloasBlock.fields).indexOf("body");
|
|
784
|
+
const bodyRange = blockRanges[bodyIdx];
|
|
785
|
+
const bodyStart = messageRange.start + bodyRange.start;
|
|
786
|
+
const bodyEnd = messageRange.start + bodyRange.end;
|
|
787
|
+
|
|
788
|
+
const bodyRanges = GloasBody.getFieldRanges(view, bodyStart, bodyEnd);
|
|
789
|
+
const bidIdx = Object.keys(GloasBody.fields).indexOf("signedExecutionPayloadBid");
|
|
790
|
+
const bidRange = bodyRanges[bidIdx];
|
|
791
|
+
const bidStart = bodyStart + bidRange.start;
|
|
792
|
+
const bidEnd = bodyStart + bidRange.end;
|
|
793
|
+
|
|
794
|
+
const bidRanges = SignedExecutionPayloadBid.getFieldRanges(view, bidStart, bidEnd);
|
|
795
|
+
const bidMsgIdx = Object.keys(SignedExecutionPayloadBid.fields).indexOf("message");
|
|
796
|
+
const bidMsgRange = bidRanges[bidMsgIdx];
|
|
797
|
+
const bidMsgStart = bidStart + bidMsgRange.start;
|
|
798
|
+
const bidMsgEnd = bidStart + bidMsgRange.end;
|
|
799
|
+
|
|
800
|
+
const execBidRanges = ExecutionPayloadBid.getFieldRanges(view, bidMsgStart, bidMsgEnd);
|
|
801
|
+
const commitmentsIdx = Object.keys(ExecutionPayloadBid.fields).indexOf("blobKzgCommitments");
|
|
802
|
+
const commitmentsRange = execBidRanges[commitmentsIdx];
|
|
803
|
+
|
|
804
|
+
const start = bidMsgStart + commitmentsRange.start;
|
|
805
|
+
const end = bidMsgStart + commitmentsRange.end;
|
|
806
|
+
return Math.round(((end > blockBytes.byteLength ? blockBytes.byteLength : end) - start) / commitmentSize);
|
|
807
|
+
}
|
|
485
808
|
|
|
486
|
-
const {SignedBeaconBlock, BeaconBlock, BeaconBlockBody, KZGCommitment} =
|
|
487
|
-
ssz[config.getForkName(slot) as ForkPostDeneb];
|
|
809
|
+
const {SignedBeaconBlock, BeaconBlock, BeaconBlockBody, KZGCommitment} = ssz[forkName as ForkPostDeneb];
|
|
488
810
|
|
|
489
811
|
const view = new DataView(blockBytes.buffer, blockBytes.byteOffset, blockBytes.byteLength);
|
|
490
812
|
const singedBlockFieldRanges = SignedBeaconBlock.getFieldRanges(view, 0, blockBytes.length);
|
package/src/util/types.ts
CHANGED
|
@@ -29,3 +29,9 @@ export type BlobSidecarsByRootRequest = ValueOf<ReturnType<typeof BlobSidecarsBy
|
|
|
29
29
|
export const DataColumnSidecarsByRootRequestType = (config: BeaconConfig) =>
|
|
30
30
|
new ListCompositeType(ssz.fulu.DataColumnsByRootIdentifier, config.MAX_REQUEST_BLOCKS_DENEB);
|
|
31
31
|
export type DataColumnSidecarsByRootRequest = ValueOf<ReturnType<typeof DataColumnSidecarsByRootRequestType>>;
|
|
32
|
+
|
|
33
|
+
export const ExecutionPayloadEnvelopesByRootRequestType = (config: BeaconConfig) =>
|
|
34
|
+
new ListCompositeType(ssz.Root, config.MAX_REQUEST_PAYLOADS);
|
|
35
|
+
export type ExecutionPayloadEnvelopesByRootRequest = ValueOf<
|
|
36
|
+
ReturnType<typeof ExecutionPayloadEnvelopesByRootRequestType>
|
|
37
|
+
>;
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
import { RootHex, Slot } from "@lodestar/types";
|
|
2
|
-
/**
|
|
3
|
-
* Cache to prevent processing multiple execution payload envelopes for the same block root.
|
|
4
|
-
* Only one builder qualifies to submit an execution payload for a given slot.
|
|
5
|
-
* We only keep track of envelopes of unfinalized slots.
|
|
6
|
-
* [IGNORE] The node has not seen another valid `SignedExecutionPayloadEnvelope` for this block root.
|
|
7
|
-
*/
|
|
8
|
-
export declare class SeenExecutionPayloadEnvelopes {
|
|
9
|
-
private readonly slotByBlockRoot;
|
|
10
|
-
private finalizedSlot;
|
|
11
|
-
isKnown(blockRoot: RootHex): boolean;
|
|
12
|
-
add(blockRoot: RootHex, slot: Slot): void;
|
|
13
|
-
prune(finalizedSlot: Slot): void;
|
|
14
|
-
}
|
|
15
|
-
//# sourceMappingURL=seenExecutionPayloadEnvelope.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"seenExecutionPayloadEnvelope.d.ts","sourceRoot":"","sources":["../../../src/chain/seenCache/seenExecutionPayloadEnvelope.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,OAAO,EAAE,IAAI,EAAC,MAAM,iBAAiB,CAAC;AAE9C;;;;;GAKG;AACH,qBAAa,6BAA6B;IACxC,OAAO,CAAC,QAAQ,CAAC,eAAe,CAA4B;IAC5D,OAAO,CAAC,aAAa,CAAW;IAEhC,OAAO,CAAC,SAAS,EAAE,OAAO,GAAG,OAAO,CAEnC;IAED,GAAG,CAAC,SAAS,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,GAAG,IAAI,CAMxC;IAED,KAAK,CAAC,aAAa,EAAE,IAAI,GAAG,IAAI,CAQ/B;CACF"}
|
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Cache to prevent processing multiple execution payload envelopes for the same block root.
|
|
3
|
-
* Only one builder qualifies to submit an execution payload for a given slot.
|
|
4
|
-
* We only keep track of envelopes of unfinalized slots.
|
|
5
|
-
* [IGNORE] The node has not seen another valid `SignedExecutionPayloadEnvelope` for this block root.
|
|
6
|
-
*/
|
|
7
|
-
export class SeenExecutionPayloadEnvelopes {
|
|
8
|
-
slotByBlockRoot = new Map();
|
|
9
|
-
finalizedSlot = 0;
|
|
10
|
-
isKnown(blockRoot) {
|
|
11
|
-
return this.slotByBlockRoot.has(blockRoot);
|
|
12
|
-
}
|
|
13
|
-
add(blockRoot, slot) {
|
|
14
|
-
if (slot < this.finalizedSlot) {
|
|
15
|
-
throw Error(`slot ${slot} < finalizedSlot ${this.finalizedSlot}`);
|
|
16
|
-
}
|
|
17
|
-
this.slotByBlockRoot.set(blockRoot, slot);
|
|
18
|
-
}
|
|
19
|
-
prune(finalizedSlot) {
|
|
20
|
-
this.finalizedSlot = finalizedSlot;
|
|
21
|
-
for (const [blockRoot, slot] of this.slotByBlockRoot.entries()) {
|
|
22
|
-
if (slot < finalizedSlot) {
|
|
23
|
-
this.slotByBlockRoot.delete(blockRoot);
|
|
24
|
-
}
|
|
25
|
-
}
|
|
26
|
-
}
|
|
27
|
-
}
|
|
28
|
-
//# sourceMappingURL=seenExecutionPayloadEnvelope.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"seenExecutionPayloadEnvelope.js","sourceRoot":"","sources":["../../../src/chain/seenCache/seenExecutionPayloadEnvelope.ts"],"names":[],"mappings":"AAEA;;;;;GAKG;AACH,MAAM,OAAO,6BAA6B;IACvB,eAAe,GAAG,IAAI,GAAG,EAAiB,CAAC;IACpD,aAAa,GAAS,CAAC,CAAC;IAEhC,OAAO,CAAC,SAAkB,EAAW;QACnC,OAAO,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IAAA,CAC5C;IAED,GAAG,CAAC,SAAkB,EAAE,IAAU,EAAQ;QACxC,IAAI,IAAI,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;YAC9B,MAAM,KAAK,CAAC,QAAQ,IAAI,oBAAoB,IAAI,CAAC,aAAa,EAAE,CAAC,CAAC;QACpE,CAAC;QAED,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;IAAA,CAC3C;IAED,KAAK,CAAC,aAAmB,EAAQ;QAC/B,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;QAEnC,KAAK,MAAM,CAAC,SAAS,EAAE,IAAI,CAAC,IAAI,IAAI,CAAC,eAAe,CAAC,OAAO,EAAE,EAAE,CAAC;YAC/D,IAAI,IAAI,GAAG,aAAa,EAAE,CAAC;gBACzB,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;YACzC,CAAC;QACH,CAAC;IAAA,CACF;CACF"}
|
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
import {RootHex, Slot} from "@lodestar/types";
|
|
2
|
-
|
|
3
|
-
/**
|
|
4
|
-
* Cache to prevent processing multiple execution payload envelopes for the same block root.
|
|
5
|
-
* Only one builder qualifies to submit an execution payload for a given slot.
|
|
6
|
-
* We only keep track of envelopes of unfinalized slots.
|
|
7
|
-
* [IGNORE] The node has not seen another valid `SignedExecutionPayloadEnvelope` for this block root.
|
|
8
|
-
*/
|
|
9
|
-
export class SeenExecutionPayloadEnvelopes {
|
|
10
|
-
private readonly slotByBlockRoot = new Map<RootHex, Slot>();
|
|
11
|
-
private finalizedSlot: Slot = 0;
|
|
12
|
-
|
|
13
|
-
isKnown(blockRoot: RootHex): boolean {
|
|
14
|
-
return this.slotByBlockRoot.has(blockRoot);
|
|
15
|
-
}
|
|
16
|
-
|
|
17
|
-
add(blockRoot: RootHex, slot: Slot): void {
|
|
18
|
-
if (slot < this.finalizedSlot) {
|
|
19
|
-
throw Error(`slot ${slot} < finalizedSlot ${this.finalizedSlot}`);
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
this.slotByBlockRoot.set(blockRoot, slot);
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
prune(finalizedSlot: Slot): void {
|
|
26
|
-
this.finalizedSlot = finalizedSlot;
|
|
27
|
-
|
|
28
|
-
for (const [blockRoot, slot] of this.slotByBlockRoot.entries()) {
|
|
29
|
-
if (slot < finalizedSlot) {
|
|
30
|
-
this.slotByBlockRoot.delete(blockRoot);
|
|
31
|
-
}
|
|
32
|
-
}
|
|
33
|
-
}
|
|
34
|
-
}
|