Performance

A series of endpoints that drill down on performance related metrics for both entities and validators.

Entity Performance

We have structured the performance endpoints around three main pillars,

  1. the avg effectiveness of an entity

  2. drilldown of performance associated with attestation duties

  3. drilldown of performance associated with proposer duties

You will find that this is similar to how we defined Rated Effectiveness Rating (RAVER), which is a measure of how well an entity has been performing its deterministic duties - attestations and proposals, over time.

Get effectiveness for Pools, Operators and Addresses

This endpoint returns a bunch of useful information about the historical performance of a single pool, node operator or deposit/withdrawal address. Use this endpoint to retrieve top level metrics on proposer effectiveness, attester effectiveness and overall effectiveness of an entity.

GET/v1/eth/entities/{entity_id}/effectiveness
Path parameters
entity_id*Entity Id
Query parameters
Header parameters
Response

Successful Response

Body
previousPrevious
nextNext
pages*Pages
results*Results
Request
const response = await fetch('/v1/eth/entities/{entity_id}/effectiveness', {
    method: 'GET',
    headers: {},
});
const data = await response.json();
Response
{
  "previous": "https://endpoint?limit=10&offset=10",
  "next": "https://endpoint?limit=10&offset=10",
  "pages": 10,
  "results": [
    {
      "day": 796,
      "hour": 19056,
      "startDate": "2023-01-01",
      "endDate": "2023-01-07",
      "startDay": 796,
      "endDay": 802,
      "date": "2023-01-01",
      "startEpoch": 63744,
      "endEpoch": 63775,
      "validatorCount": 16075,
      "avgInclusionDelay": 1.0138705386457403,
      "avgUptime": 0.9999466390184881,
      "avgCorrectness": 0.9929917401071404,
      "avgProposerEffectiveness": 99.53271028037379,
      "avgValidatorEffectiveness": 97.96642775943795,
      "avgAttesterEffectiveness": 97.9580945527236
    }
  ]
}

Get attestation duties metrics for Pools, Operators and Addresses

This endpoint returns drilldowns on performance metrics around attestation duties for a single pool, node operator or deposit/withdrawal address.

GET/v1/eth/entities/{entity_id}/attestations
Path parameters
entity_id*Entity Id
Query parameters
Header parameters
Response

Successful Response

Body
previousPrevious
nextNext
pages*Pages
results*Results
Request
const response = await fetch('/v1/eth/entities/{entity_id}/attestations', {
    method: 'GET',
    headers: {},
});
const data = await response.json();
Response
{
  "previous": "https://endpoint?limit=10&offset=10",
  "next": "https://endpoint?limit=10&offset=10",
  "pages": 10,
  "results": [
    {
      "day": 796,
      "hour": 19056,
      "startDate": "2023-01-01",
      "endDate": "2023-01-07",
      "startDay": 796,
      "endDay": 802,
      "date": "2023-01-01",
      "startEpoch": 63744,
      "endEpoch": 63775,
      "validatorCount": 16075,
      "totalUniqueAttestations": 2341,
      "sumMissedAttestations": 67958,
      "sumMissedSyncSignatures": 965,
      "sumCorrectHead": 3234,
      "sumCorrectTarget": 234,
      "sumCorrectSource": 567,
      "sumWrongHeadVotes": 756,
      "sumWrongTargetVotes": 968,
      "sumLateTargetVotes": 123,
      "sumLateSourceVotes": 675,
      "avgAttesterEffectiveness": 97.9580945527236
    }
  ]
}

Get proposer duties metrics for Pools, Operators and Addresses

This endpoint returns drill-downs on performance metrics around proposer duties for a single pool, node operator or deposit/withdrawal address.

GET/v1/eth/entities/{entity_id}/proposals
Path parameters
entity_id*Entity Id
Query parameters
Header parameters
Response

Successful Response

Body
previousPrevious
nextNext
pages*Pages
results*Results
Request
const response = await fetch('/v1/eth/entities/{entity_id}/proposals', {
    method: 'GET',
    headers: {},
});
const data = await response.json();
Response
{
  "previous": "https://endpoint?limit=10&offset=10",
  "next": "https://endpoint?limit=10&offset=10",
  "pages": 10,
  "results": [
    {
      "day": 796,
      "hour": 19056,
      "startDate": "2023-01-01",
      "endDate": "2023-01-07",
      "startDay": 796,
      "endDay": 802,
      "date": "2023-01-01",
      "startEpoch": 63744,
      "endEpoch": 63775,
      "validatorCount": 16075,
      "sumProposedCount": 213,
      "sumProposerDutiesCount": 214,
      "avgProposerEffectiveness": 99.53271028037379
    }
  ]
}

