Skip to main content

API Module

This is a read only library which contains all the functions you need to obtain any data relating to the SSV network.

After instantiating the SDK, you can call any of the functions in the utils library like so:

sdk.api.getOwnerNonce()

Function List

getOwnerNonce(string account_address)

Accepts a list of addresses, fetches their nonces using subgraph, returns as a list.

Input parameters:

Input parameterInput typeDescriptionExample input
account_addressstringAn array of owner addresses.[“0xA4831B989972605A62141a667578d742927Cbef9”]

Examples input:

const ownerAddress = "0xA4831B989972605A62141a667578d742927Cbef9"
let nonce = Number(await sdk.api.getOwnerNonce({ owner: ownerAddress}))

Example output:

12

getClusterSnapshot(string cluster_id )

Accepts a list of addresses, fetches cluster snapshots using subgraph, returns as a list.

Input:

Input parameterInput typeDescriptionExample input
cluster_idstringAn array of cluster IDs in their computed ID form.[“4c0239091131c3e57e9555c540bcfd00bcd2484a9c4048f13411f22329511131”]

Example:

const clusterSnapshot = await sdk.api.getClusterSnapshot({id: clusterID})

Example output:

{
"active": true,
"balance": "19479447888000000000",
"index": "46367642388",
"networkFeeIndex": "59597136600",
"validatorCount": "1"
}

getClusterId(owner_address, operator_ids[])

Accepts the owner address and a list of operator IDs, computes and returns the cluster ID hash.

Input:

Input parameterInput typeDescriptionExample input
owner_addressstringAddress of the cluster Owner.'0x81592c3de184a3e2c0dcb5a261bc107bfa91f494'
operator_ids[]integerList of operator IDs.[12, 34, 56, 78]

Example:

import { createClusterId } from '@ssv-labs/ssv-sdk/utils'
const ownerAddress = "0xA4831B989972605A62141a667578d742927Cbef9"
const operatorIds = [242, 686, 707, 736]
const clusterID = createClusterId(ownerAddress, operatorIds)

Example output:

1179fed483c8c1b0327c8667521162015fa8cbe1a1b047a26baf0f0971a81929

getClusterBalance(clusterId, daoAddress, operatorIds)

Accepts a cluster id in it's hashed form. Returns details about the cluster.

Input:

Input parameterInput typeDescriptionExample input
cluster_idstringA cluster ID in it's computed form“4c0239091131c3e57e9555c540bcfd00bcd2484a9c4048f13411f22329511131”
daoAddressstringAddress of the DAO (chain specific)"0x38A4794cCEd47d3baf7370CcC43B560D3a1beEFA"
operatorIdsstring[]A list of operator Ids[1,2,3,4]

Example:

const ownerAddress = "0xA4831B989972605A62141a667578d742927Cbef9"
const operatorIds = [242, 686, 707, 736]
const operatorIdsString = ['242', '686', '707', '736']
const clusterID = createClusterId(ownerAddress, operatorIds)
const clusterBalance = await sdk.api.getClusterBalance({clusterId: clusterID, daoAddress: "0x38A4794cCEd47d3baf7370CcC43B560D3a1beEFA", operatorIds: operatorIdsString})

Example output:

 cluster: {
validatorCount: '140',
networkFeeIndex: '110259590936',
index: '136319254858',
balance: '126290824043600000000'
},

getCluster(id)

Accepts a cluster id in it's hashed form. Returns details about the cluster.

Input:

Input parameterInput typeDescriptionExample input
cluster_idstringAn array of cluster IDs in their computed ID form.[“4c0239091131c3e57e9555c540bcfd00bcd2484a9c4048f13411f22329511131”]

Example:

const clusterData = await sdk.api.getCluster({id: clusterID})

Example output:

{
active: true,
validatorCount: '140',
balance: '126290824043600000000',
index: '136319254858',
networkFeeIndex: '110259590936',
operatorIds: [ '242', '686', '707', '736' ]
}

getClusters(owner)

Accepts an owner address. Returns details about all of the clusters that they own.

Input:

