Awesome
Merge Testnet Verifier
Performs a continuous verification of a Merge (Execution-Consensus) testnet and validates the final health by measuring and comparing a set of given metrics Post-Merge.
Command Line Arguments
--client
Execution/Beacon client URL endpoint to check for the client's status in the form: <Client name>,http://<URL>:<IP>. Parameter can appear multiple times for multiple clients.
--ttd
Terminal Total Difficulty of the Testnet.
--override-verifications
Specifies the path to a verifications YML file to override the default verifications.
--extra-verifications
Specifies the path to a verifications YML file to be added to the default verifications.
--ttd-epoch-limit
Max number of epochs to wait for the TTD to be reached. Disable timeout: 0. Default: 5
--verif-epoch-limit
Max number of epochs to wait for successful verifications after the merge has occurred. Disable timeout: 0. Default: 5
Verifications YML File Format
The verifications file is a YML formatted file that contains a list of all verifications to be performed during the testnet's runtime.
Each verification element contains the following fields (all mandatory unless specified otherwise):
- VerificationName, string
Name of the verification, which will be printed on the output to help identify when the verification fails.
- ClientLayer, string
Layer from which the verification data will be obtained -- only accepts "Execution" or "Beacon" values thus far.
- PostMerge, bool
Whether the verification data should only be gathered after the merge has occurred (true) or during all the testnet's runtime (false).
- MetricName, string
Metric to be collected which then will be aggregated and compared to obtain the verification's outcome. Only one data point of this metric will be collected per block/slot. See Supported Metrics section.
- AggregateFunction, string
Aggregation function used to produce a single value that can be compared in the PassCriteria. See Supported Aggregate Functions section.
- AggregateFunctionValue, string, optional
Optional aggregate value used for some of the aggregation functions.
- PassCriteria, string
Comparison criteria used to determine a successful verification. See Supported Pass Criterias secion.
- PassValue, string
Pass value used in the PassCriteria comparison.
Supported Metrics
Execution Layer
- ExecutionBlockCount
Number of execution blocks produced.
- ExecutionBaseFee
BaseFee Value of the block header.
- ExecutionGasUsed
Total gas used of the block header.
- ExecutionDifficulty
Difficulty value of the block header.
- ExecutionMixHash
MixHash value of the block header.
- ExecutionUnclesHash
Uncles hash value of the block header.
- ExecutionNonce
Nonce value of the block header.
Beacon Layer
- BeaconBlockCount
Number of beacon blocks produced -- can only be 0 or 1 per slot.
- FinalizedEpoch
Number of times the finalized_epoch
value in the finality_checkpoints
changes values; 1 if the finalized_epoch
value changes, 0 if the value is the same as the previous slot.
- JustifiedEpoch
Number of times the justified_epoch
value in the finality_checkpoints
changes values; 1 if the justified_epoch
value changes, 0 if the value is the same as the previous slot.
- EpochAttestationPerformance
Attestation performance throughout the Epoch. Currently can only be obtained if a Lighthouse client is provided, since it uses the validator_inclusion
endpoint and it's calculated by getting the ratio between previous_epoch_head_attesting_gwei
and previous_epoch_active_gwei
.
- EpochTargetAttestationPerformance
Target attestation performance throughout the Epoch. Currently can only be obtained if a Lighthouse client is providedm, since it uses the validator_inclusion
endpoint and it's calculated by getting the ratio between previous_epoch_target_attesting_gwei
and previous_epoch_active_gwei
.
- SyncParticipationCount
Sync participation per slot -- Set bit count of sync_committee_bits
- SyncParticipationPercentage
Sync participation percentage per slot -- Set bit count of sync_committee_bits
divided by the SYNC_COMMITTEE_SIZE
value of the spec.
Supported Aggregate Functions
- CountEqual
(Requires AggregateFunctionValue): Count all the values equal to AggregateFunctionValue.
- CountUnequal
(Requires AggregateFunctionValue): Count all the values not equal to AggregateFunctionValue.
- Average
Arithmetic mean of all the data points obtained -- 0 when no data points were obtained.
- Sum
Sum of all the data points obtained.
- Min
Minimum value of all data points obtained.
- Max
Maximum value of all data points obtained.
- Percentage
Percentage (0 - 100) of all data points that are greater than zero.
Supported Aggregate Functions
- MinimumValue
Minimum value that the aggregated value can have in order for the verification to be successful.
- MaximumValue
Maximum value that the aggregated value can have in order for the verification to be successful.
Default Verifications
See default_verifications.yml