@lodestar/beacon-node 1.30.0 → 1.31.0-dev.065cb80811
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 +1 -1
- package/lib/api/impl/beacon/blocks/index.js +4 -2
- package/lib/api/impl/beacon/blocks/index.js.map +1 -1
- package/lib/api/impl/config/index.d.ts +1 -1
- package/lib/api/impl/config/index.js +5 -0
- package/lib/api/impl/config/index.js.map +1 -1
- package/lib/api/impl/validator/index.js +11 -33
- package/lib/api/impl/validator/index.js.map +1 -1
- package/lib/chain/archiveStore/historicalState/types.d.ts +2 -2
- package/lib/chain/archiveStore/utils/archiveBlocks.js +1 -2
- package/lib/chain/archiveStore/utils/archiveBlocks.js.map +1 -1
- package/lib/chain/blocks/blockInput/blockInput.d.ts +166 -0
- package/lib/chain/blocks/blockInput/blockInput.js +538 -0
- package/lib/chain/blocks/blockInput/blockInput.js.map +1 -0
- package/lib/chain/blocks/blockInput/errors.d.ts +38 -0
- package/lib/chain/blocks/blockInput/errors.js +17 -0
- package/lib/chain/blocks/blockInput/errors.js.map +1 -0
- package/lib/chain/blocks/blockInput/index.d.ts +5 -0
- package/lib/chain/blocks/blockInput/index.js +5 -0
- package/lib/chain/blocks/blockInput/index.js.map +1 -0
- package/lib/chain/blocks/blockInput/types.d.ts +117 -0
- package/lib/chain/blocks/blockInput/types.js +19 -0
- package/lib/chain/blocks/blockInput/types.js.map +1 -0
- package/lib/chain/blocks/blockInput/utils.d.ts +9 -0
- package/lib/chain/blocks/blockInput/utils.js +35 -0
- package/lib/chain/blocks/blockInput/utils.js.map +1 -0
- package/lib/chain/blocks/importBlock.d.ts +5 -0
- package/lib/chain/blocks/importBlock.js +27 -2
- package/lib/chain/blocks/importBlock.js.map +1 -1
- package/lib/chain/chain.d.ts +2 -0
- package/lib/chain/chain.js +16 -10
- package/lib/chain/chain.js.map +1 -1
- package/lib/chain/initState.js +11 -0
- package/lib/chain/initState.js.map +1 -1
- package/lib/chain/interface.d.ts +2 -0
- package/lib/chain/interface.js.map +1 -1
- package/lib/chain/opPools/aggregatedAttestationPool.d.ts +20 -14
- package/lib/chain/opPools/aggregatedAttestationPool.js +41 -49
- package/lib/chain/opPools/aggregatedAttestationPool.js.map +1 -1
- package/lib/chain/opPools/syncContributionAndProofPool.d.ts +11 -4
- package/lib/chain/opPools/syncContributionAndProofPool.js +50 -8
- package/lib/chain/opPools/syncContributionAndProofPool.js.map +1 -1
- package/lib/chain/opPools/types.d.ts +1 -1
- package/lib/chain/opPools/types.js +1 -1
- package/lib/chain/opPools/types.js.map +1 -1
- package/lib/chain/produceBlock/produceBlockBody.js +2 -2
- package/lib/chain/produceBlock/produceBlockBody.js.map +1 -1
- package/lib/chain/seenCache/seenAggregateAndProof.d.ts +3 -3
- package/lib/chain/seenCache/seenAggregateAndProof.js +22 -10
- package/lib/chain/seenCache/seenAggregateAndProof.js.map +1 -1
- package/lib/chain/seenCache/seenAttesters.js +20 -11
- package/lib/chain/seenCache/seenAttesters.js.map +1 -1
- package/lib/chain/seenCache/seenBlockInput.d.ts +84 -0
- package/lib/chain/seenCache/seenBlockInput.js +225 -0
- package/lib/chain/seenCache/seenBlockInput.js.map +1 -0
- package/lib/chain/validation/aggregateAndProof.js +10 -2
- package/lib/chain/validation/aggregateAndProof.js.map +1 -1
- package/lib/chain/validation/attestation.js +8 -0
- package/lib/chain/validation/attestation.js.map +1 -1
- package/lib/chain/validation/blobSidecar.js +2 -2
- package/lib/chain/validation/blobSidecar.js.map +1 -1
- package/lib/chain/validation/block.js +2 -2
- package/lib/chain/validation/block.js.map +1 -1
- package/lib/chain/validatorMonitor.d.ts +3 -3
- package/lib/chain/validatorMonitor.js +273 -56
- package/lib/chain/validatorMonitor.js.map +1 -1
- package/lib/metrics/metrics/lodestar.d.ts +39 -70
- package/lib/metrics/metrics/lodestar.js +72 -215
- package/lib/metrics/metrics/lodestar.js.map +1 -1
- package/lib/network/core/networkCore.d.ts +2 -1
- package/lib/network/core/networkCore.js.map +1 -1
- package/lib/network/core/networkCoreWorkerHandler.d.ts +2 -1
- package/lib/network/core/networkCoreWorkerHandler.js.map +1 -1
- package/lib/network/core/types.d.ts +3 -2
- package/lib/network/network.js +3 -3
- package/lib/network/network.js.map +1 -1
- package/lib/network/peers/score/interface.d.ts +1 -1
- package/lib/network/peers/score/interface.js.map +1 -1
- package/lib/network/peers/score/store.d.ts +2 -1
- package/lib/network/peers/score/store.js +1 -1
- package/lib/network/peers/score/store.js.map +1 -1
- package/lib/network/processor/gossipHandlers.js +5 -2
- package/lib/network/processor/gossipHandlers.js.map +1 -1
- package/lib/network/processor/index.d.ts +1 -6
- package/lib/network/processor/index.js +0 -14
- package/lib/network/processor/index.js.map +1 -1
- package/lib/node/nodejs.js +1 -1
- package/lib/node/nodejs.js.map +1 -1
- package/lib/util/graffiti.d.ts +3 -2
- package/lib/util/graffiti.js +2 -2
- package/lib/util/graffiti.js.map +1 -1
- package/package.json +15 -15
|
@@ -1,7 +1,8 @@
|
|
|
1
|
+
import { BlockInputSource } from "../../chain/blocks/blockInput/index.js";
|
|
1
2
|
import { BlobsSource, BlockSource } from "../../chain/blocks/types.js";
|
|
2
3
|
import { JobQueueItemType } from "../../chain/bls/index.js";
|
|
3
4
|
import { AttestationErrorCode, BlockErrorCode } from "../../chain/errors/index.js";
|
|
4
|
-
import { ScannedSlotsTerminationReason } from "../../chain/opPools/aggregatedAttestationPool.js";
|
|
5
|
+
import { type InvalidAttestationData, ScannedSlotsTerminationReason } from "../../chain/opPools/aggregatedAttestationPool.js";
|
|
5
6
|
import { InsertOutcome } from "../../chain/opPools/types.js";
|
|
6
7
|
import { RegenCaller, RegenFnName } from "../../chain/regen/interface.js";
|
|
7
8
|
import { ReprocessStatus } from "../../chain/reprocess.js";
|
|
@@ -236,7 +237,9 @@ export declare function createLodestarMetrics(register: RegistryMetricCreator, m
|
|
|
236
237
|
attestationNonBatchCount: import("@lodestar/utils").GaugeExtra<import("@lodestar/utils").NoLabels>;
|
|
237
238
|
};
|
|
238
239
|
gossipBlock: {
|
|
239
|
-
elapsedTimeTillReceived: import("@lodestar/utils").Histogram<
|
|
240
|
+
elapsedTimeTillReceived: import("@lodestar/utils").Histogram<{
|
|
241
|
+
source: OpSource;
|
|
242
|
+
}>;
|
|
240
243
|
elapsedTimeTillProcessed: import("@lodestar/utils").Histogram<import("@lodestar/utils").NoLabels>;
|
|
241
244
|
gossipValidation: {
|
|
242
245
|
recvToValidation: import("@lodestar/utils").Histogram<import("@lodestar/utils").NoLabels>;
|
|
@@ -342,7 +345,9 @@ export declare function createLodestarMetrics(register: RegistryMetricCreator, m
|
|
|
342
345
|
poolSlots: import("@lodestar/utils").GaugeExtra<import("@lodestar/utils").NoLabels>;
|
|
343
346
|
totalConsolidations: import("@lodestar/utils").GaugeExtra<import("@lodestar/utils").NoLabels>;
|
|
344
347
|
emptyAttestationData: import("@lodestar/utils").GaugeExtra<import("@lodestar/utils").NoLabels>;
|
|
345
|
-
invalidAttestationData: import("@lodestar/utils").GaugeExtra<
|
|
348
|
+
invalidAttestationData: import("@lodestar/utils").GaugeExtra<{
|
|
349
|
+
reason: InvalidAttestationData;
|
|
350
|
+
}>;
|
|
346
351
|
seenCommittees: import("@lodestar/utils").GaugeExtra<import("@lodestar/utils").NoLabels>;
|
|
347
352
|
};
|
|
348
353
|
};
|
|
@@ -364,77 +369,30 @@ export declare function createLodestarMetrics(register: RegistryMetricCreator, m
|
|
|
364
369
|
syncCommitteeMessagePoolInsertOutcome: import("@lodestar/utils").Counter<{
|
|
365
370
|
insertOutcome: InsertOutcome;
|
|
366
371
|
}>;
|
|
367
|
-
|
|
372
|
+
syncContributionAndProofPool: {
|
|
373
|
+
size: import("@lodestar/utils").GaugeExtra<import("@lodestar/utils").NoLabels>;
|
|
374
|
+
gossipInsertOutcome: import("@lodestar/utils").Counter<{
|
|
375
|
+
insertOutcome: InsertOutcome;
|
|
376
|
+
}>;
|
|
377
|
+
apiInsertOutcome: import("@lodestar/utils").Counter<{
|
|
378
|
+
insertOutcome: InsertOutcome;
|
|
379
|
+
}>;
|
|
380
|
+
blockRootsPerSlot: import("@lodestar/utils").GaugeExtra<import("@lodestar/utils").NoLabels>;
|
|
381
|
+
subnetsByBlockRoot: import("@lodestar/utils").GaugeExtra<{
|
|
382
|
+
index: number;
|
|
383
|
+
}>;
|
|
384
|
+
participantsByBlockRoot: import("@lodestar/utils").GaugeExtra<{
|
|
385
|
+
index: number;
|
|
386
|
+
}>;
|
|
387
|
+
getAggregateRoots: import("@lodestar/utils").GaugeExtra<import("@lodestar/utils").NoLabels>;
|
|
388
|
+
getAggregateSubnets: import("@lodestar/utils").GaugeExtra<import("@lodestar/utils").NoLabels>;
|
|
389
|
+
getAggregateParticipants: import("@lodestar/utils").GaugeExtra<import("@lodestar/utils").NoLabels>;
|
|
390
|
+
getAggregateReturnsEmpty: import("@lodestar/utils").GaugeExtra<import("@lodestar/utils").NoLabels>;
|
|
391
|
+
};
|
|
368
392
|
};
|
|
369
393
|
chain: {
|
|
370
394
|
blacklistedBlocks: import("@lodestar/utils").GaugeExtra<import("@lodestar/utils").NoLabels>;
|
|
371
395
|
};
|
|
372
|
-
validatorMonitor: {
|
|
373
|
-
validatorsConnected: import("@lodestar/utils").GaugeExtra<import("@lodestar/utils").NoLabels>;
|
|
374
|
-
validatorsInSyncCommittee: import("@lodestar/utils").GaugeExtra<import("@lodestar/utils").NoLabels>;
|
|
375
|
-
prevEpochOnChainBalance: import("@lodestar/utils").GaugeExtra<{
|
|
376
|
-
index: number;
|
|
377
|
-
}>;
|
|
378
|
-
prevEpochOnChainAttesterHit: import("@lodestar/utils").GaugeExtra<import("@lodestar/utils").NoLabels>;
|
|
379
|
-
prevEpochOnChainAttesterMiss: import("@lodestar/utils").GaugeExtra<import("@lodestar/utils").NoLabels>;
|
|
380
|
-
prevEpochOnChainSourceAttesterHit: import("@lodestar/utils").GaugeExtra<import("@lodestar/utils").NoLabels>;
|
|
381
|
-
prevEpochOnChainSourceAttesterMiss: import("@lodestar/utils").GaugeExtra<import("@lodestar/utils").NoLabels>;
|
|
382
|
-
prevEpochOnChainHeadAttesterHit: import("@lodestar/utils").GaugeExtra<import("@lodestar/utils").NoLabels>;
|
|
383
|
-
prevEpochOnChainHeadAttesterMiss: import("@lodestar/utils").GaugeExtra<import("@lodestar/utils").NoLabels>;
|
|
384
|
-
prevOnChainAttesterCorrectHead: import("@lodestar/utils").GaugeExtra<import("@lodestar/utils").NoLabels>;
|
|
385
|
-
prevOnChainAttesterIncorrectHead: import("@lodestar/utils").GaugeExtra<import("@lodestar/utils").NoLabels>;
|
|
386
|
-
prevEpochOnChainTargetAttesterHit: import("@lodestar/utils").GaugeExtra<import("@lodestar/utils").NoLabels>;
|
|
387
|
-
prevEpochOnChainTargetAttesterMiss: import("@lodestar/utils").GaugeExtra<import("@lodestar/utils").NoLabels>;
|
|
388
|
-
prevEpochOnChainInclusionDistance: import("@lodestar/utils").Histogram<import("@lodestar/utils").NoLabels>;
|
|
389
|
-
prevEpochAttestations: import("@lodestar/utils").Histogram<import("@lodestar/utils").NoLabels>;
|
|
390
|
-
prevEpochAttestationsMinDelaySeconds: import("@lodestar/utils").Histogram<import("@lodestar/utils").NoLabels>;
|
|
391
|
-
prevEpochAttestationAggregateInclusions: import("@lodestar/utils").Histogram<import("@lodestar/utils").NoLabels>;
|
|
392
|
-
prevEpochAttestationBlockInclusions: import("@lodestar/utils").Histogram<import("@lodestar/utils").NoLabels>;
|
|
393
|
-
prevEpochAttestationBlockMinInclusionDistance: import("@lodestar/utils").Histogram<import("@lodestar/utils").NoLabels>;
|
|
394
|
-
prevEpochBeaconBlocks: import("@lodestar/utils").Histogram<import("@lodestar/utils").NoLabels>;
|
|
395
|
-
prevEpochBeaconBlocksMinDelaySeconds: import("@lodestar/utils").Histogram<import("@lodestar/utils").NoLabels>;
|
|
396
|
-
prevEpochAggregatesTotal: import("@lodestar/utils").Histogram<import("@lodestar/utils").NoLabels>;
|
|
397
|
-
prevEpochAggregatesMinDelaySeconds: import("@lodestar/utils").Histogram<import("@lodestar/utils").NoLabels>;
|
|
398
|
-
prevEpochSyncCommitteeHits: import("@lodestar/utils").GaugeExtra<import("@lodestar/utils").NoLabels>;
|
|
399
|
-
prevEpochSyncCommitteeMisses: import("@lodestar/utils").GaugeExtra<import("@lodestar/utils").NoLabels>;
|
|
400
|
-
prevEpochSyncSignatureAggregateInclusions: import("@lodestar/utils").Histogram<import("@lodestar/utils").NoLabels>;
|
|
401
|
-
prevEpochAttestationSummary: import("@lodestar/utils").GaugeExtra<{
|
|
402
|
-
summary: string;
|
|
403
|
-
}>;
|
|
404
|
-
prevEpochBlockProposalSummary: import("@lodestar/utils").GaugeExtra<{
|
|
405
|
-
summary: string;
|
|
406
|
-
}>;
|
|
407
|
-
unaggregatedAttestationTotal: import("@lodestar/utils").GaugeExtra<{
|
|
408
|
-
src: OpSource;
|
|
409
|
-
}>;
|
|
410
|
-
unaggregatedAttestationDelaySeconds: import("@lodestar/utils").Histogram<{
|
|
411
|
-
src: OpSource;
|
|
412
|
-
}>;
|
|
413
|
-
unaggregatedAttestationSubmittedSentPeers: import("@lodestar/utils").Histogram<import("@lodestar/utils").NoLabels>;
|
|
414
|
-
aggregatedAttestationTotal: import("@lodestar/utils").GaugeExtra<{
|
|
415
|
-
src: OpSource;
|
|
416
|
-
}>;
|
|
417
|
-
aggregatedAttestationDelaySeconds: import("@lodestar/utils").Histogram<{
|
|
418
|
-
src: OpSource;
|
|
419
|
-
}>;
|
|
420
|
-
attestationInAggregateTotal: import("@lodestar/utils").GaugeExtra<{
|
|
421
|
-
src: OpSource;
|
|
422
|
-
}>;
|
|
423
|
-
attestationInAggregateDelaySeconds: import("@lodestar/utils").Histogram<{
|
|
424
|
-
src: OpSource;
|
|
425
|
-
}>;
|
|
426
|
-
attestationInBlockTotal: import("@lodestar/utils").GaugeExtra<import("@lodestar/utils").NoLabels>;
|
|
427
|
-
attestationInBlockDelaySlots: import("@lodestar/utils").Histogram<import("@lodestar/utils").NoLabels>;
|
|
428
|
-
attestationInBlockParticipants: import("@lodestar/utils").Histogram<import("@lodestar/utils").NoLabels>;
|
|
429
|
-
syncSignatureInAggregateTotal: import("@lodestar/utils").GaugeExtra<import("@lodestar/utils").NoLabels>;
|
|
430
|
-
beaconBlockTotal: import("@lodestar/utils").GaugeExtra<{
|
|
431
|
-
src: OpSource;
|
|
432
|
-
}>;
|
|
433
|
-
beaconBlockDelaySeconds: import("@lodestar/utils").Histogram<{
|
|
434
|
-
src: OpSource;
|
|
435
|
-
}>;
|
|
436
|
-
proposerBalanceDeltaKnown: import("@lodestar/utils").Histogram<import("@lodestar/utils").NoLabels>;
|
|
437
|
-
};
|
|
438
396
|
proposerBalanceDeltaAny: import("@lodestar/utils").Histogram<import("@lodestar/utils").NoLabels>;
|
|
439
397
|
stateCache: {
|
|
440
398
|
lookups: import("@lodestar/utils").GaugeExtra<import("@lodestar/utils").NoLabels>;
|
|
@@ -521,6 +479,17 @@ export declare function createLodestarMetrics(register: RegistryMetricCreator, m
|
|
|
521
479
|
reason: RejectReason;
|
|
522
480
|
}>;
|
|
523
481
|
};
|
|
482
|
+
blockInput: {
|
|
483
|
+
blockInputCount: import("@lodestar/utils").GaugeExtra<import("@lodestar/utils").NoLabels>;
|
|
484
|
+
duplicateBlockCount: import("@lodestar/utils").GaugeExtra<{
|
|
485
|
+
source: BlockInputSource;
|
|
486
|
+
}>;
|
|
487
|
+
duplicateBlobCount: import("@lodestar/utils").GaugeExtra<{
|
|
488
|
+
source: BlockInputSource;
|
|
489
|
+
}>;
|
|
490
|
+
createdByBlock: import("@lodestar/utils").GaugeExtra<import("@lodestar/utils").NoLabels>;
|
|
491
|
+
createdByBlob: import("@lodestar/utils").GaugeExtra<import("@lodestar/utils").NoLabels>;
|
|
492
|
+
};
|
|
524
493
|
};
|
|
525
494
|
regenFnCallTotal: import("@lodestar/utils").GaugeExtra<{
|
|
526
495
|
entrypoint: RegenFnName;
|
|
@@ -556,6 +556,7 @@ export function createLodestarMetrics(register, metadata, genesisTime) {
|
|
|
556
556
|
elapsedTimeTillReceived: register.histogram({
|
|
557
557
|
name: "lodestar_gossip_block_elapsed_time_till_received",
|
|
558
558
|
help: "Time elapsed between block slot time and the time block received via gossip",
|
|
559
|
+
labelNames: ["source"],
|
|
559
560
|
buckets: [0.5, 1, 2, 4, 6, 12],
|
|
560
561
|
}),
|
|
561
562
|
elapsedTimeTillProcessed: register.histogram({
|
|
@@ -814,6 +815,7 @@ export function createLodestarMetrics(register, metadata, genesisTime) {
|
|
|
814
815
|
invalidAttestationData: register.gauge({
|
|
815
816
|
name: "lodestar_oppool_aggregated_attestation_pool_packed_attestations_invalid_attestation_data_total",
|
|
816
817
|
help: "Total number of invalid attestation data when producing packed attestation",
|
|
818
|
+
labelNames: ["reason"],
|
|
817
819
|
}),
|
|
818
820
|
seenCommittees: register.gauge({
|
|
819
821
|
name: "lodestar_oppool_aggregated_attestation_pool_packed_attestations_seen_committees_total",
|
|
@@ -866,10 +868,52 @@ export function createLodestarMetrics(register, metadata, genesisTime) {
|
|
|
866
868
|
help: "Total number of InsertOutcome as a result of adding a SyncCommitteeMessage to pool",
|
|
867
869
|
labelNames: ["insertOutcome"],
|
|
868
870
|
}),
|
|
869
|
-
|
|
870
|
-
|
|
871
|
-
|
|
872
|
-
|
|
871
|
+
syncContributionAndProofPool: {
|
|
872
|
+
size: register.gauge({
|
|
873
|
+
name: "lodestar_oppool_sync_contribution_and_proof_pool_size",
|
|
874
|
+
help: "Current size of the SyncContributionAndProofPool unique by slot subnet and block root",
|
|
875
|
+
}),
|
|
876
|
+
gossipInsertOutcome: register.counter({
|
|
877
|
+
name: "lodestar_oppool_sync_contribution_and_proof_pool_gossip_insert_outcome_total",
|
|
878
|
+
help: "Total number of InsertOutcome as a result of adding a ContributionAndProof from gossip into the pool",
|
|
879
|
+
labelNames: ["insertOutcome"],
|
|
880
|
+
}),
|
|
881
|
+
apiInsertOutcome: register.counter({
|
|
882
|
+
name: "lodestar_oppool_sync_contribution_and_proof_pool_api_insert_outcome_total",
|
|
883
|
+
help: "Total number of InsertOutcome as a result of adding a ContributionAndProof from api into the pool",
|
|
884
|
+
labelNames: ["insertOutcome"],
|
|
885
|
+
}),
|
|
886
|
+
blockRootsPerSlot: register.gauge({
|
|
887
|
+
name: "lodestar_oppool_sync_contribution_and_proof_pool_block_roots_per_slot_total",
|
|
888
|
+
help: "Total number of block roots per slot in SyncContributionAndProofPool",
|
|
889
|
+
}),
|
|
890
|
+
subnetsByBlockRoot: register.gauge({
|
|
891
|
+
name: "lodestar_oppool_sync_contribution_and_proof_pool_subnets_by_block_root_total",
|
|
892
|
+
help: "Total number of subnets per block root in SyncContributionAndProofPool",
|
|
893
|
+
labelNames: ["index"],
|
|
894
|
+
}),
|
|
895
|
+
participantsByBlockRoot: register.gauge({
|
|
896
|
+
name: "lodestar_oppool_sync_contribution_and_proof_pool_participants_by_block_root_total",
|
|
897
|
+
help: "Total number of participants per block root in SyncContributionAndProofPool",
|
|
898
|
+
labelNames: ["index"],
|
|
899
|
+
}),
|
|
900
|
+
getAggregateRoots: register.gauge({
|
|
901
|
+
name: "lodestar_oppool_sync_contribution_and_proof_pool_get_aggregate_roots_total",
|
|
902
|
+
help: "Total number of block roots in SyncContributionAndProofPool.getAggregate(slot)",
|
|
903
|
+
}),
|
|
904
|
+
getAggregateSubnets: register.gauge({
|
|
905
|
+
name: "lodestar_oppool_sync_contribution_and_proof_pool_get_aggregate_subnets_total",
|
|
906
|
+
help: "Total number of subnets in SyncContributionAndProofPool.getAggregate(slot, root)",
|
|
907
|
+
}),
|
|
908
|
+
getAggregateParticipants: register.gauge({
|
|
909
|
+
name: "lodestar_oppool_sync_contribution_and_proof_pool_get_aggregate_participants_total",
|
|
910
|
+
help: "Total number of participants in SyncContributionAndProofPool.getAggregate(slot, root)",
|
|
911
|
+
}),
|
|
912
|
+
getAggregateReturnsEmpty: register.gauge({
|
|
913
|
+
name: "lodestar_oppool_sync_contribution_and_proof_pool_get_aggregate_returns_empty_total",
|
|
914
|
+
help: "Total number of empty returns in SyncContributionAndProofPool.getAggregate(slot, root)",
|
|
915
|
+
}),
|
|
916
|
+
},
|
|
873
917
|
},
|
|
874
918
|
chain: {
|
|
875
919
|
blacklistedBlocks: register.gauge({
|
|
@@ -877,217 +921,6 @@ export function createLodestarMetrics(register, metadata, genesisTime) {
|
|
|
877
921
|
help: "Total number of blacklisted blocks",
|
|
878
922
|
}),
|
|
879
923
|
},
|
|
880
|
-
// Validator monitoring
|
|
881
|
-
validatorMonitor: {
|
|
882
|
-
validatorsConnected: register.gauge({
|
|
883
|
-
name: "validator_monitor_validators",
|
|
884
|
-
help: "Count of validators that are specifically monitored by this beacon node",
|
|
885
|
-
}),
|
|
886
|
-
validatorsInSyncCommittee: register.gauge({
|
|
887
|
-
name: "validator_monitor_validators_in_sync_committee",
|
|
888
|
-
help: "Count of validators monitored by this beacon node that are part of sync committee",
|
|
889
|
-
}),
|
|
890
|
-
// Validator Monitor Metrics (per-epoch summaries)
|
|
891
|
-
// Only track prevEpochOnChainBalance per index
|
|
892
|
-
prevEpochOnChainBalance: register.gauge({
|
|
893
|
-
name: "validator_monitor_prev_epoch_on_chain_balance",
|
|
894
|
-
help: "Balance of validator after an epoch",
|
|
895
|
-
labelNames: ["index"],
|
|
896
|
-
}),
|
|
897
|
-
prevEpochOnChainAttesterHit: register.gauge({
|
|
898
|
-
name: "validator_monitor_prev_epoch_on_chain_attester_hit_total",
|
|
899
|
-
help: "Incremented if validator's submitted attestation is included in some blocks",
|
|
900
|
-
}),
|
|
901
|
-
prevEpochOnChainAttesterMiss: register.gauge({
|
|
902
|
-
name: "validator_monitor_prev_epoch_on_chain_attester_miss_total",
|
|
903
|
-
help: "Incremented if validator's submitted attestation is not included in any blocks",
|
|
904
|
-
}),
|
|
905
|
-
prevEpochOnChainSourceAttesterHit: register.gauge({
|
|
906
|
-
name: "validator_monitor_prev_epoch_on_chain_source_attester_hit_total",
|
|
907
|
-
help: "Incremented if the validator is flagged as a previous epoch source attester during per epoch processing",
|
|
908
|
-
}),
|
|
909
|
-
prevEpochOnChainSourceAttesterMiss: register.gauge({
|
|
910
|
-
name: "validator_monitor_prev_epoch_on_chain_source_attester_miss_total",
|
|
911
|
-
help: "Incremented if the validator is not flagged as a previous epoch source attester during per epoch processing",
|
|
912
|
-
}),
|
|
913
|
-
prevEpochOnChainHeadAttesterHit: register.gauge({
|
|
914
|
-
name: "validator_monitor_prev_epoch_on_chain_head_attester_hit_total",
|
|
915
|
-
help: "Incremented if the validator is flagged as a previous epoch head attester during per epoch processing",
|
|
916
|
-
}),
|
|
917
|
-
prevEpochOnChainHeadAttesterMiss: register.gauge({
|
|
918
|
-
name: "validator_monitor_prev_epoch_on_chain_head_attester_miss_total",
|
|
919
|
-
help: "Incremented if the validator is not flagged as a previous epoch head attester during per epoch processing",
|
|
920
|
-
}),
|
|
921
|
-
prevOnChainAttesterCorrectHead: register.gauge({
|
|
922
|
-
name: "validator_monitor_prev_epoch_on_chain_attester_correct_head_total",
|
|
923
|
-
help: "Total count of times a validator votes correct head",
|
|
924
|
-
}),
|
|
925
|
-
prevOnChainAttesterIncorrectHead: register.gauge({
|
|
926
|
-
name: "validator_monitor_prev_epoch_on_chain_attester_incorrect_head_total",
|
|
927
|
-
help: "Total count of times a validator votes incorrect head",
|
|
928
|
-
}),
|
|
929
|
-
prevEpochOnChainTargetAttesterHit: register.gauge({
|
|
930
|
-
name: "validator_monitor_prev_epoch_on_chain_target_attester_hit_total",
|
|
931
|
-
help: "Incremented if the validator is flagged as a previous epoch target attester during per epoch processing",
|
|
932
|
-
}),
|
|
933
|
-
prevEpochOnChainTargetAttesterMiss: register.gauge({
|
|
934
|
-
name: "validator_monitor_prev_epoch_on_chain_target_attester_miss_total",
|
|
935
|
-
help: "Incremented if the validator is not flagged as a previous epoch target attester during per epoch processing",
|
|
936
|
-
}),
|
|
937
|
-
prevEpochOnChainInclusionDistance: register.histogram({
|
|
938
|
-
name: "validator_monitor_prev_epoch_on_chain_inclusion_distance",
|
|
939
|
-
help: "The attestation inclusion distance calculated during per epoch processing",
|
|
940
|
-
// min inclusion distance is 1, usual values are 1,2,3 max is 32 (1 epoch)
|
|
941
|
-
buckets: [1, 2, 3, 5, 10, 32],
|
|
942
|
-
}),
|
|
943
|
-
prevEpochAttestations: register.histogram({
|
|
944
|
-
name: "validator_monitor_prev_epoch_attestations",
|
|
945
|
-
help: "The number of unagg. attestations seen in the previous epoch",
|
|
946
|
-
buckets: [0, 1, 2, 3],
|
|
947
|
-
}),
|
|
948
|
-
prevEpochAttestationsMinDelaySeconds: register.histogram({
|
|
949
|
-
name: "validator_monitor_prev_epoch_attestations_min_delay_seconds",
|
|
950
|
-
help: "The min delay between when the validator should send the attestation and when it was received",
|
|
951
|
-
buckets: [0.1, 0.25, 0.5, 1, 2, 5, 10],
|
|
952
|
-
}),
|
|
953
|
-
prevEpochAttestationAggregateInclusions: register.histogram({
|
|
954
|
-
name: "validator_monitor_prev_epoch_attestation_aggregate_inclusions",
|
|
955
|
-
help: "The count of times an attestation was seen inside an aggregate",
|
|
956
|
-
buckets: [0, 1, 2, 3, 5, 10],
|
|
957
|
-
}),
|
|
958
|
-
prevEpochAttestationBlockInclusions: register.histogram({
|
|
959
|
-
name: "validator_monitor_prev_epoch_attestation_block_inclusions",
|
|
960
|
-
help: "The count of times an attestation was seen inside a block",
|
|
961
|
-
buckets: [0, 1, 2, 3, 5],
|
|
962
|
-
}),
|
|
963
|
-
prevEpochAttestationBlockMinInclusionDistance: register.histogram({
|
|
964
|
-
name: "validator_monitor_prev_epoch_attestation_block_min_inclusion_distance",
|
|
965
|
-
help: "The minimum inclusion distance observed for the inclusion of an attestation in a block",
|
|
966
|
-
buckets: [1, 2, 3, 5, 10, 32],
|
|
967
|
-
}),
|
|
968
|
-
prevEpochBeaconBlocks: register.histogram({
|
|
969
|
-
name: "validator_monitor_prev_epoch_beacon_blocks",
|
|
970
|
-
help: "The number of beacon_blocks seen in the previous epoch",
|
|
971
|
-
buckets: [0, 1, 2, 3, 5, 10],
|
|
972
|
-
}),
|
|
973
|
-
prevEpochBeaconBlocksMinDelaySeconds: register.histogram({
|
|
974
|
-
name: "validator_monitor_prev_epoch_beacon_blocks_min_delay_seconds",
|
|
975
|
-
help: "The min delay between when the validator should send the block and when it was received",
|
|
976
|
-
buckets: [0.1, 0.25, 0.5, 1, 2, 5, 10],
|
|
977
|
-
}),
|
|
978
|
-
prevEpochAggregatesTotal: register.histogram({
|
|
979
|
-
name: "validator_monitor_prev_epoch_aggregates",
|
|
980
|
-
help: "The number of aggregates seen in the previous epoch",
|
|
981
|
-
buckets: [0, 1, 2, 3, 5, 10],
|
|
982
|
-
}),
|
|
983
|
-
prevEpochAggregatesMinDelaySeconds: register.histogram({
|
|
984
|
-
name: "validator_monitor_prev_epoch_aggregates_min_delay_seconds",
|
|
985
|
-
help: "The min delay between when the validator should send the aggregate and when it was received",
|
|
986
|
-
buckets: [0.1, 0.25, 0.5, 1, 2, 5, 10],
|
|
987
|
-
}),
|
|
988
|
-
prevEpochSyncCommitteeHits: register.gauge({
|
|
989
|
-
name: "validator_monitor_prev_epoch_sync_committee_hits",
|
|
990
|
-
help: "Count of times in prev epoch connected validators participated in imported block's syncAggregate",
|
|
991
|
-
}),
|
|
992
|
-
prevEpochSyncCommitteeMisses: register.gauge({
|
|
993
|
-
name: "validator_monitor_prev_epoch_sync_committee_misses",
|
|
994
|
-
help: "Count of times in prev epoch connected validators fail to participate in imported block's syncAggregate",
|
|
995
|
-
}),
|
|
996
|
-
prevEpochSyncSignatureAggregateInclusions: register.histogram({
|
|
997
|
-
name: "validator_monitor_prev_epoch_sync_signature_aggregate_inclusions",
|
|
998
|
-
help: "The count of times a sync signature was seen inside an aggregate",
|
|
999
|
-
buckets: [0, 1, 2, 3, 5, 10],
|
|
1000
|
-
}),
|
|
1001
|
-
prevEpochAttestationSummary: register.gauge({
|
|
1002
|
-
name: "validator_monitor_prev_epoch_attestation_summary",
|
|
1003
|
-
help: "Best guess of the node of the result of previous epoch validators attestation actions and causality",
|
|
1004
|
-
labelNames: ["summary"],
|
|
1005
|
-
}),
|
|
1006
|
-
prevEpochBlockProposalSummary: register.gauge({
|
|
1007
|
-
name: "validator_monitor_prev_epoch_block_proposal_summary",
|
|
1008
|
-
help: "Best guess of the node of the result of previous epoch validators block proposal actions and causality",
|
|
1009
|
-
labelNames: ["summary"],
|
|
1010
|
-
}),
|
|
1011
|
-
// Validator Monitor Metrics (real-time)
|
|
1012
|
-
unaggregatedAttestationTotal: register.gauge({
|
|
1013
|
-
name: "validator_monitor_unaggregated_attestation_total",
|
|
1014
|
-
help: "Number of unaggregated attestations seen",
|
|
1015
|
-
labelNames: ["src"],
|
|
1016
|
-
}),
|
|
1017
|
-
unaggregatedAttestationDelaySeconds: register.histogram({
|
|
1018
|
-
name: "validator_monitor_unaggregated_attestation_delay_seconds",
|
|
1019
|
-
help: "The delay between when the validator should send the attestation and when it was received",
|
|
1020
|
-
labelNames: ["src"],
|
|
1021
|
-
buckets: [0.1, 0.25, 0.5, 1, 2, 5, 10],
|
|
1022
|
-
}),
|
|
1023
|
-
unaggregatedAttestationSubmittedSentPeers: register.histogram({
|
|
1024
|
-
name: "validator_monitor_unaggregated_attestation_submitted_sent_peers_count",
|
|
1025
|
-
help: "Number of peers that an unaggregated attestation sent to",
|
|
1026
|
-
// as of Apr 2022, most of the time we sent to >30 peers per attestations
|
|
1027
|
-
// these bucket values just base on that fact to get equal range
|
|
1028
|
-
// refine if we want more reasonable values
|
|
1029
|
-
buckets: [0, 10, 20, 30],
|
|
1030
|
-
}),
|
|
1031
|
-
aggregatedAttestationTotal: register.gauge({
|
|
1032
|
-
name: "validator_monitor_aggregated_attestation_total",
|
|
1033
|
-
help: "Number of aggregated attestations seen",
|
|
1034
|
-
labelNames: ["src"],
|
|
1035
|
-
}),
|
|
1036
|
-
aggregatedAttestationDelaySeconds: register.histogram({
|
|
1037
|
-
name: "validator_monitor_aggregated_attestation_delay_seconds",
|
|
1038
|
-
help: "The delay between then the validator should send the aggregate and when it was received",
|
|
1039
|
-
labelNames: ["src"],
|
|
1040
|
-
buckets: [0.1, 0.25, 0.5, 1, 2, 5, 10],
|
|
1041
|
-
}),
|
|
1042
|
-
attestationInAggregateTotal: register.gauge({
|
|
1043
|
-
name: "validator_monitor_attestation_in_aggregate_total",
|
|
1044
|
-
help: "Number of times an attestation has been seen in an aggregate",
|
|
1045
|
-
labelNames: ["src"],
|
|
1046
|
-
}),
|
|
1047
|
-
attestationInAggregateDelaySeconds: register.histogram({
|
|
1048
|
-
name: "validator_monitor_attestation_in_aggregate_delay_seconds",
|
|
1049
|
-
help: "The delay between when the validator should send the aggregate and when it was received",
|
|
1050
|
-
labelNames: ["src"],
|
|
1051
|
-
buckets: [0.1, 0.25, 0.5, 1, 2, 5, 10],
|
|
1052
|
-
}),
|
|
1053
|
-
attestationInBlockTotal: register.gauge({
|
|
1054
|
-
name: "validator_monitor_attestation_in_block_total",
|
|
1055
|
-
help: "Number of times an attestation has been seen in a block",
|
|
1056
|
-
}),
|
|
1057
|
-
attestationInBlockDelaySlots: register.histogram({
|
|
1058
|
-
name: "validator_monitor_attestation_in_block_delay_slots",
|
|
1059
|
-
help: "The excess slots (beyond the minimum delay) between the attestation slot and the block slot",
|
|
1060
|
-
buckets: [0.1, 0.25, 0.5, 1, 2, 5, 10],
|
|
1061
|
-
}),
|
|
1062
|
-
attestationInBlockParticipants: register.histogram({
|
|
1063
|
-
name: "validator_monitor_attestation_in_block_participants",
|
|
1064
|
-
help: "The total participants in attestations of monitored validators included in blocks",
|
|
1065
|
-
buckets: [1, 5, 20, 50, 100, 200],
|
|
1066
|
-
}),
|
|
1067
|
-
syncSignatureInAggregateTotal: register.gauge({
|
|
1068
|
-
name: "validator_monitor_sync_signature_in_aggregate_total",
|
|
1069
|
-
help: "Number of times a sync signature has been seen in an aggregate",
|
|
1070
|
-
}),
|
|
1071
|
-
beaconBlockTotal: register.gauge({
|
|
1072
|
-
name: "validator_monitor_beacon_block_total",
|
|
1073
|
-
help: "Total number of beacon blocks seen",
|
|
1074
|
-
labelNames: ["src"],
|
|
1075
|
-
}),
|
|
1076
|
-
beaconBlockDelaySeconds: register.histogram({
|
|
1077
|
-
name: "validator_monitor_beacon_block_delay_seconds",
|
|
1078
|
-
help: "The delay between when the validator should send the block and when it was received",
|
|
1079
|
-
labelNames: ["src"],
|
|
1080
|
-
// we also want other nodes to received our published before 4s so add bucket 3 and 3.5
|
|
1081
|
-
buckets: [0.1, 0.25, 0.5, 1, 2, 3, 4, 6, 10],
|
|
1082
|
-
}),
|
|
1083
|
-
// Only for known
|
|
1084
|
-
proposerBalanceDeltaKnown: register.histogram({
|
|
1085
|
-
name: "validator_monitor_proposer_balance_delta_known_gwei",
|
|
1086
|
-
help: "Balance delta of known block proposer after importing a valid block",
|
|
1087
|
-
// Jul22 mainnet block reward is consistently between 29,000,000-28,000,000 GWei
|
|
1088
|
-
buckets: [10_000, 100_000, 1e6, 10e6, 20e6, 50e6, 100e6, 1000e6],
|
|
1089
|
-
}),
|
|
1090
|
-
},
|
|
1091
924
|
proposerBalanceDeltaAny: register.histogram({
|
|
1092
925
|
name: "lodestar_proposer_balance_delta_any_gwei",
|
|
1093
926
|
help: "Balance delta of every block proposer after importing a valid block",
|
|
@@ -1347,6 +1180,30 @@ export function createLodestarMetrics(register, metadata, genesisTime) {
|
|
|
1347
1180
|
labelNames: ["reason"],
|
|
1348
1181
|
}),
|
|
1349
1182
|
},
|
|
1183
|
+
blockInput: {
|
|
1184
|
+
blockInputCount: register.gauge({
|
|
1185
|
+
name: "lodestar_seen_block_input_cache_size",
|
|
1186
|
+
help: "Number of cached BlockInputs",
|
|
1187
|
+
}),
|
|
1188
|
+
duplicateBlockCount: register.gauge({
|
|
1189
|
+
name: "lodestar_seen_block_input_cache_duplicate_block_count",
|
|
1190
|
+
help: "Total number of duplicate blocks that pass validation and attempt to be cached but are known",
|
|
1191
|
+
labelNames: ["source"],
|
|
1192
|
+
}),
|
|
1193
|
+
duplicateBlobCount: register.gauge({
|
|
1194
|
+
name: "lodestar_seen_block_input_cache_duplicate_blob_count",
|
|
1195
|
+
help: "Total number of duplicate blobs that pass validation and attempt to be cached but are known",
|
|
1196
|
+
labelNames: ["source"],
|
|
1197
|
+
}),
|
|
1198
|
+
createdByBlock: register.gauge({
|
|
1199
|
+
name: "lodestar_seen_block_input_cache_items_created_by_block",
|
|
1200
|
+
help: "Number of BlockInputs created via a block being seen first",
|
|
1201
|
+
}),
|
|
1202
|
+
createdByBlob: register.gauge({
|
|
1203
|
+
name: "lodestar_seen_block_input_cache_items_created_by_blob",
|
|
1204
|
+
help: "Number of BlockInputs created via a blob being seen first",
|
|
1205
|
+
}),
|
|
1206
|
+
},
|
|
1350
1207
|
},
|
|
1351
1208
|
regenFnCallTotal: register.gauge({
|
|
1352
1209
|
name: "lodestar_regen_fn_call_total",
|