Validator Performance

At validator level, the same structure persists ie the performance endpoints are centered around three main pillars,

  1. the effectiveness of a validator index

  2. drilldown of performance associated with attestation duties

  3. drilldown of performance associated with proposer duties

Validator performance endpoints can further be grouped into individual validator index or pubkey endpoints and aggregate endpoints. Find more details below 👇

Individual Validators

Get validator effectiveness

This endpoint returns all the useful information you will ever need on the historical performance of a single validator index. Use this endpoint to retrieve top level metrics on proposer effectiveness, attester effectiveness and overall effectiveness of a validator index or pubkey.

GET/v1/eth/validators/{validator_index_or_pubkey}/effectiveness
Path parameters
validator_index_or_pubkey*Validator Index Or Pubkey
Query parameters
Header parameters
Response

Successful Response

Body
previousPrevious
nextNext
pages*Pages
results*Results
Request
const response = await fetch('/v1/eth/validators/{validator_index_or_pubkey}/effectiveness', {
    method: 'GET',
    headers: {},
});
const data = await response.json();
Response
{
  "previous": "https://endpoint?limit=10&offset=10",
  "next": "https://endpoint?limit=10&offset=10",
  "pages": 10,
  "results": [
    {
      "day": 796,
      "hour": 19056,
      "startDate": "2023-01-01",
      "endDate": "2023-01-07",
      "startDay": 796,
      "endDay": 802,
      "date": "2023-01-01",
      "validator_index": 1,
      "startEpoch": 63744,
      "endEpoch": 63775,
      "avgCorrectness": 0.9896296296296296,
      "avgInclusion_delay": 1.031111111111111,
      "sumInclusion_delay": 232,
      "uptime": 1,
      "attesterEffectiveness": 95.97701149425288,
      "proposerEffectiveness": 99.53271028037379,
      "validatorEffectiveness": 99.53271028037379
    }
  ]
}

Get validator attestation duties metrics

This endpoint returns drilldowns on performance metrics around attestation duties for a single validator index.

GET/v1/eth/validators/{validator_index_or_pubkey}/attestations
Path parameters
validator_index_or_pubkey*Validator Index Or Pubkey
Query parameters
Header parameters
Response

Successful Response

Body
previousPrevious
nextNext
pages*Pages
results*Results
Request
const response = await fetch('/v1/eth/validators/{validator_index_or_pubkey}/attestations', {
    method: 'GET',
    headers: {},
});
const data = await response.json();
Response
{
  "previous": "https://endpoint?limit=10&offset=10",
  "next": "https://endpoint?limit=10&offset=10",
  "pages": 10,
  "results": [
    {
      "day": 796,
      "hour": 19056,
      "startDate": "2023-01-01",
      "endDate": "2023-01-07",
      "startDay": 796,
      "endDay": 802,
      "date": "2023-01-01",
      "validator_index": 1,
      "total_attestations": 230,
      "total_unique_attestations": 225,
      "sum_correct_head": 219,
      "sum_correct_target": 224,
      "avg_correctness": 0.9896296296296296,
      "total_attestation_assignments": 225,
      "avg_inclusion_delay": 1.031111111111111,
      "sum_inclusion_delay": 232,
      "uptime": 1,
      "attester_effectiveness": 95.97701149425288,
      "sync_signature_count": 0,
      "sum_correct_source": 225,
      "sum_late_source_votes": 0,
      "sum_wrong_target_votes": 1,
      "sum_late_target_votes": 0,
      "sum_missed_attestations": 0,
      "sum_wrong_head_votes": 1
    }
  ]
}

Get validator proposal duties metrics

This endpoint returns drill-downs on performance metrics around proposal duties for a single validator index.

GET/v1/eth/validators/{validator_index_or_pubkey}/proposals
Path parameters
validator_index_or_pubkey*Validator Index Or Pubkey
Query parameters
Header parameters
Response

Successful Response

Body
previousPrevious
nextNext
pages*Pages
results*Results
Request
const response = await fetch('/v1/eth/validators/{validator_index_or_pubkey}/proposals', {
    method: 'GET',
    headers: {},
});
const data = await response.json();
Response
{
  "previous": "https://endpoint?limit=10&offset=10",
  "next": "https://endpoint?limit=10&offset=10",
  "pages": 10,
  "results": [
    {
      "day": 796,
      "hour": 19056,
      "startDate": "2023-01-01",
      "endDate": "2023-01-07",
      "startDay": 796,
      "endDay": 802,
      "date": "2023-01-01",
      "validator_index": 1,
      "proposed_count": 0,
      "proposer_duties_count": 0,
      "execution_proposed_empty_count": 0
    }
  ]
}

