@lodestar/beacon-node 1.40.0-dev.c975f70481 → 1.40.0-dev.f016f9d123
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 +8 -18
- package/lib/api/impl/beacon/blocks/index.js.map +1 -1
- package/lib/api/impl/debug/index.d.ts +1 -1
- package/lib/api/impl/debug/index.d.ts.map +1 -1
- package/lib/api/impl/debug/index.js +3 -6
- 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 +15 -2
- package/lib/api/impl/lodestar/index.js.map +1 -1
- package/lib/api/impl/validator/index.d.ts.map +1 -1
- package/lib/api/impl/validator/index.js +9 -8
- package/lib/api/impl/validator/index.js.map +1 -1
- package/lib/chain/ColumnReconstructionTracker.d.ts +2 -0
- package/lib/chain/ColumnReconstructionTracker.d.ts.map +1 -1
- package/lib/chain/ColumnReconstructionTracker.js +7 -3
- package/lib/chain/ColumnReconstructionTracker.js.map +1 -1
- package/lib/chain/archiveStore/utils/archiveBlocks.d.ts.map +1 -1
- package/lib/chain/archiveStore/utils/archiveBlocks.js +4 -0
- package/lib/chain/archiveStore/utils/archiveBlocks.js.map +1 -1
- package/lib/chain/blocks/blockInput/blockInput.d.ts +2 -0
- package/lib/chain/blocks/blockInput/blockInput.d.ts.map +1 -1
- package/lib/chain/blocks/blockInput/blockInput.js +6 -0
- package/lib/chain/blocks/blockInput/blockInput.js.map +1 -1
- package/lib/chain/blocks/importBlock.d.ts.map +1 -1
- package/lib/chain/blocks/importBlock.js +2 -6
- package/lib/chain/blocks/importBlock.js.map +1 -1
- package/lib/chain/blocks/index.d.ts.map +1 -1
- package/lib/chain/blocks/index.js +0 -14
- package/lib/chain/blocks/index.js.map +1 -1
- package/lib/chain/blocks/types.d.ts +0 -2
- package/lib/chain/blocks/types.d.ts.map +1 -1
- package/lib/chain/blocks/verifyBlock.d.ts.map +1 -1
- package/lib/chain/blocks/verifyBlock.js +1 -8
- package/lib/chain/blocks/verifyBlock.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 +2 -2
- package/lib/chain/blocks/verifyBlocksSignatures.js.map +1 -1
- package/lib/chain/blocks/writeBlockInputToDb.d.ts +1 -4
- package/lib/chain/blocks/writeBlockInputToDb.d.ts.map +1 -1
- package/lib/chain/blocks/writeBlockInputToDb.js +20 -28
- package/lib/chain/blocks/writeBlockInputToDb.js.map +1 -1
- package/lib/chain/bls/multithread/index.d.ts +3 -1
- package/lib/chain/bls/multithread/index.d.ts.map +1 -1
- package/lib/chain/bls/multithread/index.js +5 -3
- package/lib/chain/bls/multithread/index.js.map +1 -1
- package/lib/chain/bls/multithread/jobItem.d.ts +2 -2
- package/lib/chain/bls/multithread/jobItem.d.ts.map +1 -1
- package/lib/chain/bls/multithread/jobItem.js +2 -2
- package/lib/chain/bls/multithread/jobItem.js.map +1 -1
- package/lib/chain/bls/singleThread.d.ts +4 -2
- package/lib/chain/bls/singleThread.d.ts.map +1 -1
- package/lib/chain/bls/singleThread.js +4 -2
- package/lib/chain/bls/singleThread.js.map +1 -1
- package/lib/chain/bls/utils.d.ts +2 -2
- package/lib/chain/bls/utils.d.ts.map +1 -1
- package/lib/chain/bls/utils.js +9 -6
- package/lib/chain/bls/utils.js.map +1 -1
- package/lib/chain/chain.d.ts +21 -4
- package/lib/chain/chain.d.ts.map +1 -1
- package/lib/chain/chain.js +180 -15
- package/lib/chain/chain.js.map +1 -1
- package/lib/chain/errors/attestationError.d.ts +14 -1
- package/lib/chain/errors/attestationError.d.ts.map +1 -1
- package/lib/chain/errors/attestationError.js +8 -0
- package/lib/chain/errors/attestationError.js.map +1 -1
- package/lib/chain/errors/executionPayloadBid.d.ts +48 -0
- package/lib/chain/errors/executionPayloadBid.d.ts.map +1 -0
- package/lib/chain/errors/executionPayloadBid.js +15 -0
- package/lib/chain/errors/executionPayloadBid.js.map +1 -0
- package/lib/chain/errors/executionPayloadEnvelope.d.ts +48 -0
- package/lib/chain/errors/executionPayloadEnvelope.d.ts.map +1 -0
- package/lib/chain/errors/executionPayloadEnvelope.js +16 -0
- package/lib/chain/errors/executionPayloadEnvelope.js.map +1 -0
- package/lib/chain/errors/index.d.ts +3 -0
- package/lib/chain/errors/index.d.ts.map +1 -1
- package/lib/chain/errors/index.js +3 -0
- package/lib/chain/errors/index.js.map +1 -1
- package/lib/chain/errors/payloadAttestation.d.ts +34 -0
- package/lib/chain/errors/payloadAttestation.d.ts.map +1 -0
- package/lib/chain/errors/payloadAttestation.js +13 -0
- package/lib/chain/errors/payloadAttestation.js.map +1 -0
- package/lib/chain/forkChoice/index.d.ts.map +1 -1
- package/lib/chain/forkChoice/index.js +18 -0
- package/lib/chain/forkChoice/index.js.map +1 -1
- package/lib/chain/interface.d.ts +21 -3
- package/lib/chain/interface.d.ts.map +1 -1
- package/lib/chain/interface.js.map +1 -1
- package/lib/chain/opPools/executionPayloadBidPool.d.ts +21 -0
- package/lib/chain/opPools/executionPayloadBidPool.d.ts.map +1 -0
- package/lib/chain/opPools/executionPayloadBidPool.js +57 -0
- package/lib/chain/opPools/executionPayloadBidPool.js.map +1 -0
- package/lib/chain/opPools/index.d.ts +2 -0
- package/lib/chain/opPools/index.d.ts.map +1 -1
- package/lib/chain/opPools/index.js +2 -0
- package/lib/chain/opPools/index.js.map +1 -1
- package/lib/chain/opPools/payloadAttestationPool.d.ts +24 -0
- package/lib/chain/opPools/payloadAttestationPool.d.ts.map +1 -0
- package/lib/chain/opPools/payloadAttestationPool.js +109 -0
- package/lib/chain/opPools/payloadAttestationPool.js.map +1 -0
- package/lib/chain/prepareNextSlot.js +6 -4
- package/lib/chain/prepareNextSlot.js.map +1 -1
- package/lib/chain/produceBlock/produceBlockBody.d.ts +3 -2
- package/lib/chain/produceBlock/produceBlockBody.d.ts.map +1 -1
- package/lib/chain/produceBlock/produceBlockBody.js +5 -3
- package/lib/chain/produceBlock/produceBlockBody.js.map +1 -1
- package/lib/chain/regen/interface.d.ts +3 -8
- 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 -2
- package/lib/chain/regen/queued.d.ts.map +1 -1
- package/lib/chain/regen/queued.js +2 -16
- package/lib/chain/regen/queued.js.map +1 -1
- package/lib/chain/regen/regen.d.ts +3 -7
- package/lib/chain/regen/regen.d.ts.map +1 -1
- package/lib/chain/regen/regen.js +3 -16
- package/lib/chain/regen/regen.js.map +1 -1
- package/lib/chain/seenCache/index.d.ts +3 -1
- package/lib/chain/seenCache/index.d.ts.map +1 -1
- package/lib/chain/seenCache/index.js +3 -1
- package/lib/chain/seenCache/index.js.map +1 -1
- package/lib/chain/seenCache/seenAttesters.d.ts +5 -0
- package/lib/chain/seenCache/seenAttesters.d.ts.map +1 -1
- package/lib/chain/seenCache/seenAttesters.js +5 -0
- package/lib/chain/seenCache/seenAttesters.js.map +1 -1
- package/lib/chain/seenCache/seenExecutionPayloadBids.d.ts +12 -0
- package/lib/chain/seenCache/seenExecutionPayloadBids.d.ts.map +1 -0
- package/lib/chain/seenCache/seenExecutionPayloadBids.js +30 -0
- package/lib/chain/seenCache/seenExecutionPayloadBids.js.map +1 -0
- package/lib/chain/seenCache/seenExecutionPayloadEnvelope.d.ts +15 -0
- package/lib/chain/seenCache/seenExecutionPayloadEnvelope.d.ts.map +1 -0
- package/lib/chain/seenCache/seenExecutionPayloadEnvelope.js +28 -0
- package/lib/chain/seenCache/seenExecutionPayloadEnvelope.js.map +1 -0
- package/lib/chain/validation/aggregateAndProof.js +35 -14
- package/lib/chain/validation/aggregateAndProof.js.map +1 -1
- package/lib/chain/validation/attestation.d.ts +2 -2
- package/lib/chain/validation/attestation.d.ts.map +1 -1
- package/lib/chain/validation/attestation.js +27 -8
- package/lib/chain/validation/attestation.js.map +1 -1
- package/lib/chain/validation/attesterSlashing.d.ts.map +1 -1
- package/lib/chain/validation/attesterSlashing.js +1 -1
- package/lib/chain/validation/attesterSlashing.js.map +1 -1
- package/lib/chain/validation/blobSidecar.d.ts.map +1 -1
- package/lib/chain/validation/blobSidecar.js +3 -3
- 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 +5 -4
- package/lib/chain/validation/block.js.map +1 -1
- package/lib/chain/validation/dataColumnSidecar.d.ts.map +1 -1
- package/lib/chain/validation/dataColumnSidecar.js +3 -3
- package/lib/chain/validation/dataColumnSidecar.js.map +1 -1
- package/lib/chain/validation/executionPayloadBid.d.ts +5 -0
- package/lib/chain/validation/executionPayloadBid.d.ts.map +1 -0
- package/lib/chain/validation/executionPayloadBid.js +104 -0
- package/lib/chain/validation/executionPayloadBid.js.map +1 -0
- package/lib/chain/validation/executionPayloadEnvelope.d.ts +5 -0
- package/lib/chain/validation/executionPayloadEnvelope.d.ts.map +1 -0
- package/lib/chain/validation/executionPayloadEnvelope.js +89 -0
- package/lib/chain/validation/executionPayloadEnvelope.js.map +1 -0
- package/lib/chain/validation/payloadAttestationMessage.d.ts +9 -0
- package/lib/chain/validation/payloadAttestationMessage.d.ts.map +1 -0
- package/lib/chain/validation/payloadAttestationMessage.js +72 -0
- package/lib/chain/validation/payloadAttestationMessage.js.map +1 -0
- package/lib/chain/validation/proposerSlashing.js +1 -1
- package/lib/chain/validation/proposerSlashing.js.map +1 -1
- package/lib/chain/validation/signatureSets/aggregateAndProof.d.ts +2 -3
- package/lib/chain/validation/signatureSets/aggregateAndProof.d.ts.map +1 -1
- package/lib/chain/validation/signatureSets/aggregateAndProof.js +8 -3
- package/lib/chain/validation/signatureSets/aggregateAndProof.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 +3 -3
- package/lib/chain/validation/signatureSets/contributionAndProof.js.map +1 -1
- package/lib/chain/validation/signatureSets/selectionProof.d.ts +2 -3
- package/lib/chain/validation/signatureSets/selectionProof.d.ts.map +1 -1
- package/lib/chain/validation/signatureSets/selectionProof.js +8 -3
- package/lib/chain/validation/signatureSets/selectionProof.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 +3 -3
- package/lib/chain/validation/signatureSets/syncCommittee.js.map +1 -1
- package/lib/chain/validation/signatureSets/syncCommitteeContribution.d.ts +1 -2
- package/lib/chain/validation/signatureSets/syncCommitteeContribution.d.ts.map +1 -1
- package/lib/chain/validation/signatureSets/syncCommitteeContribution.js +2 -2
- 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 +3 -3
- package/lib/chain/validation/signatureSets/syncCommitteeSelectionProof.js.map +1 -1
- package/lib/chain/validation/syncCommittee.js +1 -1
- 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 +3 -5
- package/lib/chain/validation/syncCommitteeContributionAndProof.js.map +1 -1
- package/lib/chain/validation/voluntaryExit.js +1 -1
- package/lib/chain/validation/voluntaryExit.js.map +1 -1
- package/lib/chain/validatorMonitor.d.ts +2 -0
- package/lib/chain/validatorMonitor.d.ts.map +1 -1
- package/lib/chain/validatorMonitor.js +49 -7
- package/lib/chain/validatorMonitor.js.map +1 -1
- package/lib/db/repositories/checkpointState.js +0 -1
- package/lib/db/repositories/checkpointState.js.map +1 -1
- package/lib/metrics/metrics/lodestar.d.ts +27 -0
- package/lib/metrics/metrics/lodestar.d.ts.map +1 -1
- package/lib/metrics/metrics/lodestar.js +64 -0
- package/lib/metrics/metrics/lodestar.js.map +1 -1
- package/lib/network/gossip/interface.d.ts +20 -2
- package/lib/network/gossip/interface.d.ts.map +1 -1
- package/lib/network/gossip/interface.js +3 -0
- package/lib/network/gossip/interface.js.map +1 -1
- package/lib/network/gossip/scoringParameters.d.ts.map +1 -1
- package/lib/network/gossip/scoringParameters.js +38 -2
- package/lib/network/gossip/scoringParameters.js.map +1 -1
- package/lib/network/gossip/topic.d.ts +77 -1
- package/lib/network/gossip/topic.d.ts.map +1 -1
- package/lib/network/gossip/topic.js +20 -0
- package/lib/network/gossip/topic.js.map +1 -1
- package/lib/network/processor/gossipHandlers.d.ts.map +1 -1
- package/lib/network/processor/gossipHandlers.js +34 -3
- 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 +16 -0
- package/lib/network/processor/gossipQueues/index.js.map +1 -1
- package/lib/network/processor/index.d.ts.map +1 -1
- package/lib/network/processor/index.js +3 -0
- package/lib/network/processor/index.js.map +1 -1
- package/lib/network/reqresp/handlers/beaconBlocksByRange.d.ts.map +1 -1
- package/lib/network/reqresp/handlers/beaconBlocksByRange.js +2 -4
- package/lib/network/reqresp/handlers/beaconBlocksByRange.js.map +1 -1
- package/lib/network/reqresp/handlers/beaconBlocksByRoot.d.ts +1 -2
- package/lib/network/reqresp/handlers/beaconBlocksByRoot.d.ts.map +1 -1
- package/lib/network/reqresp/handlers/beaconBlocksByRoot.js +5 -26
- package/lib/network/reqresp/handlers/beaconBlocksByRoot.js.map +1 -1
- package/lib/network/reqresp/handlers/blobSidecarsByRoot.d.ts +1 -2
- package/lib/network/reqresp/handlers/blobSidecarsByRoot.d.ts.map +1 -1
- package/lib/network/reqresp/handlers/blobSidecarsByRoot.js +5 -7
- package/lib/network/reqresp/handlers/blobSidecarsByRoot.js.map +1 -1
- package/lib/network/reqresp/handlers/dataColumnSidecarsByRange.d.ts.map +1 -1
- package/lib/network/reqresp/handlers/dataColumnSidecarsByRange.js +1 -2
- package/lib/network/reqresp/handlers/dataColumnSidecarsByRange.js.map +1 -1
- package/lib/network/reqresp/handlers/dataColumnSidecarsByRoot.d.ts.map +1 -1
- package/lib/network/reqresp/handlers/dataColumnSidecarsByRoot.js +1 -5
- package/lib/network/reqresp/handlers/dataColumnSidecarsByRoot.js.map +1 -1
- package/lib/network/reqresp/handlers/index.js +2 -2
- package/lib/network/reqresp/handlers/index.js.map +1 -1
- package/lib/sync/backfill/backfill.js +2 -2
- package/lib/sync/backfill/backfill.js.map +1 -1
- package/lib/sync/backfill/verify.d.ts +1 -2
- package/lib/sync/backfill/verify.d.ts.map +1 -1
- package/lib/sync/backfill/verify.js +2 -2
- package/lib/sync/backfill/verify.js.map +1 -1
- package/lib/sync/range/chain.d.ts.map +1 -1
- package/lib/sync/range/chain.js +0 -1
- package/lib/sync/range/chain.js.map +1 -1
- package/lib/sync/range/range.d.ts.map +1 -1
- package/lib/sync/range/range.js +0 -3
- package/lib/sync/range/range.js.map +1 -1
- package/lib/sync/unknownBlock.d.ts.map +1 -1
- package/lib/sync/unknownBlock.js +0 -3
- package/lib/sync/unknownBlock.js.map +1 -1
- package/package.json +15 -15
- package/src/api/impl/beacon/blocks/index.ts +8 -18
- package/src/api/impl/debug/index.ts +2 -6
- package/src/api/impl/lodestar/index.ts +18 -3
- package/src/api/impl/validator/index.ts +12 -11
- package/src/chain/ColumnReconstructionTracker.ts +8 -4
- package/src/chain/archiveStore/utils/archiveBlocks.ts +4 -0
- package/src/chain/blocks/blockInput/blockInput.ts +8 -0
- package/src/chain/blocks/importBlock.ts +2 -6
- package/src/chain/blocks/index.ts +0 -19
- package/src/chain/blocks/types.ts +0 -2
- package/src/chain/blocks/verifyBlock.ts +0 -9
- package/src/chain/blocks/verifyBlocksSignatures.ts +4 -12
- package/src/chain/blocks/writeBlockInputToDb.ts +24 -30
- package/src/chain/bls/multithread/index.ts +7 -4
- package/src/chain/bls/multithread/jobItem.ts +7 -3
- package/src/chain/bls/singleThread.ts +5 -3
- package/src/chain/bls/utils.ts +15 -7
- package/src/chain/chain.ts +205 -23
- package/src/chain/errors/attestationError.ts +11 -1
- package/src/chain/errors/executionPayloadBid.ts +35 -0
- package/src/chain/errors/executionPayloadEnvelope.ts +34 -0
- package/src/chain/errors/index.ts +3 -0
- package/src/chain/errors/payloadAttestation.ts +25 -0
- package/src/chain/forkChoice/index.ts +19 -0
- package/src/chain/interface.ts +32 -1
- package/src/chain/opPools/executionPayloadBidPool.ts +77 -0
- package/src/chain/opPools/index.ts +2 -0
- package/src/chain/opPools/payloadAttestationPool.ts +157 -0
- package/src/chain/prepareNextSlot.ts +6 -6
- package/src/chain/produceBlock/produceBlockBody.ts +7 -5
- package/src/chain/regen/interface.ts +2 -12
- package/src/chain/regen/queued.ts +3 -23
- package/src/chain/regen/regen.ts +4 -24
- package/src/chain/seenCache/index.ts +3 -1
- package/src/chain/seenCache/seenAttesters.ts +5 -0
- package/src/chain/seenCache/seenExecutionPayloadBids.ts +35 -0
- package/src/chain/seenCache/seenExecutionPayloadEnvelope.ts +34 -0
- package/src/chain/validation/aggregateAndProof.ts +36 -14
- package/src/chain/validation/attestation.ts +33 -16
- package/src/chain/validation/attesterSlashing.ts +1 -6
- package/src/chain/validation/blobSidecar.ts +2 -7
- package/src/chain/validation/block.ts +5 -4
- package/src/chain/validation/dataColumnSidecar.ts +2 -7
- package/src/chain/validation/executionPayloadBid.ts +141 -0
- package/src/chain/validation/executionPayloadEnvelope.ts +122 -0
- package/src/chain/validation/payloadAttestationMessage.ts +109 -0
- package/src/chain/validation/proposerSlashing.ts +1 -6
- package/src/chain/validation/signatureSets/aggregateAndProof.ts +9 -14
- package/src/chain/validation/signatureSets/contributionAndProof.ts +2 -4
- package/src/chain/validation/signatureSets/selectionProof.ts +9 -9
- package/src/chain/validation/signatureSets/syncCommittee.ts +2 -4
- package/src/chain/validation/signatureSets/syncCommitteeContribution.ts +2 -3
- package/src/chain/validation/signatureSets/syncCommitteeSelectionProof.ts +2 -4
- package/src/chain/validation/syncCommittee.ts +1 -1
- package/src/chain/validation/syncCommitteeContributionAndProof.ts +3 -5
- package/src/chain/validation/voluntaryExit.ts +1 -1
- package/src/chain/validatorMonitor.ts +62 -8
- package/src/db/repositories/checkpointState.ts +1 -1
- package/src/metrics/metrics/lodestar.ts +65 -0
- package/src/network/gossip/interface.ts +17 -0
- package/src/network/gossip/scoringParameters.ts +44 -2
- package/src/network/gossip/topic.ts +21 -0
- package/src/network/processor/gossipHandlers.ts +48 -3
- package/src/network/processor/gossipQueues/index.ts +16 -0
- package/src/network/processor/index.ts +3 -0
- package/src/network/reqresp/handlers/beaconBlocksByRange.ts +2 -4
- package/src/network/reqresp/handlers/beaconBlocksByRoot.ts +5 -32
- package/src/network/reqresp/handlers/blobSidecarsByRoot.ts +5 -9
- package/src/network/reqresp/handlers/dataColumnSidecarsByRange.ts +5 -2
- package/src/network/reqresp/handlers/dataColumnSidecarsByRoot.ts +1 -5
- package/src/network/reqresp/handlers/index.ts +2 -2
- package/src/sync/backfill/backfill.ts +2 -2
- package/src/sync/backfill/verify.ts +2 -3
- package/src/sync/range/chain.ts +0 -1
- package/src/sync/range/range.ts +0 -3
- package/src/sync/unknownBlock.ts +0 -3
|
@@ -28,7 +28,7 @@ async function validateProposerSlashing(chain, proposerSlashing, prioritizeBls =
|
|
|
28
28
|
error: e,
|
|
29
29
|
});
|
|
30
30
|
}
|
|
31
|
-
const signatureSets = getProposerSlashingSignatureSets(chain.config,
|
|
31
|
+
const signatureSets = getProposerSlashingSignatureSets(chain.config, state.slot, proposerSlashing);
|
|
32
32
|
if (!(await chain.bls.verifySignatureSets(signatureSets, { batchable: true, priority: prioritizeBls }))) {
|
|
33
33
|
throw new ProposerSlashingError(GossipAction.REJECT, {
|
|
34
34
|
code: ProposerSlashingErrorCode.INVALID,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"proposerSlashing.js","sourceRoot":"","sources":["../../../src/chain/validation/proposerSlashing.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,2BAA2B,EAAE,gCAAgC,EAAC,MAAM,4BAA4B,CAAC;AAEzG,OAAO,EAAC,YAAY,EAAE,qBAAqB,EAAE,yBAAyB,EAAC,MAAM,oBAAoB,CAAC;AAGlG,MAAM,CAAC,KAAK,UAAU,2BAA2B,CAC/C,KAAmB,EACnB,gBAAyC;IAEzC,MAAM,aAAa,GAAG,IAAI,CAAC;IAC3B,OAAO,wBAAwB,CAAC,KAAK,EAAE,gBAAgB,EAAE,aAAa,CAAC,CAAC;AAC1E,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,8BAA8B,CAClD,KAAmB,EACnB,gBAAyC;IAEzC,OAAO,wBAAwB,CAAC,KAAK,EAAE,gBAAgB,CAAC,CAAC;AAC3D,CAAC;AAED,KAAK,UAAU,wBAAwB,CACrC,KAAmB,EACnB,gBAAyC,EACzC,aAAa,GAAG,KAAK;IAErB,2GAA2G;IAC3G,4DAA4D;IAC5D,IAAI,KAAK,CAAC,MAAM,CAAC,uBAAuB,CAAC,gBAAgB,CAAC,aAAa,CAAC,OAAO,CAAC,aAAa,CAAC,EAAE,CAAC;QAC/F,MAAM,IAAI,qBAAqB,CAAC,YAAY,CAAC,MAAM,EAAE;YACnD,IAAI,EAAE,yBAAyB,CAAC,cAAc;SAC/C,CAAC,CAAC;IACL,CAAC;IAED,MAAM,KAAK,GAAG,KAAK,CAAC,YAAY,EAAE,CAAC;IAEnC,mFAAmF;IACnF,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,KAAK,CAAC,UAAU,CAAC,WAAW,CAAC,gBAAgB,CAAC,aAAa,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;QACpG,mDAAmD;QACnD,2BAA2B,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,YAAY,EAAE,KAAK,CAAC,IAAI,EAAE,gBAAgB,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC;IAC/G,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,MAAM,IAAI,qBAAqB,CAAC,YAAY,CAAC,MAAM,EAAE;YACnD,IAAI,EAAE,yBAAyB,CAAC,OAAO;YACvC,KAAK,EAAE,CAAU;SAClB,CAAC,CAAC;IACL,CAAC;IAED,MAAM,aAAa,GAAG,gCAAgC,
|
|
1
|
+
{"version":3,"file":"proposerSlashing.js","sourceRoot":"","sources":["../../../src/chain/validation/proposerSlashing.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,2BAA2B,EAAE,gCAAgC,EAAC,MAAM,4BAA4B,CAAC;AAEzG,OAAO,EAAC,YAAY,EAAE,qBAAqB,EAAE,yBAAyB,EAAC,MAAM,oBAAoB,CAAC;AAGlG,MAAM,CAAC,KAAK,UAAU,2BAA2B,CAC/C,KAAmB,EACnB,gBAAyC;IAEzC,MAAM,aAAa,GAAG,IAAI,CAAC;IAC3B,OAAO,wBAAwB,CAAC,KAAK,EAAE,gBAAgB,EAAE,aAAa,CAAC,CAAC;AAC1E,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,8BAA8B,CAClD,KAAmB,EACnB,gBAAyC;IAEzC,OAAO,wBAAwB,CAAC,KAAK,EAAE,gBAAgB,CAAC,CAAC;AAC3D,CAAC;AAED,KAAK,UAAU,wBAAwB,CACrC,KAAmB,EACnB,gBAAyC,EACzC,aAAa,GAAG,KAAK;IAErB,2GAA2G;IAC3G,4DAA4D;IAC5D,IAAI,KAAK,CAAC,MAAM,CAAC,uBAAuB,CAAC,gBAAgB,CAAC,aAAa,CAAC,OAAO,CAAC,aAAa,CAAC,EAAE,CAAC;QAC/F,MAAM,IAAI,qBAAqB,CAAC,YAAY,CAAC,MAAM,EAAE;YACnD,IAAI,EAAE,yBAAyB,CAAC,cAAc;SAC/C,CAAC,CAAC;IACL,CAAC;IAED,MAAM,KAAK,GAAG,KAAK,CAAC,YAAY,EAAE,CAAC;IAEnC,mFAAmF;IACnF,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,KAAK,CAAC,UAAU,CAAC,WAAW,CAAC,gBAAgB,CAAC,aAAa,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;QACpG,mDAAmD;QACnD,2BAA2B,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,YAAY,EAAE,KAAK,CAAC,IAAI,EAAE,gBAAgB,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC;IAC/G,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,MAAM,IAAI,qBAAqB,CAAC,YAAY,CAAC,MAAM,EAAE;YACnD,IAAI,EAAE,yBAAyB,CAAC,OAAO;YACvC,KAAK,EAAE,CAAU;SAClB,CAAC,CAAC;IACL,CAAC;IAED,MAAM,aAAa,GAAG,gCAAgC,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,IAAI,EAAE,gBAAgB,CAAC,CAAC;IACnG,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,GAAG,CAAC,mBAAmB,CAAC,aAAa,EAAE,EAAC,SAAS,EAAE,IAAI,EAAE,QAAQ,EAAE,aAAa,EAAC,CAAC,CAAC,EAAE,CAAC;QACtG,MAAM,IAAI,qBAAqB,CAAC,YAAY,CAAC,MAAM,EAAE;YACnD,IAAI,EAAE,yBAAyB,CAAC,OAAO;YACvC,KAAK,EAAE,KAAK,CAAC,mBAAmB,CAAC;SAClC,CAAC,CAAC;IACL,CAAC;AACH,CAAC"}
|
|
@@ -1,7 +1,6 @@
|
|
|
1
|
-
import { PublicKey } from "@chainsafe/blst";
|
|
2
1
|
import { BeaconConfig } from "@lodestar/config";
|
|
3
2
|
import { ISignatureSet } from "@lodestar/state-transition";
|
|
4
|
-
import { Epoch, SignedAggregateAndProof } from "@lodestar/types";
|
|
3
|
+
import { Epoch, SignedAggregateAndProof, ValidatorIndex } from "@lodestar/types";
|
|
5
4
|
export declare function getAggregateAndProofSigningRoot(config: BeaconConfig, epoch: Epoch, aggregateAndProof: SignedAggregateAndProof): Uint8Array;
|
|
6
|
-
export declare function getAggregateAndProofSignatureSet(config: BeaconConfig, epoch: Epoch,
|
|
5
|
+
export declare function getAggregateAndProofSignatureSet(config: BeaconConfig, epoch: Epoch, aggregatorIndex: ValidatorIndex, aggregateAndProof: SignedAggregateAndProof): ISignatureSet;
|
|
7
6
|
//# sourceMappingURL=aggregateAndProof.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"aggregateAndProof.d.ts","sourceRoot":"","sources":["../../../../src/chain/validation/signatureSets/aggregateAndProof.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,
|
|
1
|
+
{"version":3,"file":"aggregateAndProof.d.ts","sourceRoot":"","sources":["../../../../src/chain/validation/signatureSets/aggregateAndProof.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,YAAY,EAAC,MAAM,kBAAkB,CAAC;AAE9C,OAAO,EAAC,aAAa,EAAgE,MAAM,4BAA4B,CAAC;AACxH,OAAO,EAAC,KAAK,EAAE,uBAAuB,EAAE,cAAc,EAAM,MAAM,iBAAiB,CAAC;AAEpF,wBAAgB,+BAA+B,CAC7C,MAAM,EAAE,YAAY,EACpB,KAAK,EAAE,KAAK,EACZ,iBAAiB,EAAE,uBAAuB,GACzC,UAAU,CASZ;AAED,wBAAgB,gCAAgC,CAC9C,MAAM,EAAE,YAAY,EACpB,KAAK,EAAE,KAAK,EACZ,eAAe,EAAE,cAAc,EAC/B,iBAAiB,EAAE,uBAAuB,GACzC,aAAa,CAOf"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { DOMAIN_AGGREGATE_AND_PROOF, ForkSeq } from "@lodestar/params";
|
|
2
|
-
import { computeSigningRoot, computeStartSlotAtEpoch
|
|
2
|
+
import { SignatureSetType, computeSigningRoot, computeStartSlotAtEpoch } from "@lodestar/state-transition";
|
|
3
3
|
import { ssz } from "@lodestar/types";
|
|
4
4
|
export function getAggregateAndProofSigningRoot(config, epoch, aggregateAndProof) {
|
|
5
5
|
// previously, we call `const aggregatorDomain = config.getDomain(state.slot, DOMAIN_AGGREGATE_AND_PROOF, slot);`
|
|
@@ -11,7 +11,12 @@ export function getAggregateAndProofSigningRoot(config, epoch, aggregateAndProof
|
|
|
11
11
|
const sszType = ForkSeq[fork] >= ForkSeq.electra ? ssz.electra.AggregateAndProof : ssz.phase0.AggregateAndProof;
|
|
12
12
|
return computeSigningRoot(sszType, aggregateAndProof.message, aggregatorDomain);
|
|
13
13
|
}
|
|
14
|
-
export function getAggregateAndProofSignatureSet(config, epoch,
|
|
15
|
-
return
|
|
14
|
+
export function getAggregateAndProofSignatureSet(config, epoch, aggregatorIndex, aggregateAndProof) {
|
|
15
|
+
return {
|
|
16
|
+
type: SignatureSetType.indexed,
|
|
17
|
+
index: aggregatorIndex,
|
|
18
|
+
signingRoot: getAggregateAndProofSigningRoot(config, epoch, aggregateAndProof),
|
|
19
|
+
signature: aggregateAndProof.signature,
|
|
20
|
+
};
|
|
16
21
|
}
|
|
17
22
|
//# sourceMappingURL=aggregateAndProof.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"aggregateAndProof.js","sourceRoot":"","sources":["../../../../src/chain/validation/signatureSets/aggregateAndProof.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"aggregateAndProof.js","sourceRoot":"","sources":["../../../../src/chain/validation/signatureSets/aggregateAndProof.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,0BAA0B,EAAE,OAAO,EAAC,MAAM,kBAAkB,CAAC;AACrE,OAAO,EAAgB,gBAAgB,EAAE,kBAAkB,EAAE,uBAAuB,EAAC,MAAM,4BAA4B,CAAC;AACxH,OAAO,EAAiD,GAAG,EAAC,MAAM,iBAAiB,CAAC;AAEpF,MAAM,UAAU,+BAA+B,CAC7C,MAAoB,EACpB,KAAY,EACZ,iBAA0C;IAE1C,iHAAiH;IACjH,2KAA2K;IAC3K,qEAAqE;IACrE,MAAM,IAAI,GAAG,uBAAuB,CAAC,KAAK,CAAC,CAAC;IAC5C,MAAM,IAAI,GAAG,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;IACtC,MAAM,gBAAgB,GAAG,MAAM,CAAC,eAAe,CAAC,IAAI,EAAE,0BAA0B,CAAC,CAAC;IAClF,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,iBAAiB,CAAC;IAChH,OAAO,kBAAkB,CAAC,OAAO,EAAE,iBAAiB,CAAC,OAAO,EAAE,gBAAgB,CAAC,CAAC;AAClF,CAAC;AAED,MAAM,UAAU,gCAAgC,CAC9C,MAAoB,EACpB,KAAY,EACZ,eAA+B,EAC/B,iBAA0C;IAE1C,OAAO;QACL,IAAI,EAAE,gBAAgB,CAAC,OAAO;QAC9B,KAAK,EAAE,eAAe;QACtB,WAAW,EAAE,+BAA+B,CAAC,MAAM,EAAE,KAAK,EAAE,iBAAiB,CAAC;QAC9E,SAAS,EAAE,iBAAiB,CAAC,SAAS;KACvC,CAAC;AACJ,CAAC"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { BeaconConfig } from "@lodestar/config";
|
|
2
|
-
import { CachedBeaconStateAllForks, ISignatureSet
|
|
2
|
+
import { CachedBeaconStateAllForks, ISignatureSet } from "@lodestar/state-transition";
|
|
3
3
|
import { altair } from "@lodestar/types";
|
|
4
|
-
export declare function getContributionAndProofSignatureSet(config: BeaconConfig,
|
|
4
|
+
export declare function getContributionAndProofSignatureSet(config: BeaconConfig, state: CachedBeaconStateAllForks, signedContributionAndProof: altair.SignedContributionAndProof): ISignatureSet;
|
|
5
5
|
//# sourceMappingURL=contributionAndProof.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"contributionAndProof.d.ts","sourceRoot":"","sources":["../../../../src/chain/validation/signatureSets/contributionAndProof.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,YAAY,EAAC,MAAM,kBAAkB,CAAC;AAE9C,OAAO,EACL,yBAAyB,EACzB,aAAa,
|
|
1
|
+
{"version":3,"file":"contributionAndProof.d.ts","sourceRoot":"","sources":["../../../../src/chain/validation/signatureSets/contributionAndProof.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,YAAY,EAAC,MAAM,kBAAkB,CAAC;AAE9C,OAAO,EACL,yBAAyB,EACzB,aAAa,EAGd,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAC,MAAM,EAAM,MAAM,iBAAiB,CAAC;AAE5C,wBAAgB,mCAAmC,CACjD,MAAM,EAAE,YAAY,EACpB,KAAK,EAAE,yBAAyB,EAChC,0BAA0B,EAAE,MAAM,CAAC,0BAA0B,GAC5D,aAAa,CAaf"}
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import { DOMAIN_CONTRIBUTION_AND_PROOF } from "@lodestar/params";
|
|
2
2
|
import { SignatureSetType, computeSigningRoot, } from "@lodestar/state-transition";
|
|
3
3
|
import { ssz } from "@lodestar/types";
|
|
4
|
-
export function getContributionAndProofSignatureSet(config,
|
|
4
|
+
export function getContributionAndProofSignatureSet(config, state, signedContributionAndProof) {
|
|
5
5
|
const domain = config.getDomain(state.slot, DOMAIN_CONTRIBUTION_AND_PROOF, signedContributionAndProof.message.contribution.slot);
|
|
6
6
|
const signingData = signedContributionAndProof.message;
|
|
7
7
|
return {
|
|
8
|
-
type: SignatureSetType.
|
|
9
|
-
|
|
8
|
+
type: SignatureSetType.indexed,
|
|
9
|
+
index: signedContributionAndProof.message.aggregatorIndex,
|
|
10
10
|
signingRoot: computeSigningRoot(ssz.altair.ContributionAndProof, signingData, domain),
|
|
11
11
|
signature: signedContributionAndProof.signature,
|
|
12
12
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"contributionAndProof.js","sourceRoot":"","sources":["../../../../src/chain/validation/signatureSets/contributionAndProof.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,6BAA6B,EAAC,MAAM,kBAAkB,CAAC;AAC/D,OAAO,
|
|
1
|
+
{"version":3,"file":"contributionAndProof.js","sourceRoot":"","sources":["../../../../src/chain/validation/signatureSets/contributionAndProof.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,6BAA6B,EAAC,MAAM,kBAAkB,CAAC;AAC/D,OAAO,EAGL,gBAAgB,EAChB,kBAAkB,GACnB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAS,GAAG,EAAC,MAAM,iBAAiB,CAAC;AAE5C,MAAM,UAAU,mCAAmC,CACjD,MAAoB,EACpB,KAAgC,EAChC,0BAA6D;IAE7D,MAAM,MAAM,GAAG,MAAM,CAAC,SAAS,CAC7B,KAAK,CAAC,IAAI,EACV,6BAA6B,EAC7B,0BAA0B,CAAC,OAAO,CAAC,YAAY,CAAC,IAAI,CACrD,CAAC;IACF,MAAM,WAAW,GAAG,0BAA0B,CAAC,OAAO,CAAC;IACvD,OAAO;QACL,IAAI,EAAE,gBAAgB,CAAC,OAAO;QAC9B,KAAK,EAAE,0BAA0B,CAAC,OAAO,CAAC,eAAe;QACzD,WAAW,EAAE,kBAAkB,CAAC,GAAG,CAAC,MAAM,CAAC,oBAAoB,EAAE,WAAW,EAAE,MAAM,CAAC;QACrF,SAAS,EAAE,0BAA0B,CAAC,SAAS;KAChD,CAAC;AACJ,CAAC"}
|
|
@@ -1,7 +1,6 @@
|
|
|
1
|
-
import { PublicKey } from "@chainsafe/blst";
|
|
2
1
|
import { BeaconConfig } from "@lodestar/config";
|
|
3
2
|
import { ISignatureSet } from "@lodestar/state-transition";
|
|
4
|
-
import { Slot, phase0 } from "@lodestar/types";
|
|
3
|
+
import { Slot, ValidatorIndex, phase0 } from "@lodestar/types";
|
|
5
4
|
export declare function getSelectionProofSigningRoot(config: BeaconConfig, slot: Slot): Uint8Array;
|
|
6
|
-
export declare function getSelectionProofSignatureSet(config: BeaconConfig, slot: Slot,
|
|
5
|
+
export declare function getSelectionProofSignatureSet(config: BeaconConfig, slot: Slot, aggregatorIndex: ValidatorIndex, aggregateAndProof: phase0.SignedAggregateAndProof): ISignatureSet;
|
|
7
6
|
//# sourceMappingURL=selectionProof.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"selectionProof.d.ts","sourceRoot":"","sources":["../../../../src/chain/validation/signatureSets/selectionProof.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,
|
|
1
|
+
{"version":3,"file":"selectionProof.d.ts","sourceRoot":"","sources":["../../../../src/chain/validation/signatureSets/selectionProof.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,YAAY,EAAC,MAAM,kBAAkB,CAAC;AAE9C,OAAO,EAAC,aAAa,EAAuC,MAAM,4BAA4B,CAAC;AAC/F,OAAO,EAAC,IAAI,EAAE,cAAc,EAAE,MAAM,EAAM,MAAM,iBAAiB,CAAC;AAElE,wBAAgB,4BAA4B,CAAC,MAAM,EAAE,YAAY,EAAE,IAAI,EAAE,IAAI,GAAG,UAAU,CAOzF;AAED,wBAAgB,6BAA6B,CAC3C,MAAM,EAAE,YAAY,EACpB,IAAI,EAAE,IAAI,EACV,eAAe,EAAE,cAAc,EAC/B,iBAAiB,EAAE,MAAM,CAAC,uBAAuB,GAChD,aAAa,CAOf"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { DOMAIN_SELECTION_PROOF } from "@lodestar/params";
|
|
2
|
-
import {
|
|
2
|
+
import { SignatureSetType, computeSigningRoot } from "@lodestar/state-transition";
|
|
3
3
|
import { ssz } from "@lodestar/types";
|
|
4
4
|
export function getSelectionProofSigningRoot(config, slot) {
|
|
5
5
|
// previously, we call `const selectionProofDomain = config.getDomain(state.slot, DOMAIN_SELECTION_PROOF, slot)`
|
|
@@ -9,7 +9,12 @@ export function getSelectionProofSigningRoot(config, slot) {
|
|
|
9
9
|
const selectionProofDomain = config.getDomainAtFork(fork, DOMAIN_SELECTION_PROOF);
|
|
10
10
|
return computeSigningRoot(ssz.Slot, slot, selectionProofDomain);
|
|
11
11
|
}
|
|
12
|
-
export function getSelectionProofSignatureSet(config, slot,
|
|
13
|
-
return
|
|
12
|
+
export function getSelectionProofSignatureSet(config, slot, aggregatorIndex, aggregateAndProof) {
|
|
13
|
+
return {
|
|
14
|
+
type: SignatureSetType.indexed,
|
|
15
|
+
index: aggregatorIndex,
|
|
16
|
+
signingRoot: getSelectionProofSigningRoot(config, slot),
|
|
17
|
+
signature: aggregateAndProof.message.selectionProof,
|
|
18
|
+
};
|
|
14
19
|
}
|
|
15
20
|
//# sourceMappingURL=selectionProof.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"selectionProof.js","sourceRoot":"","sources":["../../../../src/chain/validation/signatureSets/selectionProof.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"selectionProof.js","sourceRoot":"","sources":["../../../../src/chain/validation/signatureSets/selectionProof.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,sBAAsB,EAAC,MAAM,kBAAkB,CAAC;AACxD,OAAO,EAAgB,gBAAgB,EAAE,kBAAkB,EAAC,MAAM,4BAA4B,CAAC;AAC/F,OAAO,EAA+B,GAAG,EAAC,MAAM,iBAAiB,CAAC;AAElE,MAAM,UAAU,4BAA4B,CAAC,MAAoB,EAAE,IAAU;IAC3E,gHAAgH;IAChH,2KAA2K;IAC3K,qEAAqE;IACrE,MAAM,IAAI,GAAG,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;IACtC,MAAM,oBAAoB,GAAG,MAAM,CAAC,eAAe,CAAC,IAAI,EAAE,sBAAsB,CAAC,CAAC;IAClF,OAAO,kBAAkB,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,oBAAoB,CAAC,CAAC;AAClE,CAAC;AAED,MAAM,UAAU,6BAA6B,CAC3C,MAAoB,EACpB,IAAU,EACV,eAA+B,EAC/B,iBAAiD;IAEjD,OAAO;QACL,IAAI,EAAE,gBAAgB,CAAC,OAAO;QAC9B,KAAK,EAAE,eAAe;QACtB,WAAW,EAAE,4BAA4B,CAAC,MAAM,EAAE,IAAI,CAAC;QACvD,SAAS,EAAE,iBAAiB,CAAC,OAAO,CAAC,cAAc;KACpD,CAAC;AACJ,CAAC"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { BeaconConfig } from "@lodestar/config";
|
|
2
|
-
import { CachedBeaconStateAllForks, ISignatureSet
|
|
2
|
+
import { CachedBeaconStateAllForks, ISignatureSet } from "@lodestar/state-transition";
|
|
3
3
|
import { altair } from "@lodestar/types";
|
|
4
|
-
export declare function getSyncCommitteeSignatureSet(config: BeaconConfig,
|
|
4
|
+
export declare function getSyncCommitteeSignatureSet(config: BeaconConfig, state: CachedBeaconStateAllForks, syncCommittee: altair.SyncCommitteeMessage): ISignatureSet;
|
|
5
5
|
//# sourceMappingURL=syncCommittee.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"syncCommittee.d.ts","sourceRoot":"","sources":["../../../../src/chain/validation/signatureSets/syncCommittee.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,YAAY,EAAC,MAAM,kBAAkB,CAAC;AAE9C,OAAO,EACL,yBAAyB,EACzB,aAAa,
|
|
1
|
+
{"version":3,"file":"syncCommittee.d.ts","sourceRoot":"","sources":["../../../../src/chain/validation/signatureSets/syncCommittee.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,YAAY,EAAC,MAAM,kBAAkB,CAAC;AAE9C,OAAO,EACL,yBAAyB,EACzB,aAAa,EAGd,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAC,MAAM,EAAM,MAAM,iBAAiB,CAAC;AAE5C,wBAAgB,4BAA4B,CAC1C,MAAM,EAAE,YAAY,EACpB,KAAK,EAAE,yBAAyB,EAChC,aAAa,EAAE,MAAM,CAAC,oBAAoB,GACzC,aAAa,CASf"}
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import { DOMAIN_SYNC_COMMITTEE } from "@lodestar/params";
|
|
2
2
|
import { SignatureSetType, computeSigningRoot, } from "@lodestar/state-transition";
|
|
3
3
|
import { ssz } from "@lodestar/types";
|
|
4
|
-
export function getSyncCommitteeSignatureSet(config,
|
|
4
|
+
export function getSyncCommitteeSignatureSet(config, state, syncCommittee) {
|
|
5
5
|
const domain = config.getDomain(state.slot, DOMAIN_SYNC_COMMITTEE, syncCommittee.slot);
|
|
6
6
|
return {
|
|
7
|
-
type: SignatureSetType.
|
|
8
|
-
|
|
7
|
+
type: SignatureSetType.indexed,
|
|
8
|
+
index: syncCommittee.validatorIndex,
|
|
9
9
|
signingRoot: computeSigningRoot(ssz.Root, syncCommittee.beaconBlockRoot, domain),
|
|
10
10
|
signature: syncCommittee.signature,
|
|
11
11
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"syncCommittee.js","sourceRoot":"","sources":["../../../../src/chain/validation/signatureSets/syncCommittee.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,qBAAqB,EAAC,MAAM,kBAAkB,CAAC;AACvD,OAAO,
|
|
1
|
+
{"version":3,"file":"syncCommittee.js","sourceRoot":"","sources":["../../../../src/chain/validation/signatureSets/syncCommittee.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,qBAAqB,EAAC,MAAM,kBAAkB,CAAC;AACvD,OAAO,EAGL,gBAAgB,EAChB,kBAAkB,GACnB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAS,GAAG,EAAC,MAAM,iBAAiB,CAAC;AAE5C,MAAM,UAAU,4BAA4B,CAC1C,MAAoB,EACpB,KAAgC,EAChC,aAA0C;IAE1C,MAAM,MAAM,GAAG,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,EAAE,qBAAqB,EAAE,aAAa,CAAC,IAAI,CAAC,CAAC;IAEvF,OAAO;QACL,IAAI,EAAE,gBAAgB,CAAC,OAAO;QAC9B,KAAK,EAAE,aAAa,CAAC,cAAc;QACnC,WAAW,EAAE,kBAAkB,CAAC,GAAG,CAAC,IAAI,EAAE,aAAa,CAAC,eAAe,EAAE,MAAM,CAAC;QAChF,SAAS,EAAE,aAAa,CAAC,SAAS;KACnC,CAAC;AACJ,CAAC"}
|
|
@@ -1,6 +1,5 @@
|
|
|
1
|
-
import { PublicKey } from "@chainsafe/blst";
|
|
2
1
|
import { BeaconConfig } from "@lodestar/config";
|
|
3
2
|
import { CachedBeaconStateAltair, ISignatureSet } from "@lodestar/state-transition";
|
|
4
3
|
import { altair } from "@lodestar/types";
|
|
5
|
-
export declare function getSyncCommitteeContributionSignatureSet(config: BeaconConfig, state: CachedBeaconStateAltair, contribution: altair.SyncCommitteeContribution,
|
|
4
|
+
export declare function getSyncCommitteeContributionSignatureSet(config: BeaconConfig, state: CachedBeaconStateAltair, contribution: altair.SyncCommitteeContribution, participantIndices: number[]): ISignatureSet;
|
|
6
5
|
//# sourceMappingURL=syncCommitteeContribution.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"syncCommitteeContribution.d.ts","sourceRoot":"","sources":["../../../../src/chain/validation/signatureSets/syncCommitteeContribution.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,
|
|
1
|
+
{"version":3,"file":"syncCommitteeContribution.d.ts","sourceRoot":"","sources":["../../../../src/chain/validation/signatureSets/syncCommitteeContribution.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,YAAY,EAAC,MAAM,kBAAkB,CAAC;AAE9C,OAAO,EAAC,uBAAuB,EAAE,aAAa,EAAuC,MAAM,4BAA4B,CAAC;AACxH,OAAO,EAAC,MAAM,EAAM,MAAM,iBAAiB,CAAC;AAE5C,wBAAgB,wCAAwC,CACtD,MAAM,EAAE,YAAY,EACpB,KAAK,EAAE,uBAAuB,EAC9B,YAAY,EAAE,MAAM,CAAC,yBAAyB,EAC9C,kBAAkB,EAAE,MAAM,EAAE,GAC3B,aAAa,CAQf"}
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import { DOMAIN_SYNC_COMMITTEE } from "@lodestar/params";
|
|
2
2
|
import { SignatureSetType, computeSigningRoot } from "@lodestar/state-transition";
|
|
3
3
|
import { ssz } from "@lodestar/types";
|
|
4
|
-
export function getSyncCommitteeContributionSignatureSet(config, state, contribution,
|
|
4
|
+
export function getSyncCommitteeContributionSignatureSet(config, state, contribution, participantIndices) {
|
|
5
5
|
const domain = config.getDomain(state.slot, DOMAIN_SYNC_COMMITTEE, contribution.slot);
|
|
6
6
|
return {
|
|
7
7
|
type: SignatureSetType.aggregate,
|
|
8
|
-
|
|
8
|
+
indices: participantIndices,
|
|
9
9
|
signingRoot: computeSigningRoot(ssz.Root, contribution.beaconBlockRoot, domain),
|
|
10
10
|
signature: contribution.signature,
|
|
11
11
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"syncCommitteeContribution.js","sourceRoot":"","sources":["../../../../src/chain/validation/signatureSets/syncCommitteeContribution.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"syncCommitteeContribution.js","sourceRoot":"","sources":["../../../../src/chain/validation/signatureSets/syncCommitteeContribution.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,qBAAqB,EAAC,MAAM,kBAAkB,CAAC;AACvD,OAAO,EAAyC,gBAAgB,EAAE,kBAAkB,EAAC,MAAM,4BAA4B,CAAC;AACxH,OAAO,EAAS,GAAG,EAAC,MAAM,iBAAiB,CAAC;AAE5C,MAAM,UAAU,wCAAwC,CACtD,MAAoB,EACpB,KAA8B,EAC9B,YAA8C,EAC9C,kBAA4B;IAE5B,MAAM,MAAM,GAAG,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,EAAE,qBAAqB,EAAE,YAAY,CAAC,IAAI,CAAC,CAAC;IACtF,OAAO;QACL,IAAI,EAAE,gBAAgB,CAAC,SAAS;QAChC,OAAO,EAAE,kBAAkB;QAC3B,WAAW,EAAE,kBAAkB,CAAC,GAAG,CAAC,IAAI,EAAE,YAAY,CAAC,eAAe,EAAE,MAAM,CAAC;QAC/E,SAAS,EAAE,YAAY,CAAC,SAAS;KAClC,CAAC;AACJ,CAAC"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { BeaconConfig } from "@lodestar/config";
|
|
2
|
-
import { CachedBeaconStateAllForks, ISignatureSet
|
|
2
|
+
import { CachedBeaconStateAllForks, ISignatureSet } from "@lodestar/state-transition";
|
|
3
3
|
import { altair } from "@lodestar/types";
|
|
4
|
-
export declare function getSyncCommitteeSelectionProofSignatureSet(config: BeaconConfig,
|
|
4
|
+
export declare function getSyncCommitteeSelectionProofSignatureSet(config: BeaconConfig, state: CachedBeaconStateAllForks, contributionAndProof: altair.ContributionAndProof): ISignatureSet;
|
|
5
5
|
//# sourceMappingURL=syncCommitteeSelectionProof.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"syncCommitteeSelectionProof.d.ts","sourceRoot":"","sources":["../../../../src/chain/validation/signatureSets/syncCommitteeSelectionProof.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,YAAY,EAAC,MAAM,kBAAkB,CAAC;AAE9C,OAAO,EACL,yBAAyB,EACzB,aAAa,
|
|
1
|
+
{"version":3,"file":"syncCommitteeSelectionProof.d.ts","sourceRoot":"","sources":["../../../../src/chain/validation/signatureSets/syncCommitteeSelectionProof.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,YAAY,EAAC,MAAM,kBAAkB,CAAC;AAE9C,OAAO,EACL,yBAAyB,EACzB,aAAa,EAGd,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAC,MAAM,EAAM,MAAM,iBAAiB,CAAC;AAE5C,wBAAgB,0CAA0C,CACxD,MAAM,EAAE,YAAY,EACpB,KAAK,EAAE,yBAAyB,EAChC,oBAAoB,EAAE,MAAM,CAAC,oBAAoB,GAChD,aAAa,CAaf"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { DOMAIN_SYNC_COMMITTEE_SELECTION_PROOF } from "@lodestar/params";
|
|
2
2
|
import { SignatureSetType, computeSigningRoot, } from "@lodestar/state-transition";
|
|
3
3
|
import { ssz } from "@lodestar/types";
|
|
4
|
-
export function getSyncCommitteeSelectionProofSignatureSet(config,
|
|
4
|
+
export function getSyncCommitteeSelectionProofSignatureSet(config, state, contributionAndProof) {
|
|
5
5
|
const slot = contributionAndProof.contribution.slot;
|
|
6
6
|
const domain = config.getDomain(state.slot, DOMAIN_SYNC_COMMITTEE_SELECTION_PROOF, slot);
|
|
7
7
|
const signingData = {
|
|
@@ -9,8 +9,8 @@ export function getSyncCommitteeSelectionProofSignatureSet(config, index2pubkey,
|
|
|
9
9
|
subcommitteeIndex: contributionAndProof.contribution.subcommitteeIndex,
|
|
10
10
|
};
|
|
11
11
|
return {
|
|
12
|
-
type: SignatureSetType.
|
|
13
|
-
|
|
12
|
+
type: SignatureSetType.indexed,
|
|
13
|
+
index: contributionAndProof.aggregatorIndex,
|
|
14
14
|
signingRoot: computeSigningRoot(ssz.altair.SyncAggregatorSelectionData, signingData, domain),
|
|
15
15
|
signature: contributionAndProof.selectionProof,
|
|
16
16
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"syncCommitteeSelectionProof.js","sourceRoot":"","sources":["../../../../src/chain/validation/signatureSets/syncCommitteeSelectionProof.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,qCAAqC,EAAC,MAAM,kBAAkB,CAAC;AACvE,OAAO,
|
|
1
|
+
{"version":3,"file":"syncCommitteeSelectionProof.js","sourceRoot":"","sources":["../../../../src/chain/validation/signatureSets/syncCommitteeSelectionProof.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,qCAAqC,EAAC,MAAM,kBAAkB,CAAC;AACvE,OAAO,EAGL,gBAAgB,EAChB,kBAAkB,GACnB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAS,GAAG,EAAC,MAAM,iBAAiB,CAAC;AAE5C,MAAM,UAAU,0CAA0C,CACxD,MAAoB,EACpB,KAAgC,EAChC,oBAAiD;IAEjD,MAAM,IAAI,GAAG,oBAAoB,CAAC,YAAY,CAAC,IAAI,CAAC;IACpD,MAAM,MAAM,GAAG,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,EAAE,qCAAqC,EAAE,IAAI,CAAC,CAAC;IACzF,MAAM,WAAW,GAAuC;QACtD,IAAI;QACJ,iBAAiB,EAAE,oBAAoB,CAAC,YAAY,CAAC,iBAAiB;KACvE,CAAC;IACF,OAAO;QACL,IAAI,EAAE,gBAAgB,CAAC,OAAO;QAC9B,KAAK,EAAE,oBAAoB,CAAC,eAAe;QAC3C,WAAW,EAAE,kBAAkB,CAAC,GAAG,CAAC,MAAM,CAAC,2BAA2B,EAAE,WAAW,EAAE,MAAM,CAAC;QAC5F,SAAS,EAAE,oBAAoB,CAAC,cAAc;KAC/C,CAAC;AACJ,CAAC"}
|
|
@@ -61,7 +61,7 @@ export async function validateApiSyncCommittee(chain, headState, syncCommittee)
|
|
|
61
61
|
* Abstracted so it can be re-used in API validation.
|
|
62
62
|
*/
|
|
63
63
|
async function validateSyncCommitteeSigOnly(chain, headState, syncCommittee, prioritizeBls = false) {
|
|
64
|
-
const signatureSet = getSyncCommitteeSignatureSet(chain.config,
|
|
64
|
+
const signatureSet = getSyncCommitteeSignatureSet(chain.config, headState, syncCommittee);
|
|
65
65
|
if (!(await chain.bls.verifySignatureSets([signatureSet], { batchable: true, priority: prioritizeBls }))) {
|
|
66
66
|
throw new SyncCommitteeError(GossipAction.REJECT, {
|
|
67
67
|
code: SyncCommitteeErrorCode.INVALID_SIGNATURE,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"syncCommittee.js","sourceRoot":"","sources":["../../../src/chain/validation/syncCommittee.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,2BAA2B,EAAE,0BAA0B,EAAC,MAAM,kBAAkB,CAAC;AAGzF,OAAO,EAAC,SAAS,EAAC,MAAM,iBAAiB,CAAC;AAC1C,OAAO,EAAC,YAAY,EAAE,kBAAkB,EAAE,sBAAsB,EAAC,MAAM,oBAAoB,CAAC;AAE5F,OAAO,EAAC,4BAA4B,EAAC,MAAM,0BAA0B,CAAC;AAItE;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,2BAA2B,CAC/C,KAAmB,EACnB,aAA0C,EAC1C,MAAgB;IAEhB,MAAM,EAAC,IAAI,EAAE,cAAc,EAAE,eAAe,EAAC,GAAG,aAAa,CAAC;IAC9D,MAAM,WAAW,GAAG,SAAS,CAAC,eAAe,CAAC,CAAC;IAE/C,MAAM,SAAS,GAAG,KAAK,CAAC,YAAY,EAAE,CAAC;IACvC,MAAM,mBAAmB,GAAG,oCAAoC,CAAC,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,aAAa,CAAC,CAAC;IAE1G,6GAA6G;IAC7G,sDAAsD;IAEtD,uHAAuH;IACvH,qHAAqH;IACrH,sDAAsD;IACtD,sDAAsD;IAEtD,qHAAqH;IACrH,+CAA+C;IAC/C,MAAM,QAAQ,GAAG,KAAK,CAAC,yBAAyB,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,cAAc,CAAC,CAAC;IACnF,IAAI,QAAQ,EAAE,CAAC;QACb,IAAI,YAAY,GAAG,KAAK,CAAC;QACzB,IAAI,QAAQ,KAAK,WAAW,EAAE,CAAC;YAC7B,YAAY,GAAG,IAAI,CAAC;QACtB,CAAC;aAAM,CAAC;YACN,MAAM,QAAQ,GAAG,KAAK,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC;YAChD,KAAK,CAAC,OAAO,EAAE,mBAAmB,CAAC,iBAAiB,CAAC,GAAG,EAAE,CAAC;YAC3D,IAAI,WAAW,KAAK,QAAQ,EAAE,CAAC;gBAC7B,KAAK,CAAC,OAAO,EAAE,mBAAmB,CAAC,uBAAuB,CAAC,GAAG,EAAE,CAAC;YACnE,CAAC;iBAAM,CAAC;gBACN,YAAY,GAAG,IAAI,CAAC;YACtB,CAAC;QACH,CAAC;QAED,IAAI,YAAY,EAAE,CAAC;YACjB,MAAM,IAAI,kBAAkB,CAAC,YAAY,CAAC,MAAM,EAAE;gBAChD,IAAI,EAAE,sBAAsB,CAAC,4BAA4B;gBACzD,cAAc;gBACd,IAAI;gBACJ,QAAQ;gBACR,OAAO,EAAE,WAAW;aACrB,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,kKAAkK;IAClK,gIAAgI;IAChI,sDAAsD;IAEtD,qHAAqH;IACrH,MAAM,4BAA4B,CAAC,KAAK,EAAE,SAAS,EAAE,aAAa,CAAC,CAAC;IAEpE,mCAAmC;IACnC,KAAK,CAAC,yBAAyB,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,cAAc,EAAE,WAAW,CAAC,CAAC;IAE/E,OAAO,EAAC,mBAAmB,EAAC,CAAC;AAC/B,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,wBAAwB,CAC5C,KAAmB,EACnB,SAAoC,EACpC,aAA0C;IAE1C,MAAM,aAAa,GAAG,IAAI,CAAC;IAC3B,OAAO,4BAA4B,CAAC,KAAK,EAAE,SAAS,EAAE,aAAa,EAAE,aAAa,CAAC,CAAC;AACtF,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,4BAA4B,CACzC,KAAmB,EACnB,SAAoC,EACpC,aAA0C,EAC1C,aAAa,GAAG,KAAK;IAErB,MAAM,YAAY,GAAG,4BAA4B,CAAC,KAAK,CAAC,MAAM,EAAE,
|
|
1
|
+
{"version":3,"file":"syncCommittee.js","sourceRoot":"","sources":["../../../src/chain/validation/syncCommittee.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"syncCommitteeContributionAndProof.d.ts","sourceRoot":"","sources":["../../../src/chain/validation/syncCommitteeContributionAndProof.ts"],"names":[],"mappings":"AAEA,OAAO,EAAC,cAAc,EAAE,MAAM,EAAC,MAAM,iBAAiB,CAAC;AAEvD,OAAO,EAAC,YAAY,EAAC,MAAM,iBAAiB,CAAC;AAQ7C;;GAEG;AACH,wBAAsB,+CAA+C,CACnE,KAAK,EAAE,YAAY,EACnB,0BAA0B,EAAE,MAAM,CAAC,0BAA0B,EAC7D,+BAA+B,UAAQ,GACtC,OAAO,CAAC;IAAC,+BAA+B,EAAE,cAAc,EAAE,CAAA;CAAC,CAAC,
|
|
1
|
+
{"version":3,"file":"syncCommitteeContributionAndProof.d.ts","sourceRoot":"","sources":["../../../src/chain/validation/syncCommitteeContributionAndProof.ts"],"names":[],"mappings":"AAEA,OAAO,EAAC,cAAc,EAAE,MAAM,EAAC,MAAM,iBAAiB,CAAC;AAEvD,OAAO,EAAC,YAAY,EAAC,MAAM,iBAAiB,CAAC;AAQ7C;;GAEG;AACH,wBAAsB,+CAA+C,CACnE,KAAK,EAAE,YAAY,EACnB,0BAA0B,EAAE,MAAM,CAAC,0BAA0B,EAC7D,+BAA+B,UAAQ,GACtC,OAAO,CAAC;IAAC,+BAA+B,EAAE,cAAc,EAAE,CAAA;CAAC,CAAC,CAoF9D"}
|
|
@@ -10,7 +10,6 @@ export async function validateSyncCommitteeGossipContributionAndProof(chain, sig
|
|
|
10
10
|
const contributionAndProof = signedContributionAndProof.message;
|
|
11
11
|
const { contribution, aggregatorIndex } = contributionAndProof;
|
|
12
12
|
const { subcommitteeIndex, slot } = contribution;
|
|
13
|
-
const { index2pubkey } = chain;
|
|
14
13
|
const headState = chain.getHeadState();
|
|
15
14
|
validateGossipSyncCommitteeExceptSig(chain, headState, subcommitteeIndex, {
|
|
16
15
|
slot,
|
|
@@ -54,16 +53,15 @@ export async function validateSyncCommitteeGossipContributionAndProof(chain, sig
|
|
|
54
53
|
// [REJECT] The aggregator's validator index is in the declared subcommittee of the current sync committee --
|
|
55
54
|
// i.e. state.validators[contribution_and_proof.aggregator_index].pubkey in get_sync_subcommittee_pubkeys(state, contribution.subcommittee_index).
|
|
56
55
|
// > Checked in validateGossipSyncCommitteeExceptSig()
|
|
57
|
-
const participantPubkeys = syncCommitteeParticipantIndices.map((validatorIndex) => index2pubkey[validatorIndex]);
|
|
58
56
|
const signatureSets = [
|
|
59
57
|
// [REJECT] The contribution_and_proof.selection_proof is a valid signature of the SyncAggregatorSelectionData
|
|
60
58
|
// derived from the contribution by the validator with index contribution_and_proof.aggregator_index.
|
|
61
|
-
getSyncCommitteeSelectionProofSignatureSet(chain.config,
|
|
59
|
+
getSyncCommitteeSelectionProofSignatureSet(chain.config, headState, contributionAndProof),
|
|
62
60
|
// [REJECT] The aggregator signature, signed_contribution_and_proof.signature, is valid.
|
|
63
|
-
getContributionAndProofSignatureSet(chain.config,
|
|
61
|
+
getContributionAndProofSignatureSet(chain.config, headState, signedContributionAndProof),
|
|
64
62
|
// [REJECT] The aggregate signature is valid for the message beacon_block_root and aggregate pubkey derived from
|
|
65
63
|
// the participation info in aggregation_bits for the subcommittee specified by the contribution.subcommittee_index.
|
|
66
|
-
getSyncCommitteeContributionSignatureSet(chain.config, headState, contribution,
|
|
64
|
+
getSyncCommitteeContributionSignatureSet(chain.config, headState, contribution, syncCommitteeParticipantIndices),
|
|
67
65
|
];
|
|
68
66
|
if (!(await chain.bls.verifySignatureSets(signatureSets, { batchable: true }))) {
|
|
69
67
|
throw new SyncCommitteeError(GossipAction.REJECT, {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"syncCommitteeContributionAndProof.js","sourceRoot":"","sources":["../../../src/chain/validation/syncCommitteeContributionAndProof.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,0BAA0B,EAAC,MAAM,kBAAkB,CAAC;AAC5D,OAAO,EAA0B,yBAAyB,EAAC,MAAM,4BAA4B,CAAC;AAE9F,OAAO,EAAC,YAAY,EAAE,kBAAkB,EAAE,sBAAsB,EAAC,MAAM,oBAAoB,CAAC;AAE5F,OAAO,EACL,mCAAmC,EACnC,wCAAwC,EACxC,0CAA0C,GAC3C,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAC,oCAAoC,EAAC,MAAM,oBAAoB,CAAC;AAExE;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,+CAA+C,CACnE,KAAmB,EACnB,0BAA6D,EAC7D,+BAA+B,GAAG,KAAK;IAEvC,MAAM,oBAAoB,GAAG,0BAA0B,CAAC,OAAO,CAAC;IAChE,MAAM,EAAC,YAAY,EAAE,eAAe,EAAC,GAAG,oBAAoB,CAAC;IAC7D,MAAM,EAAC,iBAAiB,EAAE,IAAI,EAAC,GAAG,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"syncCommitteeContributionAndProof.js","sourceRoot":"","sources":["../../../src/chain/validation/syncCommitteeContributionAndProof.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,0BAA0B,EAAC,MAAM,kBAAkB,CAAC;AAC5D,OAAO,EAA0B,yBAAyB,EAAC,MAAM,4BAA4B,CAAC;AAE9F,OAAO,EAAC,YAAY,EAAE,kBAAkB,EAAE,sBAAsB,EAAC,MAAM,oBAAoB,CAAC;AAE5F,OAAO,EACL,mCAAmC,EACnC,wCAAwC,EACxC,0CAA0C,GAC3C,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAC,oCAAoC,EAAC,MAAM,oBAAoB,CAAC;AAExE;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,+CAA+C,CACnE,KAAmB,EACnB,0BAA6D,EAC7D,+BAA+B,GAAG,KAAK;IAEvC,MAAM,oBAAoB,GAAG,0BAA0B,CAAC,OAAO,CAAC;IAChE,MAAM,EAAC,YAAY,EAAE,eAAe,EAAC,GAAG,oBAAoB,CAAC;IAC7D,MAAM,EAAC,iBAAiB,EAAE,IAAI,EAAC,GAAG,YAAY,CAAC;IAE/C,MAAM,SAAS,GAAG,KAAK,CAAC,YAAY,EAAE,CAAC;IACvC,oCAAoC,CAAC,KAAK,EAAE,SAAS,EAAE,iBAAiB,EAAE;QACxE,IAAI;QACJ,cAAc,EAAE,oBAAoB,CAAC,eAAe;KACrD,CAAC,CAAC;IAEH,oGAAoG;IACpG,sDAAsD;IAEtD,0GAA0G;IAC1G,8EAA8E;IAC9E,yEAAyE;IACzE,sDAAsD;IAEtD,uHAAuH;IACvH,yEAAyE;IACzE,IAAI,CAAC,+BAA+B,IAAI,KAAK,CAAC,wBAAwB,CAAC,iBAAiB,CAAC,YAAY,CAAC,EAAE,CAAC;QACvG,MAAM,IAAI,kBAAkB,CAAC,YAAY,CAAC,MAAM,EAAE;YAChD,IAAI,EAAE,sBAAsB,CAAC,yCAAyC;SACvE,CAAC,CAAC;IACL,CAAC;IAED,kHAAkH;IAClH,iIAAiI;IACjI,IAAI,KAAK,CAAC,wBAAwB,CAAC,iBAAiB,CAAC,IAAI,EAAE,iBAAiB,EAAE,eAAe,CAAC,EAAE,CAAC;QAC/F,MAAM,IAAI,kBAAkB,CAAC,YAAY,CAAC,MAAM,EAAE;YAChD,IAAI,EAAE,sBAAsB,CAAC,uCAAuC;SACrE,CAAC,CAAC;IACL,CAAC;IAED,4FAA4F;IAC5F,MAAM,+BAA+B,GAAG,sBAAsB,CAAC,SAAoC,EAAE,YAAY,CAAC,CAAC;IACnH,IAAI,+BAA+B,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACjD,MAAM,IAAI,kBAAkB,CAAC,YAAY,CAAC,MAAM,EAAE;YAChD,IAAI,EAAE,sBAAsB,CAAC,cAAc;SAC5C,CAAC,CAAC;IACL,CAAC;IAED,yGAAyG;IACzG,0FAA0F;IAC1F,IAAI,CAAC,yBAAyB,CAAC,oBAAoB,CAAC,cAAc,CAAC,EAAE,CAAC;QACpE,MAAM,IAAI,kBAAkB,CAAC,YAAY,CAAC,MAAM,EAAE;YAChD,IAAI,EAAE,sBAAsB,CAAC,kBAAkB;YAC/C,eAAe,EAAE,oBAAoB,CAAC,eAAe;SACtD,CAAC,CAAC;IACL,CAAC;IAED,6GAA6G;IAC7G,kJAAkJ;IAClJ,sDAAsD;IAEtD,MAAM,aAAa,GAAG;QACpB,8GAA8G;QAC9G,qGAAqG;QACrG,0CAA0C,CAAC,KAAK,CAAC,MAAM,EAAE,SAAS,EAAE,oBAAoB,CAAC;QAEzF,wFAAwF;QACxF,mCAAmC,CAAC,KAAK,CAAC,MAAM,EAAE,SAAS,EAAE,0BAA0B,CAAC;QAExF,gHAAgH;QAChH,oHAAoH;QACpH,wCAAwC,CACtC,KAAK,CAAC,MAAM,EACZ,SAAoC,EACpC,YAAY,EACZ,+BAA+B,CAChC;KACF,CAAC;IAEF,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,GAAG,CAAC,mBAAmB,CAAC,aAAa,EAAE,EAAC,SAAS,EAAE,IAAI,EAAC,CAAC,CAAC,EAAE,CAAC;QAC7E,MAAM,IAAI,kBAAkB,CAAC,YAAY,CAAC,MAAM,EAAE;YAChD,IAAI,EAAE,sBAAsB,CAAC,iBAAiB;SAC/C,CAAC,CAAC;IACL,CAAC;IAED,0FAA0F;IAC1F,KAAK,CAAC,wBAAwB,CAAC,GAAG,CAAC,oBAAoB,EAAE,+BAA+B,CAAC,MAAM,CAAC,CAAC;IAEjG,OAAO,EAAC,+BAA+B,EAAC,CAAC;AAC3C,CAAC;AAED;;;;GAIG;AACH,SAAS,sBAAsB,CAC7B,KAA8B,EAC9B,YAA8C;IAE9C,MAAM,UAAU,GAAG,YAAY,CAAC,iBAAiB,GAAG,0BAA0B,CAAC;IAE/E,MAAM,aAAa,GAAG,KAAK,CAAC,QAAQ,CAAC,uBAAuB,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;IAChF,8GAA8G;IAC9G,MAAM,4BAA4B,GAAG,aAAa,CAAC,gBAAgB,CAAC,KAAK,CACvE,UAAU,EACV,UAAU,GAAG,0BAA0B,CACxC,CAAC;IACF,OAAO,YAAY,CAAC,eAAe,CAAC,eAAe,CAAC,4BAA4B,CAAC,CAAC;AACpF,CAAC"}
|
|
@@ -32,7 +32,7 @@ async function validateVoluntaryExit(chain, voluntaryExit, prioritizeBls = false
|
|
|
32
32
|
code: voluntaryExitValidityToErrorCode(validity),
|
|
33
33
|
});
|
|
34
34
|
}
|
|
35
|
-
const signatureSet = getVoluntaryExitSignatureSet(chain.config,
|
|
35
|
+
const signatureSet = getVoluntaryExitSignatureSet(chain.config, state.slot, voluntaryExit);
|
|
36
36
|
if (!(await chain.bls.verifySignatureSets([signatureSet], { batchable: true, priority: prioritizeBls }))) {
|
|
37
37
|
throw new VoluntaryExitError(GossipAction.REJECT, {
|
|
38
38
|
code: VoluntaryExitErrorCode.INVALID_SIGNATURE,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"voluntaryExit.js","sourceRoot":"","sources":["../../../src/chain/validation/voluntaryExit.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,qBAAqB,EACrB,4BAA4B,EAC5B,wBAAwB,GACzB,MAAM,4BAA4B,CAAC;AAEpC,OAAO,EACL,YAAY,EACZ,kBAAkB,EAClB,sBAAsB,EACtB,gCAAgC,GACjC,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EAAC,WAAW,EAAC,MAAM,mBAAmB,CAAC;AAE9C,MAAM,CAAC,KAAK,UAAU,wBAAwB,CAC5C,KAAmB,EACnB,aAAyC;IAEzC,MAAM,aAAa,GAAG,IAAI,CAAC;IAC3B,OAAO,qBAAqB,CAAC,KAAK,EAAE,aAAa,EAAE,aAAa,CAAC,CAAC;AACpE,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,2BAA2B,CAC/C,KAAmB,EACnB,aAAyC;IAEzC,OAAO,qBAAqB,CAAC,KAAK,EAAE,aAAa,CAAC,CAAC;AACrD,CAAC;AAED,KAAK,UAAU,qBAAqB,CAClC,KAAmB,EACnB,aAAyC,EACzC,aAAa,GAAG,KAAK;IAErB,sGAAsG;IACtG,iDAAiD;IACjD,IAAI,KAAK,CAAC,MAAM,CAAC,oBAAoB,CAAC,aAAa,CAAC,OAAO,CAAC,cAAc,CAAC,EAAE,CAAC;QAC5E,MAAM,IAAI,kBAAkB,CAAC,YAAY,CAAC,MAAM,EAAE;YAChD,IAAI,EAAE,sBAAsB,CAAC,cAAc;SAC5C,CAAC,CAAC;IACL,CAAC;IAED,wDAAwD;IACxD,EAAE;IACF,gFAAgF;IAChF,6DAA6D;IAC7D,sGAAsG;IACtG,kGAAkG;IAClG,6CAA6C;IAC7C,MAAM,KAAK,GAAG,MAAM,KAAK,CAAC,0BAA0B,CAAC,WAAW,CAAC,2BAA2B,CAAC,CAAC;IAE9F,gFAAgF;IAChF,mDAAmD;IACnD,MAAM,QAAQ,GAAG,wBAAwB,CAAC,KAAK,CAAC,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,aAAa,EAAE,KAAK,CAAC,CAAC;IAC5G,IAAI,QAAQ,KAAK,qBAAqB,CAAC,KAAK,EAAE,CAAC;QAC7C,MAAM,IAAI,kBAAkB,CAAC,YAAY,CAAC,MAAM,EAAE;YAChD,IAAI,EAAE,gCAAgC,CAAC,QAAQ,CAAC;SACjD,CAAC,CAAC;IACL,CAAC;IAED,MAAM,YAAY,GAAG,4BAA4B,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,
|
|
1
|
+
{"version":3,"file":"voluntaryExit.js","sourceRoot":"","sources":["../../../src/chain/validation/voluntaryExit.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,qBAAqB,EACrB,4BAA4B,EAC5B,wBAAwB,GACzB,MAAM,4BAA4B,CAAC;AAEpC,OAAO,EACL,YAAY,EACZ,kBAAkB,EAClB,sBAAsB,EACtB,gCAAgC,GACjC,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EAAC,WAAW,EAAC,MAAM,mBAAmB,CAAC;AAE9C,MAAM,CAAC,KAAK,UAAU,wBAAwB,CAC5C,KAAmB,EACnB,aAAyC;IAEzC,MAAM,aAAa,GAAG,IAAI,CAAC;IAC3B,OAAO,qBAAqB,CAAC,KAAK,EAAE,aAAa,EAAE,aAAa,CAAC,CAAC;AACpE,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,2BAA2B,CAC/C,KAAmB,EACnB,aAAyC;IAEzC,OAAO,qBAAqB,CAAC,KAAK,EAAE,aAAa,CAAC,CAAC;AACrD,CAAC;AAED,KAAK,UAAU,qBAAqB,CAClC,KAAmB,EACnB,aAAyC,EACzC,aAAa,GAAG,KAAK;IAErB,sGAAsG;IACtG,iDAAiD;IACjD,IAAI,KAAK,CAAC,MAAM,CAAC,oBAAoB,CAAC,aAAa,CAAC,OAAO,CAAC,cAAc,CAAC,EAAE,CAAC;QAC5E,MAAM,IAAI,kBAAkB,CAAC,YAAY,CAAC,MAAM,EAAE;YAChD,IAAI,EAAE,sBAAsB,CAAC,cAAc;SAC5C,CAAC,CAAC;IACL,CAAC;IAED,wDAAwD;IACxD,EAAE;IACF,gFAAgF;IAChF,6DAA6D;IAC7D,sGAAsG;IACtG,kGAAkG;IAClG,6CAA6C;IAC7C,MAAM,KAAK,GAAG,MAAM,KAAK,CAAC,0BAA0B,CAAC,WAAW,CAAC,2BAA2B,CAAC,CAAC;IAE9F,gFAAgF;IAChF,mDAAmD;IACnD,MAAM,QAAQ,GAAG,wBAAwB,CAAC,KAAK,CAAC,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,aAAa,EAAE,KAAK,CAAC,CAAC;IAC5G,IAAI,QAAQ,KAAK,qBAAqB,CAAC,KAAK,EAAE,CAAC;QAC7C,MAAM,IAAI,kBAAkB,CAAC,YAAY,CAAC,MAAM,EAAE;YAChD,IAAI,EAAE,gCAAgC,CAAC,QAAQ,CAAC;SACjD,CAAC,CAAC;IACL,CAAC;IAED,MAAM,YAAY,GAAG,4BAA4B,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC;IAC3F,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC,YAAY,CAAC,EAAE,EAAC,SAAS,EAAE,IAAI,EAAE,QAAQ,EAAE,aAAa,EAAC,CAAC,CAAC,EAAE,CAAC;QACvG,MAAM,IAAI,kBAAkB,CAAC,YAAY,CAAC,MAAM,EAAE;YAChD,IAAI,EAAE,sBAAsB,CAAC,iBAAiB;SAC/C,CAAC,CAAC;IACL,CAAC;AACH,CAAC"}
|
|
@@ -26,6 +26,8 @@ export type ValidatorMonitor = {
|
|
|
26
26
|
registerSyncAggregateInBlock(epoch: Epoch, syncAggregate: altair.SyncAggregate, syncCommitteeIndices: Uint32Array): void;
|
|
27
27
|
onceEveryEndOfEpoch(state: CachedBeaconStateAllForks): void;
|
|
28
28
|
scrapeMetrics(slotClock: Slot): void;
|
|
29
|
+
/** Returns the list of validator indices currently being monitored */
|
|
30
|
+
getMonitoredValidatorIndices(): ValidatorIndex[];
|
|
29
31
|
};
|
|
30
32
|
export type ValidatorMonitorOpts = {
|
|
31
33
|
/** Log validator monitor events as info */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validatorMonitor.d.ts","sourceRoot":"","sources":["../../src/chain/validatorMonitor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,eAAe,EAAC,MAAM,kBAAkB,CAAC;AAEjD,OAAO,EACL,yBAAyB,EAU1B,MAAM,4BAA4B,CAAC;AACpC,OAAO,EACL,WAAW,EACX,KAAK,EACL,kBAAkB,EAClB,OAAO,EACP,uBAAuB,EACvB,IAAI,EACJ,QAAQ,EACR,cAAc,EACd,MAAM,EACN,KAAK,EACN,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAgC,MAAM,
|
|
1
|
+
{"version":3,"file":"validatorMonitor.d.ts","sourceRoot":"","sources":["../../src/chain/validatorMonitor.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { ForkSeq, MIN_ATTESTATION_INCLUSION_DELAY, SLOTS_PER_EPOCH } from "@lodestar/params";
|
|
2
2
|
import { computeEpochAtSlot, computeStartSlotAtEpoch, computeTimeAtSlot, getBlockRootAtSlot, getCurrentSlot, parseAttesterFlags, parseParticipationFlags, } from "@lodestar/state-transition";
|
|
3
|
-
import { LogLevel, MapDef, MapDefMax, toRootHex } from "@lodestar/utils";
|
|
3
|
+
import { LogLevel, MapDef, MapDefMax, prettyPrintIndices, toRootHex } from "@lodestar/utils";
|
|
4
4
|
import { GENESIS_SLOT } from "../constants/constants.js";
|
|
5
5
|
/** The validator monitor collects per-epoch data about each monitored validator.
|
|
6
6
|
* Historical data will be kept around for `HISTORIC_EPOCHS` before it is pruned.
|
|
@@ -10,7 +10,8 @@ const MAX_CACHED_DISTINCT_TARGETS = 4;
|
|
|
10
10
|
// TODO GLOAS: re-evaluate these timings
|
|
11
11
|
const LATE_ATTESTATION_SUBMISSION_BPS = 5000;
|
|
12
12
|
const LATE_BLOCK_SUBMISSION_BPS = 2500;
|
|
13
|
-
|
|
13
|
+
/** Number of epochs to retain registered validators after their last registration */
|
|
14
|
+
const RETAIN_REGISTERED_VALIDATORS_EPOCHS = 2;
|
|
14
15
|
export var OpSource;
|
|
15
16
|
(function (OpSource) {
|
|
16
17
|
OpSource["api"] = "api";
|
|
@@ -74,6 +75,8 @@ export function createValidatorMonitor(metricsRegister, config, genesisTime, log
|
|
|
74
75
|
const log = (message, context) => {
|
|
75
76
|
logger[logLevel](message, context);
|
|
76
77
|
};
|
|
78
|
+
// Calculate retain time dynamically based on slot duration (2 epochs)
|
|
79
|
+
const retainRegisteredValidatorsMs = SLOTS_PER_EPOCH * config.SLOT_DURATION_MS * RETAIN_REGISTERED_VALIDATORS_EPOCHS;
|
|
77
80
|
/** The validators that require additional monitoring. */
|
|
78
81
|
const validators = new MapDef(() => ({
|
|
79
82
|
summaries: new Map(),
|
|
@@ -87,10 +90,17 @@ export function createValidatorMonitor(metricsRegister, config, genesisTime, log
|
|
|
87
90
|
lastRegisteredTimeMs: 0,
|
|
88
91
|
}));
|
|
89
92
|
let lastRegisteredStatusEpoch = -1;
|
|
93
|
+
// Track validator additions/removals per epoch for logging
|
|
94
|
+
const addedValidatorsInEpoch = new Set();
|
|
95
|
+
const removedValidatorsInEpoch = new Set();
|
|
90
96
|
const validatorMonitorMetrics = metricsRegister ? createValidatorMonitorMetrics(metricsRegister) : null;
|
|
91
97
|
const validatorMonitor = {
|
|
92
98
|
registerLocalValidator(index) {
|
|
99
|
+
const isNewValidator = !validators.has(index);
|
|
93
100
|
validators.getOrDefault(index).lastRegisteredTimeMs = Date.now();
|
|
101
|
+
if (isNewValidator) {
|
|
102
|
+
addedValidatorsInEpoch.add(index);
|
|
103
|
+
}
|
|
94
104
|
},
|
|
95
105
|
registerLocalValidatorInSyncCommittee(index, untilEpoch) {
|
|
96
106
|
const validator = validators.get(index);
|
|
@@ -109,6 +119,8 @@ export function createValidatorMonitor(metricsRegister, config, genesisTime, log
|
|
|
109
119
|
if (previousEpoch === -1) {
|
|
110
120
|
return;
|
|
111
121
|
}
|
|
122
|
+
// Track total balance instead of per-validator balance to reduce metric cardinality
|
|
123
|
+
let totalBalance = 0;
|
|
112
124
|
for (const [index, monitoredValidator] of validators.entries()) {
|
|
113
125
|
// We subtract two from the state of the epoch that generated these summaries.
|
|
114
126
|
//
|
|
@@ -161,7 +173,7 @@ export function createValidatorMonitor(metricsRegister, config, genesisTime, log
|
|
|
161
173
|
}
|
|
162
174
|
const balance = balances?.[index];
|
|
163
175
|
if (balance !== undefined) {
|
|
164
|
-
|
|
176
|
+
totalBalance += balance;
|
|
165
177
|
}
|
|
166
178
|
if (!summary.isPrevSourceAttester || !summary.isPrevTargetAttester || !summary.isPrevHeadAttester) {
|
|
167
179
|
log("Failed attestation in previous epoch", {
|
|
@@ -175,6 +187,9 @@ export function createValidatorMonitor(metricsRegister, config, genesisTime, log
|
|
|
175
187
|
});
|
|
176
188
|
}
|
|
177
189
|
}
|
|
190
|
+
if (balances !== undefined) {
|
|
191
|
+
validatorMonitorMetrics?.prevEpochOnChainBalance.set(totalBalance);
|
|
192
|
+
}
|
|
178
193
|
},
|
|
179
194
|
registerBeaconBlock(src, delaySec, block) {
|
|
180
195
|
const validator = validators.get(block.proposerIndex);
|
|
@@ -401,10 +416,25 @@ export function createValidatorMonitor(metricsRegister, config, genesisTime, log
|
|
|
401
416
|
}
|
|
402
417
|
// Prune validators not seen in a while
|
|
403
418
|
for (const [index, validator] of validators.entries()) {
|
|
404
|
-
if (Date.now() - validator.lastRegisteredTimeMs >
|
|
419
|
+
if (Date.now() - validator.lastRegisteredTimeMs > retainRegisteredValidatorsMs) {
|
|
405
420
|
validators.delete(index);
|
|
421
|
+
removedValidatorsInEpoch.add(index);
|
|
406
422
|
}
|
|
407
423
|
}
|
|
424
|
+
// Log validator monitor status every epoch
|
|
425
|
+
const allIndices = Array.from(validators.keys()).sort((a, b) => a - b);
|
|
426
|
+
const addedIndices = Array.from(addedValidatorsInEpoch).sort((a, b) => a - b);
|
|
427
|
+
const removedIndices = Array.from(removedValidatorsInEpoch).sort((a, b) => a - b);
|
|
428
|
+
log("Validator monitor status", {
|
|
429
|
+
epoch: computeEpochAtSlot(headState.slot),
|
|
430
|
+
added: addedIndices.length > 0 ? prettyPrintIndices(addedIndices) : "none",
|
|
431
|
+
removed: removedIndices.length > 0 ? prettyPrintIndices(removedIndices) : "none",
|
|
432
|
+
total: validators.size,
|
|
433
|
+
indices: prettyPrintIndices(allIndices),
|
|
434
|
+
});
|
|
435
|
+
// Clear tracking sets for next epoch
|
|
436
|
+
addedValidatorsInEpoch.clear();
|
|
437
|
+
removedValidatorsInEpoch.clear();
|
|
408
438
|
// Compute summaries of previous epoch attestation performance
|
|
409
439
|
const prevEpoch = computeEpochAtSlot(headState.slot) - 1;
|
|
410
440
|
// During the end of first epoch, the prev epoch with be -1
|
|
@@ -456,6 +486,12 @@ export function createValidatorMonitor(metricsRegister, config, genesisTime, log
|
|
|
456
486
|
*/
|
|
457
487
|
scrapeMetrics(slotClock) {
|
|
458
488
|
validatorMonitorMetrics?.validatorsConnected.set(validators.size);
|
|
489
|
+
// Update static metric with connected validator indices
|
|
490
|
+
if (validatorMonitorMetrics?.validatorsConnectedIndices) {
|
|
491
|
+
validatorMonitorMetrics.validatorsConnectedIndices.reset();
|
|
492
|
+
const allIndices = Array.from(validators.keys()).sort((a, b) => a - b);
|
|
493
|
+
validatorMonitorMetrics.validatorsConnectedIndices.set({ indices: prettyPrintIndices(allIndices) }, 1);
|
|
494
|
+
}
|
|
459
495
|
const epoch = computeEpochAtSlot(slotClock);
|
|
460
496
|
const slotInEpoch = slotClock % SLOTS_PER_EPOCH;
|
|
461
497
|
// Only start to report on the current epoch once we've progressed past the point where
|
|
@@ -518,6 +554,9 @@ export function createValidatorMonitor(metricsRegister, config, genesisTime, log
|
|
|
518
554
|
validatorMonitorMetrics?.prevEpochSyncCommitteeHits.set(prevEpochSyncCommitteeHits);
|
|
519
555
|
validatorMonitorMetrics?.prevEpochSyncCommitteeMisses.set(prevEpochSyncCommitteeMisses);
|
|
520
556
|
},
|
|
557
|
+
getMonitoredValidatorIndices() {
|
|
558
|
+
return Array.from(validators.keys()).sort((a, b) => a - b);
|
|
559
|
+
},
|
|
521
560
|
};
|
|
522
561
|
// Register a single collect() function to run all validatorMonitor metrics
|
|
523
562
|
validatorMonitorMetrics?.validatorsConnected.addCollect(() => {
|
|
@@ -742,16 +781,19 @@ function createValidatorMonitorMetrics(register) {
|
|
|
742
781
|
name: "validator_monitor_validators",
|
|
743
782
|
help: "Count of validators that are specifically monitored by this beacon node",
|
|
744
783
|
}),
|
|
784
|
+
validatorsConnectedIndices: register.gauge({
|
|
785
|
+
name: "validator_monitor_indices",
|
|
786
|
+
help: "Static metric with connected validator indices as label, value is always 1",
|
|
787
|
+
labelNames: ["indices"],
|
|
788
|
+
}),
|
|
745
789
|
validatorsInSyncCommittee: register.gauge({
|
|
746
790
|
name: "validator_monitor_validators_in_sync_committee",
|
|
747
791
|
help: "Count of validators monitored by this beacon node that are part of sync committee",
|
|
748
792
|
}),
|
|
749
793
|
// Validator Monitor Metrics (per-epoch summaries)
|
|
750
|
-
// Only track prevEpochOnChainBalance per index
|
|
751
794
|
prevEpochOnChainBalance: register.gauge({
|
|
752
795
|
name: "validator_monitor_prev_epoch_on_chain_balance",
|
|
753
|
-
help: "
|
|
754
|
-
labelNames: ["index"],
|
|
796
|
+
help: "Total balance of all monitored validators after an epoch",
|
|
755
797
|
}),
|
|
756
798
|
prevEpochOnChainAttesterHit: register.gauge({
|
|
757
799
|
name: "validator_monitor_prev_epoch_on_chain_attester_hit_total",
|