Performance benchmarking is a critical practice that involves evaluating and comparing the efficiency of various validators, both internal and external, to find areas of efficiency. Rated APIs provide access to standardized performance metrics, which can be used by:

  1. Node Operators to continuously monitor their own performance metrics in relation to their competitors. This not only helps in identifying areas of improvement but also facilitates the formulation of effective strategies to enhance their operational efficiency and service quality.

  2. Custodians and Centralised Exchanges to conduct thorough evaluations of validator operators, comparing their performance against network standards and other validators. This comprehensive analysis assists in making strategic decisions regarding SLAs and pricing, ensuring optimal performance and cost-effectiveness.

Integration Steps

Step 1: Generate Authorization Token

Sign into the Rated Console to generate your API Token.

Step 2: Get Performance Data

The Rated API offers time window aggregation, allowing you to consolidate data over various time periods such as day, week, month, quarter, year or all time. You can retrieve performance data in two ways:

  1. Pre-materialized views
  2. Specific validator groups

Step 2.1: Getting Performance Data for Pre-materialized Views

Imagine you’re Kiln (a Node Operator), Lido (a Pool), or Coinbase (an Exchange). You want all your performance details for August 2023, shown daily. Here’s how you’d go about getting this data.

GET
/
v0
/
eth
/
operators
/
{operator_id}
/
effectiveness
KeyRequired?ValueDescription
operator_idYesstringName of the Entity. For this example, you should either put Lido ,Kiln orCoinbase Note: the operator_id is case-sensitive and should follow the same typecase as they are on the Rated Explorer
idTypeYesstringThe type of entity class you would like returned. You might ask for pool, poolShare, nodeOperator, depositAddress, or withdrawalAddress. Note: it is optional and can be inferred automatically for pools, pool shares and node operators. It defaults to depositAddress if it is missing and an address is provided.
granularityYesstringThe size of time increments you are looking to query. Can be day / week / month / quarter / year. For this example, you should set granularity to day.
fromYesstringStart day (integer) or date (e.g. from=“2022-12-01”) For this example, set from to 2023-08-31
sizeYesintegerThe number of results included per page. For this example, you should set size as 31 as we want the monthly data for August 2023.
filterTypeYesstringhour, day and datetime For this example, set to datetime
includeYesarrayA list of field names. To get the performance data, you should include the following data: day, validatorCount, avgInclusionDelay, avgUptime, avgCorrectness, avgProposerEffectiveness, avgValidatorEffectiveness, avgAttesterEffectiveness,sumCorrectHead, sumCorrectTarget, sumCorrectSource,sumInclusionDelay, sumProposedCount, sumProposerDutiesCount, slashesCollected, slashesReceived, sumMissedSyncSignatures, sumLateSourceVotes, sumWrongTargetVotes, sumLateTargetVotes, sumMissedAttestations, sumWrongHeadVotes, sumExecutionProposedEmptyCount

Example: Obtaining daily performance metrics for the month of August 2023 for Kiln

Step 2.2: Getting Performance Data for Specific Validator Groups

For validator groupings, you will need to call the Aggregating validator indices endpoint. We’ll show this similarly as above for all performance details for the month of August 2023 for a set of validator indices, aggregated daily.

GET
/
v0
/
eth
/
validators
/
effectiveness
KeyRequired?ValueDescription
pubkeys (OR) indicesYesarray [string] (OR) array [integer]Array of validator pubkeys or indicies you’re performing the grouped analysis for. For this example, you should put indices as 675893 675894 and 675895
filterTypeYesstringhour, day and datetime. For this example, set to datetime
fromYesstringThe most recent date for your desired timeline. In this example, it is 2023-08-31
sizeYesintegerThe number of results included per page. For this example, you should set size as 31 as we want the monthly data for August 2023.
granularityYesstringThe size of time increments you are looking to query. Can be day / week / month / quarter / year. For this example, set granularity to day.
groupByYesstringAggregation groupings. Can be timeWindow if you’d like to aggregation for your desired time window or validator if you’d like it per validator. For this example, set it to timeWindow.
includeYesarray [string]A list of field names. To get the performance data, you should include the following data: day, validatorCount, avgInclusionDelay, avgUptime, avgCorrectness, avgProposerEffectiveness, avgValidatorEffectiveness, avgAttesterEffectiveness,sumCorrectHead, sumCorrectTarget, sumCorrectSource,sumInclusionDelay, sumProposedCount, sumProposerDutiesCount, slashesCollected, slashesReceived, sumMissedSyncSignatures, sumLateSourceVotes, sumWrongTargetVotes, sumLateTargetVotes, sumMissedAttestations, sumWrongHeadVotes, sumExecutionProposedEmptyCount

Example: Obtaining daily performance metrics for the month of August 2023 for Validator group {675893,675894,675895}