Performance Benchmarking
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:
-
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.
-
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:
- Pre-materialized views
- 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.
Key | Required? | Value | Description |
---|---|---|---|
operator_id | Yes | string | Name 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 |
idType | Yes | string | The 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. |
granularity | Yes | string | The 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 . |
from | Yes | string | Start day (integer) or date (e.g. from=“2022-12-01”) For this example, set from to 2023-08-31 |
size | Yes | integer | The number of results included per page. For this example, you should set size as 31 as we want the monthly data for August 2023. |
filterType | Yes | string | hour , day and datetime For this example, set to datetime |
include | Yes | array | 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 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.
Key | Required? | Value | Description |
---|---|---|---|
pubkeys (OR) indices | Yes | array [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 |
filterType | Yes | string | hour , day and datetime . For this example, set to datetime |
from | Yes | string | The most recent date for your desired timeline. In this example, it is 2023-08-31 |
size | Yes | integer | The number of results included per page. For this example, you should set size as 31 as we want the monthly data for August 2023. |
granularity | Yes | string | The size of time increments you are looking to query. Can be day / week / month / quarter / year . For this example, set granularity to day . |
groupBy | Yes | string | Aggregation 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 . |
include | Yes | array [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}