Private Sets

Private sets is a self-serve feature designed to enable organizations to curate a set of validators, each marked with a unique tag. This tag, carrying an identifier specific to your organization, ensures that only you can view the performance and rewards metrics for it. Displayed within your console, these tags streamline analysis processes and let you perform A/B testing on your node setup or group together validators for a specific customer confidentially.

Getting Started

Build and Growth API users can create private sets. Build tier comes with max 4 sets while Growth comes with 20.

Step 1: Creating a Tag and associating validators to it

To call a set's effectiveness, you must first create a tag which acts as a unique identifier for the set.

POST /v1/tags

Body parameters (Required)

NameTypeDescription

name

string

Name for the tag

Response

{
  "id": "string",
  "name": "string",
  "network": "mainnet",
  "organizationId": "string",
  "createdBy": "string",
  "createdAt": "2024-03-14T18:12:14.677Z",
  "updatedAt": "2024-03-14T18:12:14.677Z"
}

Using the id that you get in the response above, call the following endpoint to associate validators with the tag

POST /v1/tags/{id}/validators

Body parameters (Required)

NameTypeDescription

pubkeys

array

list of keys you wish to associate to a tag

Response

{
    "tag": "string",
    "pubkeysAdded": integer
}

Once you have a tag with validator mappings, you can move to Step 2.

To add more validators to a tag, call POST /v1/tags/{id}/validators with the new keys you'd like to add. Similarly, to remove a pubkey from an existing tag, callDELETE /v1/tags/{id}/validators/{pubkey}.

NOTE: Removing keys from a tag doesn't erase their impact on historical performance ie performance of a removed pubkey continues to impact the all-time performance of a set.

Step 2: Calling the performance and rewards endpoints for your set

Using the tag's ID, call the sets endpoints to retrieve performance and rewards metrics. These endpoints operate similar to the /operators/ endpoints with similar granularities and refresh windows.

GET /v1/eth/sets/:id/effectiveness

GET /v1/eth/sets/:id/attestations

GET /v1/eth/sets/:id/proposals

GET /v1/eth/sets/:id/rewards

GET /v1/eth/sets/:id/penalties

Query parameters

NameTypeValue

granularity

enum

houror day

fromDate

date

the date from which you wish to retrieve the data

toDate

date

the date upto which you wish to retrieve the data

limit

integer

the number of rows returned per page

offset

integer

offset allows you to omit a specified number of rows before the beginning of the result set

Response

{
"pages": 3,
"results": [
    {
      "hour": null,
      "day": 796,
      "date": 2023-01-01,
      "startEpoch": 179324,
      "endEpoch": 179100,
      "validatorCount": 16075,
      "avgInclusionDelay": 1.0138705386457403,
      "avgUptime": 0.9999466390184881,
      "avgCorrectness": 0.9929917401071404,
      "avgProposerEffectiveness": 99.53271028037379,
      "avgValidatorEffectiveness": 97.96642775943795,
      "avgAttesterEffectiveness": 97.9580945527236
    }
  ],
  "previous": "string",
  "next": "string"
}

Last updated