Input parameterInput typeDescriptionExample input
ownerstringAn owner address"0xA4831B989972605A62141a667578d742927Cbef9"

Example:

const ownerAddress = "0xA4831B989972605A62141a667578d742927Cbef9"
const clusterData = await sdk.api.getClusters({owner: ownerAddress})

Example output:

[
{
id: '0xa4831b989972605a62141a667578d742927cbef9-11-21-24-29',
active: false,
validatorCount: '4',
balance: '0',
index: '0',
networkFeeIndex: '0',
operatorIds: [ '11', '21', '24', '29' ]
},
{
id: '0xa4831b989972605a62141a667578d742927cbef9-11-66-306-400',
active: false,
validatorCount: '0',
balance: '0',
index: '0',
networkFeeIndex: '0',
operatorIds: [ '11', '66', '306', '400' ]
},
]

getOperator(id)

Accepts an operator ID and returns details about the operator.

Input:

Input parameterInput typeDescriptionExample input
idstringA single operator ID"4"

Example:

const operatorData = await sdk.api.getOperator({id: "4"})

Example output:

{
id: '4',
publicKey: 'LS0tLS1CRUdJTiBSU0EgUFVCTElDIEtFWS0tLS0tCk1JSUJJakFOQmdrcWhraUc5dzBCQVFFRkFBT0NBUThBTUlJQkNnS0NBUUVBdXZleUpUMURwM21mQ3FRTUora2YKZHdhV0d1bkRURUFaWmNTOHdtUTJBcjU1bE5venl5cHRwb1lGSTgxaW1RSmpwdVV0akR2am15RDRQSmt1SzFXRQovZG9TSzFraWlTSEYvZFBaeE5ZT2swMlRiTGIvTXBjMG12VE1nZmRsVDBoTlVOWDZIMnJzZzNlc2NEOStENEdDCmxtZGpCdmdxUDQydXdDbFlQUVhuN3Z6OWlOOEpXdEFtd1JkQ25USkZ6M2tYSEFPVGMyMjJGYXp4ZGJVNEVPYkIKVmJNejd2UXRmMWtNSGtacEh5UXNpL3F0WmhQaThtTlNQTWpMTDBtcmc4Ly9xVjIyeEVPNENmSHFKZkZOWEhKVwpEbU85M2h2QXE2dDFZOGN5UVZkSGZ2WEp5VzRxR29MY25HZzV1S2ZSYWVCSSt1aXFSeExOL2dtTnA2RzdpZVNkCkl3SURBUUFCCi0tLS0tRU5EIFJTQSBQVUJMSUMgS0VZLS0tLS0K',
validatorCount: '486',
isPrivate: false,
whitelistedContract: '0x0000000000000000000000000000000000000000',
whitelisted: []
}

getOperators(operatorIds[])

Accepts a list of operator IDs and returns details about them.

Input:

Input parameterInput typeDescriptionExample input
operatorIdsstring[]A single operator ID["4","5"]

Example:

const operatorData = await sdk.api.getOperators({operatorIds: ["4","5"]})

Example output:

[
{
id: '4',
publicKey: 'LS0tLS1CRUdJTiBSU0EgUFVCTElDIEtFWS0tLS0tCk1JSUJJakFOQmdrcWhraUc5dzBCQVFFRkFBT0NBUThBTUlJQkNnS0NBUUVBdXZleUpUMURwM21mQ3FRTUora2YKZHdhV0d1bkRURUFaWmNTOHdtUTJBcjU1bE5venl5cHRwb1lGSTgxaW1RSmpwdVV0akR2am15RDRQSmt1SzFXRQovZG9TSzFraWlTSEYvZFBaeE5ZT2swMlRiTGIvTXBjMG12VE1nZmRsVDBoTlVOWDZIMnJzZzNlc2NEOStENEdDCmxtZGpCdmdxUDQydXdDbFlQUVhuN3Z6OWlOOEpXdEFtd1JkQ25USkZ6M2tYSEFPVGMyMjJGYXp4ZGJVNEVPYkIKVmJNejd2UXRmMWtNSGtacEh5UXNpL3F0WmhQaThtTlNQTWpMTDBtcmc4Ly9xVjIyeEVPNENmSHFKZkZOWEhKVwpEbU85M2h2QXE2dDFZOGN5UVZkSGZ2WEp5VzRxR29MY25HZzV1S2ZSYWVCSSt1aXFSeExOL2dtTnA2RzdpZVNkCkl3SURBUUFCCi0tLS0tRU5EIFJTQSBQVUJMSUMgS0VZLS0tLS0K',
validatorCount: '486',
isPrivate: false,
whitelistedContract: '0x0000000000000000000000000000000000000000',
whitelisted: []
},
{
id: '5',
publicKey: 'LS0tLS1CRUdJTiBSU0EgUFVCTElDIEtFWS0tLS0tCk1JSUJJakFOQmdrcWhraUc5dzBCQVFFRkFBT0NBUThBTUlJQkNnS0NBUUVBMS93RkNBYlVSNEhNcWRDeDY2L0oKdDV2K000U0d0NksrSi9GaXpMcGptUUpocXc2L0ZrWmdDcjJBSzNkWlpmRDkrMDFGWXhmcG0xYzB1U20rQ1E1UApDUDBNRDY4czJHQnR0eVROeE8vaHdObkREYXRTbnlSNDE4YWp1eUM5UmoxaVZ2WlRlR3Q4ZnFycHA0WjFZMmxQCjlXenFZemgwSlZxUjB1MEhyay9SdElIaUxvOE9INCtkR1Zjb1hydy9mdXpCZ0xPb0RKVFRocW5CNHIydHZwTTEKSTNEM0h2ZEtwTmY2UkM0Y2RUQ1YwOFVRQkE2bU11YnB2dVM3dFVMOVZoalJmMUJkb09wMFd6NWdrdWFIRkJGcQo0RnprNTRONXRzb1pRZDR6Zzd2UmhVUCt0dW1qNzZjMW9wc2pEakVOWjUzdWkxeUwvN2N3Rk5xS2xMNG1TemIvCnZ3SURBUUFCCi0tLS0tRU5EIFJTQSBQVUJMSUMgS0VZLS0tLS0K',
validatorCount: '503',
isPrivate: false,
whitelistedContract: '0x0000000000000000000000000000000000000000',
whitelisted: []
}
]

getValidator(id)

Accepts a validator ID and returns details about the validator.

Input:

Input parameterInput typeDescriptionExample input
idstringA single validator ID0x0c74493afd8082f86485e4172be72678b0feb1494087ee6abe7d7ea7437c2a3fc6c06193040c6e24cdf59c9081d1c7a9

Example:

const validatorData = await sdk.api.getValidators({id: "0x0c74493afd8082f86485e4172be72678b0feb1494087ee6abe7d7ea7437c2a3fc6c06193040c6e24cdf59c9081d1c7a9"})

Example output:

{
id: '0x0c74493afd8082f86485e4172be72678b0feb1494087ee6abe7d7ea7437c2a3fc6c06193040c6e24cdf59c9081d1c7a9'
}

getValidators(ids[])

Accepts an validator ID and returns details about the validator.

Input:

Input parameterInput typeDescriptionExample input
idsstring[]An array of validator IDs["0x0c74493afd8082f86485e4172be72678b0feb1494087ee6abe7d7ea7437c2a3fc6c06193040c6e24cdf59c9081d1c7a9", "0x1a85052f3b9d17e73ec76c472220c80ada65a19a0fd177344b1e9f6173d51136c400120989dbd9ff498defc99dfe5181"]

Example:

const validatorData = await sdk.api.getValidators({id: ["0x0c74493afd8082f86485e4172be72678b0feb1494087ee6abe7d7ea7437c2a3fc6c06193040c6e24cdf59c9081d1c7a9", "0x1a85052f3b9d17e73ec76c472220c80ada65a19a0fd177344b1e9f6173d51136c400120989dbd9ff498defc99dfe5181"]})

Example output:

{
id: '0x0c74493afd8082f86485e4172be72678b0feb1494087ee6abe7d7ea7437c2a3fc6c06193040c6e24cdf59c9081d1c7a9'
}