Aggregating Validator Indices

Unlike the entities endpoint, validators can be aggregated across all the metrics that live under the performance endpoints across an arbitrary number of validator indices or pubkeys. This aggregation is available over a time window or over validator indices.

Get aggregated effectiveness for validators

The Rated API enables the aggregation of all the metrics that live under effectiveness across an arbitrary number of validator indices or pubkeys, at the endpoint level. You can use this endpoint to either aggregate data per validator across a time window or aggregate data for multiple validators per time period.

GET/v1/eth/validators/effectiveness
Query parameters
Header parameters
Response

Successful Response

Body
previousPrevious
nextNext
pages*Pages
results*Results
Request
const response = await fetch('/v1/eth/validators/effectiveness', {
    method: 'GET',
    headers: {},
});
const data = await response.json();
Response
{
  "previous": "https://endpoint?limit=10&offset=10",
  "next": "https://endpoint?limit=10&offset=10",
  "pages": 10,
  "results": [
    {
      "day": 796,
      "hour": 19056,
      "startDate": "2023-01-01",
      "endDate": "2023-01-07",
      "startDay": 796,
      "endDay": 802,
      "date": "2023-01-01",
      "validator_index": 1,
      "startEpoch": 63744,
      "endEpoch": 63775,
      "avgCorrectness": 0.9896296296296296,
      "avgInclusion_delay": 1.031111111111111,
      "sumInclusion_delay": 232,
      "uptime": 1,
      "attesterEffectiveness": 95.97701149425288,
      "proposerEffectiveness": 99.53271028037379,
      "validatorEffectiveness": 99.53271028037379
    }
  ]
}

Get attestation duties metrics for group of validators

This endpoint returns drilldowns on performance metrics around attestation duties for validators. You can use this endpoint to either aggregate data per validator across a time window or aggregate data for multiple validators per time period.

GET/v1/eth/validators/attestations
Query parameters
Header parameters
Response

Successful Response

Body
previousPrevious
nextNext
pages*Pages
results*Results
Request
const response = await fetch('/v1/eth/validators/attestations', {
    method: 'GET',
    headers: {},
});
const data = await response.json();
Response
{
  "previous": "https://endpoint?limit=10&offset=10",
  "next": "https://endpoint?limit=10&offset=10",
  "pages": 10,
  "results": [
    {
      "day": 796,
      "hour": 19056,
      "startDate": "2023-01-01",
      "endDate": "2023-01-07",
      "startDay": 796,
      "endDay": 802,
      "date": "2023-01-01",
      "validator_index": 1,
      "total_attestations": 230,
      "total_unique_attestations": 225,
      "sum_correct_head": 219,
      "sum_correct_target": 224,
      "avg_correctness": 0.9896296296296296,
      "total_attestation_assignments": 225,
      "avg_inclusion_delay": 1.031111111111111,
      "sum_inclusion_delay": 232,
      "uptime": 1,
      "attester_effectiveness": 95.97701149425288,
      "sync_signature_count": 0,
      "sum_correct_source": 225,
      "sum_late_source_votes": 0,
      "sum_wrong_target_votes": 1,
      "sum_late_target_votes": 0,
      "sum_missed_attestations": 0,
      "sum_wrong_head_votes": 1
    }
  ]
}

Get proposer duties metrics for a group of validators

This endpoint returns drilldowns on performance metrics around proposer duties for validators. You can use this endpoint to either aggregate data per validator across a time window or aggregate data for multiple validators per time period.

GET/v1/eth/validators/proposals
Query parameters
Header parameters
Response

Successful Response

Body
previousPrevious
nextNext
pages*Pages
results*Results
Request
const response = await fetch('/v1/eth/validators/proposals', {
    method: 'GET',
    headers: {},
});
const data = await response.json();
Response
{
  "previous": "https://endpoint?limit=10&offset=10",
  "next": "https://endpoint?limit=10&offset=10",
  "pages": 10,
  "results": [
    {
      "day": 796,
      "hour": 19056,
      "startDate": "2023-01-01",
      "endDate": "2023-01-07",
      "startDay": 796,
      "endDay": 802,
      "date": "2023-01-01",
      "validator_index": 1,
      "proposed_count": 0,
      "proposer_duties_count": 0,
      "execution_proposed_empty_count": 0
    }
  ]
}

Sets Performance

Sets or Private Sets, helps organizations group validators into custom, private, sets enabling usecases such as executing controlled experiments and analyses to assess various aspects of their validators' cluster performance. Head to Private Sets to learn more about the different endpoints you'll need to call as a precursor to calling the endpoints below.

Note that the set performance endpoints behave identical to the entities performance endpoints with the caveat that (i) only the org that creates a set can view performance metrics for that set (hence private sets) and (ii) sets data does not surface on the Rated Explorer.

Get effectiveness for a private set

This endpoint returns a bunch of useful information about the historical performance of all validators belonging to a private set. Use this endpoint to retrieve top level metrics on proposer effectiveness, attester effectiveness and overall effectiveness.

GET/v1/eth/sets/{set_id}/effectiveness
Path parameters
set_id*Set Id
Query parameters
Header parameters
Response

Successful Response

Body
previousPrevious
nextNext
pages*Pages
results*Results
Request
const response = await fetch('/v1/eth/sets/{set_id}/effectiveness', {
    method: 'GET',
    headers: {},
});
const data = await response.json();
Response
{
  "previous": "https://endpoint?limit=10&offset=10",
  "next": "https://endpoint?limit=10&offset=10",
  "pages": 10,
  "results": [
    {
      "day": 796,
      "hour": 19056,
      "startDate": "2023-01-01",
      "endDate": "2023-01-07",
      "startDay": 796,
      "endDay": 802,
      "date": "2023-01-01",
      "startEpoch": 63744,
      "endEpoch": 63775,
      "validatorCount": 16075,
      "avgInclusionDelay": 1.0138705386457403,
      "avgUptime": 0.9999466390184881,
      "avgCorrectness": 0.9929917401071404,
      "avgProposerEffectiveness": 99.53271028037379,
      "avgValidatorEffectiveness": 97.96642775943795,
      "avgAttesterEffectiveness": 97.9580945527236
    }
  ]
}

Get attestation duties metrics for a private set

This endpoint returns drilldowns on performance metrics around attestation duties for all validators belonging to a private set.

GET/v1/eth/sets/{set_id}/attestations
Path parameters
set_id*Set Id
Query parameters
Header parameters
Response

Successful Response

Body
previousPrevious
nextNext
pages*Pages
results*Results
Request
const response = await fetch('/v1/eth/sets/{set_id}/attestations', {
    method: 'GET',
    headers: {},
});
const data = await response.json();
Response
{
  "previous": "https://endpoint?limit=10&offset=10",
  "next": "https://endpoint?limit=10&offset=10",
  "pages": 10,
  "results": [
    {
      "day": 796,
      "hour": 19056,
      "startDate": "2023-01-01",
      "endDate": "2023-01-07",
      "startDay": 796,
      "endDay": 802,
      "date": "2023-01-01",
      "startEpoch": 63744,
      "endEpoch": 63775,
      "validatorCount": 16075,
      "totalUniqueAttestations": 2341,
      "sumMissedAttestations": 67958,
      "sumMissedSyncSignatures": 965,
      "sumCorrectHead": 3234,
      "sumCorrectTarget": 234,
      "sumCorrectSource": 567,
      "sumWrongHeadVotes": 756,
      "sumWrongTargetVotes": 968,
      "sumLateTargetVotes": 123,
      "sumLateSourceVotes": 675,
      "avgAttesterEffectiveness": 97.9580945527236
    }
  ]
}

Get proposer duties metrics for a private set

This endpoint returns drill-downs on performance metrics around proposer duties for all validators belonging to a private set.

GET/v1/eth/sets/{set_id}/proposals
Path parameters
set_id*Set Id
Query parameters
Header parameters
Response

Successful Response

Body
previousPrevious
nextNext
pages*Pages
results*Results
Request
const response = await fetch('/v1/eth/sets/{set_id}/proposals', {
    method: 'GET',
    headers: {},
});
const data = await response.json();
Response
{
  "previous": "https://endpoint?limit=10&offset=10",
  "next": "https://endpoint?limit=10&offset=10",
  "pages": 10,
  "results": [
    {
      "day": 796,
      "hour": 19056,
      "startDate": "2023-01-01",
      "endDate": "2023-01-07",
      "startDay": 796,
      "endDay": 802,
      "date": "2023-01-01",
      "startEpoch": 63744,
      "endEpoch": 63775,
      "validatorCount": 16075,
      "sumProposedCount": 213,
      "sumProposerDutiesCount": 214,
      "avgProposerEffectiveness": 99.53271028037379
    }
  ]
}

Last updated