Cluster Lock

Retrieve a Distributed Validator Cluster Lock Object

get
/lock/{lockHash}

This endpoint is used to retrieve a cluster lock object.

Path parameters
lockHashstringRequired

The lock_hash calculated for a cluster lock.

Responses
200

The cluster lock object

application/json
Responseany of
get
/lock/{lockHash}
GET /lock/{lockHash} HTTP/1.1
Host: api.obol.tech
Accept: */*
{
  "cluster_definition": {
    "name": "My Obol Cluster",
    "uuid": "0194FDC2-FA2F-FCC0-41D3-FF12045B73C8",
    "creator": {},
    "version": "v1.8.0",
    "num_validators": 5,
    "threshold": 3,
    "dkg_algorithm": "default",
    "fork_version": "0x00001020",
    "config_hash": "0x2204ba6c238ed2d6a8ff951d4513db993c8d6f8860468391342649bf735a87d7",
    "timestamp": "2022-07-19T18:19:58+02:00",
    "validators": [
      {}
    ],
    "deposit_amounts": [
      "8000000000",
      "16000000000",
      "8000000000"
    ],
    "definition_hash": "0xb656f5a4a5537b5817d6bcf735d043f17f5aff568b1a7ec9102a9f687bd4510c",
    "fee_recipient_address": "0x000000000000000000000000000000000000dead",
    "withdrawal_address": "0x000000000000000000000000000000000000dead",
    "operators": [
      {}
    ],
    "consensus_protocol": "qbft",
    "target_gas_limit": 36000000,
    "compounding": true
  },
  "distributed_validators": [
    {}
  ],
  "signature_aggregate": "0x85650c30ec29a3703934bf50a28da102975deda77e758579ea3dfe4136abf752",
  "lock_hash": "0xd2880980169ee4a0000f23feb8fad9a6c70f38312956fe67aa89e118f5b0e048",
  "node_signatures": [
    "text"
  ]
}

Retrieve a list of Distributed Validator Cluster Lock Objects

get
/lock/search/{network}

This endpoint is used to search for Cluster Lock Objects that match a substring of their lock_hash.

Path parameters
networkstringRequired

The network to retrieve clusters on

Example: {"summary":"Ethereum Mainnet","value":"mainnet"}
Query parameters
partialLockHashstringRequired

A substring of the lock_hash calculated for a cluster lock.

partialClusterNamestringRequired

A substring of the cluster name.

pageintegerRequired

The page number to retrieve.

Default: 0
limitintegerRequired

The number of cluster lock objects to return.

Default: 100
Responses
200

A list of Distributed Validator Clusters which the lock hash matches.

application/json
Responseany of
get
/lock/search/{network}
GET /lock/search/{network}?partialLockHash=text&partialClusterName=text&page=0&limit=100 HTTP/1.1
Host: api.obol.tech
Accept: */*
{
  "cluster_locks": [
    "text"
  ],
  "total_count": 2,
  "total_pages": 4
}

Retrieve a list of Distributed Validator Cluster Lock Objects

get
/v1/lock/search/{network}

This endpoint is used to search for Cluster Lock Objects that match a substring of their lock_hash.

Path parameters
networkstringRequired

The network to retrieve clusters on

Example: {"summary":"Ethereum Mainnet","value":"mainnet"}
Query parameters
partialLockHashstringRequired

A substring of the lock_hash calculated for a cluster lock.

partialClusterNamestringRequired

A substring of the cluster name.

pageintegerRequired

The page number to retrieve.

Default: 0
limitintegerRequired

The number of cluster lock objects to return.

Default: 100
Responses
200

A list of Distributed Validator Clusters which the lock hash matches.

application/json
Responseany of
get
/v1/lock/search/{network}
GET /v1/lock/search/{network}?partialLockHash=text&partialClusterName=text&page=0&limit=100 HTTP/1.1
Host: api.obol.tech
Accept: */*
{
  "cluster_locks": [
    "text"
  ],
  "total_count": 2,
  "total_pages": 4
}

Push Distributed Validator Cluster Lock Data

post
/lock

This endpoint saves cluster lock objects that describe the created Distributed Validator Cluster.

Body
cluster_definitionall ofRequired

Cluster definition data that was used in dkg to generate cluster lock.

signature_aggregatestringRequiredExample: 0x85650c30ec29a3703934bf50a28da102975deda77e758579ea3dfe4136abf752
lock_hashstringRequiredExample: 0xd2880980169ee4a0000f23feb8fad9a6c70f38312956fe67aa89e118f5b0e048
node_signaturesstring[]RequiredExample: ["0xe6e531be7bbf6cee37d80ab489ade6491469e10743d3c1496a3e66fe989eb4c100c260eaee4ef1aa08fdb79ea05bb8c12970dec1a296abe627ac25a2515373b301"]
Responses
201

The cluster lock object

application/json
Responseany of
post
/lock
POST /lock HTTP/1.1
Host: api.obol.tech
Content-Type: application/json
Accept: */*
Content-Length: 2785

{
  "cluster_definition": {
    "name": "My Obol Cluster",
    "uuid": "0194FDC2-FA2F-FCC0-41D3-FF12045B73C8",
    "creator": {},
    "version": "v1.8.0",
    "num_validators": 5,
    "threshold": 3,
    "dkg_algorithm": "default",
    "fork_version": "0x00001020",
    "config_hash": "0x2204ba6c238ed2d6a8ff951d4513db993c8d6f8860468391342649bf735a87d7",
    "timestamp": "2022-07-19T18:19:58+02:00",
    "validators": [
      {}
    ],
    "deposit_amounts": [
      "8000000000",
      "16000000000",
      "8000000000"
    ],
    "definition_hash": "0xb656f5a4a5537b5817d6bcf735d043f17f5aff568b1a7ec9102a9f687bd4510c",
    "fee_recipient_address": "0x000000000000000000000000000000000000dead",
    "withdrawal_address": "0x000000000000000000000000000000000000dead",
    "operators": [
      {}
    ],
    "consensus_protocol": "qbft",
    "target_gas_limit": 36000000,
    "compounding": true
  },
  "distributed_validators": [
    {
      "distributed_public_key": "0xb51336c31c4f0cc365d6c7b5d8ff1b4b7d4cf7c70163f9fd51a2badc854f5e29823fa11e3d7749d207807867149508d6",
      "public_shares": [
        "text"
      ],
      "deposit_data": {
        "pubkey": "0xb51336c31c4f0cc365d6c7b5d8ff1b4b7d4cf7c70163f9fd51a2badc854f5e29823fa11e3d7749d207807867149508d6",
        "withdrawal_credentials": "0x01000000000000000000000086b8145c98e5bd25ba722645b15ed65f024a87ec",
        "amount": "32000000000",
        "deposit_data_root": "5e58a5d8f1e53479343cb6188f061f6b1a46c521c53eef0580b04f485ad62bad",
        "signature": "0x88fe84889608a8b2424bddae2047d2ee4b42f72c4d8201d69e732d7c3bfa1bcb00f930979770b7d00071673fde8f205108dabe8d83ec49aa6de1b7869966b555be80a159e6ad11e273c4e0234038cfa525923044d6a89a4924fdc178f333568b"
      },
      "builder_registration": {
        "message": {
          "fee_recipient": "0x86B8145c98e5BD25BA722645b15eD65f024a87EC",
          "gas_limit": 30000000,
          "timestamp": 1616508000,
          "pubkey": "0xb51336c31c4f0cc365d6c7b5d8ff1b4b7d4cf7c70163f9fd51a2badc854f5e29823fa11e3d7749d207807867149508d6"
        },
        "signature": "0x851e4f196b7e7bda6429b94cceb92d480f53fa9753e1d6c830ff2706acb8cd866d81d5533db7dcfac1dc9d00a16e5e4801d33f36bdf1c2a2003e1c586466109e7851c79179b2c46d69c53c4a59e361d2727186a7e72bbd11debad1f2fae6f97d"
      },
      "partial_deposit_data": {
        "pubkey": "0xb51336c31c4f0cc365d6c7b5d8ff1b4b7d4cf7c70163f9fd51a2badc854f5e29823fa11e3d7749d207807867149508d6",
        "withdrawal_credentials": "0x01000000000000000000000086b8145c98e5bd25ba722645b15ed65f024a87ec",
        "amount": "32000000000",
        "deposit_data_root": "5e58a5d8f1e53479343cb6188f061f6b1a46c521c53eef0580b04f485ad62bad",
        "signature": "0x88fe84889608a8b2424bddae2047d2ee4b42f72c4d8201d69e732d7c3bfa1bcb00f930979770b7d00071673fde8f205108dabe8d83ec49aa6de1b7869966b555be80a159e6ad11e273c4e0234038cfa525923044d6a89a4924fdc178f333568b"
      }
    }
  ],
  "signature_aggregate": "0x85650c30ec29a3703934bf50a28da102975deda77e758579ea3dfe4136abf752",
  "lock_hash": "0xd2880980169ee4a0000f23feb8fad9a6c70f38312956fe67aa89e118f5b0e048",
  "node_signatures": [
    "0xe6e531be7bbf6cee37d80ab489ade6491469e10743d3c1496a3e66fe989eb4c100c260eaee4ef1aa08fdb79ea05bb8c12970dec1a296abe627ac25a2515373b301"
  ]
}
{
  "cluster_definition": {
    "name": "My Obol Cluster",
    "uuid": "0194FDC2-FA2F-FCC0-41D3-FF12045B73C8",
    "creator": {},
    "version": "v1.8.0",
    "num_validators": 5,
    "threshold": 3,
    "dkg_algorithm": "default",
    "fork_version": "0x00001020",
    "config_hash": "0x2204ba6c238ed2d6a8ff951d4513db993c8d6f8860468391342649bf735a87d7",
    "timestamp": "2022-07-19T18:19:58+02:00",
    "validators": [
      {}
    ],
    "deposit_amounts": [
      "8000000000",
      "16000000000",
      "8000000000"
    ],
    "definition_hash": "0xb656f5a4a5537b5817d6bcf735d043f17f5aff568b1a7ec9102a9f687bd4510c",
    "fee_recipient_address": "0x000000000000000000000000000000000000dead",
    "withdrawal_address": "0x000000000000000000000000000000000000dead",
    "operators": [
      {}
    ],
    "consensus_protocol": "qbft",
    "target_gas_limit": 36000000,
    "compounding": true
  },
  "distributed_validators": [
    {}
  ],
  "signature_aggregate": "0x85650c30ec29a3703934bf50a28da102975deda77e758579ea3dfe4136abf752",
  "lock_hash": "0xd2880980169ee4a0000f23feb8fad9a6c70f38312956fe67aa89e118f5b0e048",
  "node_signatures": [
    "text"
  ]
}

Push Distributed Validator Cluster Lock Data

post
/v1/lock

This endpoint saves cluster lock objects that describe the created Distributed Validator Cluster.

Body
cluster_definitionall ofRequired

Cluster definition data that was used in dkg to generate cluster lock.

signature_aggregatestringRequiredExample: 0x85650c30ec29a3703934bf50a28da102975deda77e758579ea3dfe4136abf752
lock_hashstringRequiredExample: 0xd2880980169ee4a0000f23feb8fad9a6c70f38312956fe67aa89e118f5b0e048
node_signaturesstring[]RequiredExample: ["0xe6e531be7bbf6cee37d80ab489ade6491469e10743d3c1496a3e66fe989eb4c100c260eaee4ef1aa08fdb79ea05bb8c12970dec1a296abe627ac25a2515373b301"]
Responses
201

The cluster lock object

application/json
Responseany of
post
/v1/lock
POST /v1/lock HTTP/1.1
Host: api.obol.tech
Content-Type: application/json
Accept: */*
Content-Length: 2785

{
  "cluster_definition": {
    "name": "My Obol Cluster",
    "uuid": "0194FDC2-FA2F-FCC0-41D3-FF12045B73C8",
    "creator": {},
    "version": "v1.8.0",
    "num_validators": 5,
    "threshold": 3,
    "dkg_algorithm": "default",
    "fork_version": "0x00001020",
    "config_hash": "0x2204ba6c238ed2d6a8ff951d4513db993c8d6f8860468391342649bf735a87d7",
    "timestamp": "2022-07-19T18:19:58+02:00",
    "validators": [
      {}
    ],
    "deposit_amounts": [
      "8000000000",
      "16000000000",
      "8000000000"
    ],
    "definition_hash": "0xb656f5a4a5537b5817d6bcf735d043f17f5aff568b1a7ec9102a9f687bd4510c",
    "fee_recipient_address": "0x000000000000000000000000000000000000dead",
    "withdrawal_address": "0x000000000000000000000000000000000000dead",
    "operators": [
      {}
    ],
    "consensus_protocol": "qbft",
    "target_gas_limit": 36000000,
    "compounding": true
  },
  "distributed_validators": [
    {
      "distributed_public_key": "0xb51336c31c4f0cc365d6c7b5d8ff1b4b7d4cf7c70163f9fd51a2badc854f5e29823fa11e3d7749d207807867149508d6",
      "public_shares": [
        "text"
      ],
      "deposit_data": {
        "pubkey": "0xb51336c31c4f0cc365d6c7b5d8ff1b4b7d4cf7c70163f9fd51a2badc854f5e29823fa11e3d7749d207807867149508d6",
        "withdrawal_credentials": "0x01000000000000000000000086b8145c98e5bd25ba722645b15ed65f024a87ec",
        "amount": "32000000000",
        "deposit_data_root": "5e58a5d8f1e53479343cb6188f061f6b1a46c521c53eef0580b04f485ad62bad",
        "signature": "0x88fe84889608a8b2424bddae2047d2ee4b42f72c4d8201d69e732d7c3bfa1bcb00f930979770b7d00071673fde8f205108dabe8d83ec49aa6de1b7869966b555be80a159e6ad11e273c4e0234038cfa525923044d6a89a4924fdc178f333568b"
      },
      "builder_registration": {
        "message": {
          "fee_recipient": "0x86B8145c98e5BD25BA722645b15eD65f024a87EC",
          "gas_limit": 30000000,
          "timestamp": 1616508000,
          "pubkey": "0xb51336c31c4f0cc365d6c7b5d8ff1b4b7d4cf7c70163f9fd51a2badc854f5e29823fa11e3d7749d207807867149508d6"
        },
        "signature": "0x851e4f196b7e7bda6429b94cceb92d480f53fa9753e1d6c830ff2706acb8cd866d81d5533db7dcfac1dc9d00a16e5e4801d33f36bdf1c2a2003e1c586466109e7851c79179b2c46d69c53c4a59e361d2727186a7e72bbd11debad1f2fae6f97d"
      },
      "partial_deposit_data": {
        "pubkey": "0xb51336c31c4f0cc365d6c7b5d8ff1b4b7d4cf7c70163f9fd51a2badc854f5e29823fa11e3d7749d207807867149508d6",
        "withdrawal_credentials": "0x01000000000000000000000086b8145c98e5bd25ba722645b15ed65f024a87ec",
        "amount": "32000000000",
        "deposit_data_root": "5e58a5d8f1e53479343cb6188f061f6b1a46c521c53eef0580b04f485ad62bad",
        "signature": "0x88fe84889608a8b2424bddae2047d2ee4b42f72c4d8201d69e732d7c3bfa1bcb00f930979770b7d00071673fde8f205108dabe8d83ec49aa6de1b7869966b555be80a159e6ad11e273c4e0234038cfa525923044d6a89a4924fdc178f333568b"
      }
    }
  ],
  "signature_aggregate": "0x85650c30ec29a3703934bf50a28da102975deda77e758579ea3dfe4136abf752",
  "lock_hash": "0xd2880980169ee4a0000f23feb8fad9a6c70f38312956fe67aa89e118f5b0e048",
  "node_signatures": [
    "0xe6e531be7bbf6cee37d80ab489ade6491469e10743d3c1496a3e66fe989eb4c100c260eaee4ef1aa08fdb79ea05bb8c12970dec1a296abe627ac25a2515373b301"
  ]
}
{
  "cluster_definition": {
    "name": "My Obol Cluster",
    "uuid": "0194FDC2-FA2F-FCC0-41D3-FF12045B73C8",
    "creator": {},
    "version": "v1.8.0",
    "num_validators": 5,
    "threshold": 3,
    "dkg_algorithm": "default",
    "fork_version": "0x00001020",
    "config_hash": "0x2204ba6c238ed2d6a8ff951d4513db993c8d6f8860468391342649bf735a87d7",
    "timestamp": "2022-07-19T18:19:58+02:00",
    "validators": [
      {}
    ],
    "deposit_amounts": [
      "8000000000",
      "16000000000",
      "8000000000"
    ],
    "definition_hash": "0xb656f5a4a5537b5817d6bcf735d043f17f5aff568b1a7ec9102a9f687bd4510c",
    "fee_recipient_address": "0x000000000000000000000000000000000000dead",
    "withdrawal_address": "0x000000000000000000000000000000000000dead",
    "operators": [
      {}
    ],
    "consensus_protocol": "qbft",
    "target_gas_limit": 36000000,
    "compounding": true
  },
  "distributed_validators": [
    {}
  ],
  "signature_aggregate": "0x85650c30ec29a3703934bf50a28da102975deda77e758579ea3dfe4136abf752",
  "lock_hash": "0xd2880980169ee4a0000f23feb8fad9a6c70f38312956fe67aa89e118f5b0e048",
  "node_signatures": [
    "text"
  ]
}

Redirect to the launchpad cluster status page

get
/lock/{lockHash}/launchpad

This endpoint is used to redirect users to the created cluster status page after DKG is completed.

Path parameters
lockHashstringRequired

The lock_hash calculated for a Distributed Validator Cluster.

Responses
200Success

No content

get
/lock/{lockHash}/launchpad
GET /lock/{lockHash}/launchpad HTTP/1.1
Host: api.obol.tech
Accept: */*

No content

Redirect to the launchpad cluster status page

get
/v1/lock/{lockHash}/launchpad

This endpoint is used to redirect users to the created cluster status page after DKG is completed.

Path parameters
lockHashstringRequired

The lock_hash calculated for a Distributed Validator Cluster.

Responses
200Success

No content

get
/v1/lock/{lockHash}/launchpad
GET /v1/lock/{lockHash}/launchpad HTTP/1.1
Host: api.obol.tech
Accept: */*

No content

Retrieve a list of Distributed Validator Clusters for which this address is an operator

get
/lock/operator/{address}

This endpoint fetches a number of Distributed Validator Clusters for which the address provided is a node operator.

Path parameters
addressstringRequired

The operator address.

Query parameters
pageintegerRequired

The page number to retrieve.

Default: 0
limitintegerRequired

The number of cluster lock objects to return.

Default: 100
Responses
200

A list of Distributed Validator Clusters which the operator is a member of.

application/json
Responseany of
get
/lock/operator/{address}
GET /lock/operator/{address}?page=0&limit=100 HTTP/1.1
Host: api.obol.tech
Accept: */*
{
  "cluster_locks": [
    "text"
  ],
  "total_count": 2,
  "total_pages": 4
}

Retrieve a list of Distributed Validator Clusters for which this address is an operator

get
/v1/lock/operator/{address}

This endpoint fetches a number of Distributed Validator Clusters for which the address provided is a node operator.

Path parameters
addressstringRequired

The operator address.

Query parameters
pageintegerRequired

The page number to retrieve.

Default: 0
limitintegerRequired

The number of cluster lock objects to return.

Default: 100
Responses
200

A list of Distributed Validator Clusters which the operator is a member of.

application/json
Responseany of
get
/v1/lock/operator/{address}
GET /v1/lock/operator/{address}?page=0&limit=100 HTTP/1.1
Host: api.obol.tech
Accept: */*
{
  "cluster_locks": [
    "text"
  ],
  "total_count": 2,
  "total_pages": 4
}

Retrieve a list of Distributed Validator Clusters for a given network

get
/lock/network/{network}

This endpoint fetches a number of cluster lock objects for a given network.

Path parameters
networkstringRequired

The network to retrieve clusters on

Example: {"summary":"Ethereum Mainnet","value":"mainnet"}
Query parameters
pageintegerRequired

The page number to retrieve.

Default: 0
limitintegerRequired

The number of cluster lock objects to return.

Default: 100
sortBystringOptional

numerical field to sort by

Default: avg_effectiveness
sortOrderstringOptional

order of sorting the field

Default: desc
poolstringOptional

cluster type or pool

detailsstringRequired

The flag to populate cluster definition information.

Default: false
Responses
200

A paged list of Distributed Validator Clusters on this network

application/json
Responseany of
get
/lock/network/{network}
GET /lock/network/{network}?page=0&limit=100&details=false HTTP/1.1
Host: api.obol.tech
Accept: */*
{
  "cluster_locks": [
    "text"
  ],
  "total_count": 2,
  "total_pages": 4
}

Retrieve a list of Distributed Validator Clusters for a given network

get
/v1/lock/network/{network}

This endpoint fetches a number of cluster lock objects for a given network.

Path parameters
networkstringRequired

The network to retrieve clusters on

Example: {"summary":"Ethereum Mainnet","value":"mainnet"}
Query parameters
pageintegerRequired

The page number to retrieve.

Default: 0
limitintegerRequired

The number of cluster lock objects to return.

Default: 100
sortBystringOptional

numerical field to sort by

Default: avg_effectiveness
sortOrderstringOptional

order of sorting the field

Default: desc
poolstringOptional

cluster type or pool

detailsstringRequired

The flag to populate cluster definition information.

Default: false
Responses
200

A paged list of Distributed Validator Clusters on this network

application/json
Responseany of
get
/v1/lock/network/{network}
GET /v1/lock/network/{network}?page=0&limit=100&details=false HTTP/1.1
Host: api.obol.tech
Accept: */*
{
  "cluster_locks": [
    "text"
  ],
  "total_count": 2,
  "total_pages": 4
}

Retrieve a list of Distributed Validator Clusters for a given network

get
/lock/network/summary/{network}

This endpoint fetches a nsummary of the lock files stored for a given network

Path parameters
networkstringRequired

The network to retrieve clusters on

Example: {"summary":"Ethereum Mainnet","value":"mainnet"}
Responses
200

A summary of the Distributed Validator locks for a given network

application/json
Responseany of
get
/lock/network/summary/{network}
GET /lock/network/summary/{network} HTTP/1.1
Host: api.obol.tech
Accept: */*
{
  "eth_staked": 2,
  "total_clusters": 2,
  "total_operators": 4
}

Retrieve a list of Distributed Validator Clusters for a given network

get
/v1/lock/network/summary/{network}

This endpoint fetches a nsummary of the lock files stored for a given network

Path parameters
networkstringRequired

The network to retrieve clusters on

Example: {"summary":"Ethereum Mainnet","value":"mainnet"}
Responses
200

A summary of the Distributed Validator locks for a given network

application/json
Responseany of
get
/v1/lock/network/summary/{network}
GET /v1/lock/network/summary/{network} HTTP/1.1
Host: api.obol.tech
Accept: */*
{
  "eth_staked": 2,
  "total_clusters": 2,
  "total_operators": 4
}

Verify Distributed Validator Cluster Lock Data

post
/lock/verify

This endpoint verifies cluster lock data including BLS public keys and signatures created during the DKG phase.

Body
cluster_definitionall ofRequired

Cluster definition data that was used in dkg to generate cluster lock.

signature_aggregatestringRequiredExample: 0x85650c30ec29a3703934bf50a28da102975deda77e758579ea3dfe4136abf752
lock_hashstringRequiredExample: 0xd2880980169ee4a0000f23feb8fad9a6c70f38312956fe67aa89e118f5b0e048
node_signaturesstring[]RequiredExample: ["0xe6e531be7bbf6cee37d80ab489ade6491469e10743d3c1496a3e66fe989eb4c100c260eaee4ef1aa08fdb79ea05bb8c12970dec1a296abe627ac25a2515373b301"]
Responses
200

Lock data is valid

No content

post
/lock/verify
POST /lock/verify HTTP/1.1
Host: api.obol.tech
Content-Type: application/json
Accept: */*
Content-Length: 2785

{
  "cluster_definition": {
    "name": "My Obol Cluster",
    "uuid": "0194FDC2-FA2F-FCC0-41D3-FF12045B73C8",
    "creator": {},
    "version": "v1.8.0",
    "num_validators": 5,
    "threshold": 3,
    "dkg_algorithm": "default",
    "fork_version": "0x00001020",
    "config_hash": "0x2204ba6c238ed2d6a8ff951d4513db993c8d6f8860468391342649bf735a87d7",
    "timestamp": "2022-07-19T18:19:58+02:00",
    "validators": [
      {}
    ],
    "deposit_amounts": [
      "8000000000",
      "16000000000",
      "8000000000"
    ],
    "definition_hash": "0xb656f5a4a5537b5817d6bcf735d043f17f5aff568b1a7ec9102a9f687bd4510c",
    "fee_recipient_address": "0x000000000000000000000000000000000000dead",
    "withdrawal_address": "0x000000000000000000000000000000000000dead",
    "operators": [
      {}
    ],
    "consensus_protocol": "qbft",
    "target_gas_limit": 36000000,
    "compounding": true
  },
  "distributed_validators": [
    {
      "distributed_public_key": "0xb51336c31c4f0cc365d6c7b5d8ff1b4b7d4cf7c70163f9fd51a2badc854f5e29823fa11e3d7749d207807867149508d6",
      "public_shares": [
        "text"
      ],
      "deposit_data": {
        "pubkey": "0xb51336c31c4f0cc365d6c7b5d8ff1b4b7d4cf7c70163f9fd51a2badc854f5e29823fa11e3d7749d207807867149508d6",
        "withdrawal_credentials": "0x01000000000000000000000086b8145c98e5bd25ba722645b15ed65f024a87ec",
        "amount": "32000000000",
        "deposit_data_root": "5e58a5d8f1e53479343cb6188f061f6b1a46c521c53eef0580b04f485ad62bad",
        "signature": "0x88fe84889608a8b2424bddae2047d2ee4b42f72c4d8201d69e732d7c3bfa1bcb00f930979770b7d00071673fde8f205108dabe8d83ec49aa6de1b7869966b555be80a159e6ad11e273c4e0234038cfa525923044d6a89a4924fdc178f333568b"
      },
      "builder_registration": {
        "message": {
          "fee_recipient": "0x86B8145c98e5BD25BA722645b15eD65f024a87EC",
          "gas_limit": 30000000,
          "timestamp": 1616508000,
          "pubkey": "0xb51336c31c4f0cc365d6c7b5d8ff1b4b7d4cf7c70163f9fd51a2badc854f5e29823fa11e3d7749d207807867149508d6"
        },
        "signature": "0x851e4f196b7e7bda6429b94cceb92d480f53fa9753e1d6c830ff2706acb8cd866d81d5533db7dcfac1dc9d00a16e5e4801d33f36bdf1c2a2003e1c586466109e7851c79179b2c46d69c53c4a59e361d2727186a7e72bbd11debad1f2fae6f97d"
      },
      "partial_deposit_data": {
        "pubkey": "0xb51336c31c4f0cc365d6c7b5d8ff1b4b7d4cf7c70163f9fd51a2badc854f5e29823fa11e3d7749d207807867149508d6",
        "withdrawal_credentials": "0x01000000000000000000000086b8145c98e5bd25ba722645b15ed65f024a87ec",
        "amount": "32000000000",
        "deposit_data_root": "5e58a5d8f1e53479343cb6188f061f6b1a46c521c53eef0580b04f485ad62bad",
        "signature": "0x88fe84889608a8b2424bddae2047d2ee4b42f72c4d8201d69e732d7c3bfa1bcb00f930979770b7d00071673fde8f205108dabe8d83ec49aa6de1b7869966b555be80a159e6ad11e273c4e0234038cfa525923044d6a89a4924fdc178f333568b"
      }
    }
  ],
  "signature_aggregate": "0x85650c30ec29a3703934bf50a28da102975deda77e758579ea3dfe4136abf752",
  "lock_hash": "0xd2880980169ee4a0000f23feb8fad9a6c70f38312956fe67aa89e118f5b0e048",
  "node_signatures": [
    "0xe6e531be7bbf6cee37d80ab489ade6491469e10743d3c1496a3e66fe989eb4c100c260eaee4ef1aa08fdb79ea05bb8c12970dec1a296abe627ac25a2515373b301"
  ]
}

No content

Verify Distributed Validator Cluster Lock Data

post
/v1/lock/verify

This endpoint verifies cluster lock data including BLS public keys and signatures created during the DKG phase.

Body
cluster_definitionall ofRequired

Cluster definition data that was used in dkg to generate cluster lock.

signature_aggregatestringRequiredExample: 0x85650c30ec29a3703934bf50a28da102975deda77e758579ea3dfe4136abf752
lock_hashstringRequiredExample: 0xd2880980169ee4a0000f23feb8fad9a6c70f38312956fe67aa89e118f5b0e048
node_signaturesstring[]RequiredExample: ["0xe6e531be7bbf6cee37d80ab489ade6491469e10743d3c1496a3e66fe989eb4c100c260eaee4ef1aa08fdb79ea05bb8c12970dec1a296abe627ac25a2515373b301"]
Responses
200

Lock data is valid

No content

post
/v1/lock/verify
POST /v1/lock/verify HTTP/1.1
Host: api.obol.tech
Content-Type: application/json
Accept: */*
Content-Length: 2785

{
  "cluster_definition": {
    "name": "My Obol Cluster",
    "uuid": "0194FDC2-FA2F-FCC0-41D3-FF12045B73C8",
    "creator": {},
    "version": "v1.8.0",
    "num_validators": 5,
    "threshold": 3,
    "dkg_algorithm": "default",
    "fork_version": "0x00001020",
    "config_hash": "0x2204ba6c238ed2d6a8ff951d4513db993c8d6f8860468391342649bf735a87d7",
    "timestamp": "2022-07-19T18:19:58+02:00",
    "validators": [
      {}
    ],
    "deposit_amounts": [
      "8000000000",
      "16000000000",
      "8000000000"
    ],
    "definition_hash": "0xb656f5a4a5537b5817d6bcf735d043f17f5aff568b1a7ec9102a9f687bd4510c",
    "fee_recipient_address": "0x000000000000000000000000000000000000dead",
    "withdrawal_address": "0x000000000000000000000000000000000000dead",
    "operators": [
      {}
    ],
    "consensus_protocol": "qbft",
    "target_gas_limit": 36000000,
    "compounding": true
  },
  "distributed_validators": [
    {
      "distributed_public_key": "0xb51336c31c4f0cc365d6c7b5d8ff1b4b7d4cf7c70163f9fd51a2badc854f5e29823fa11e3d7749d207807867149508d6",
      "public_shares": [
        "text"
      ],
      "deposit_data": {
        "pubkey": "0xb51336c31c4f0cc365d6c7b5d8ff1b4b7d4cf7c70163f9fd51a2badc854f5e29823fa11e3d7749d207807867149508d6",
        "withdrawal_credentials": "0x01000000000000000000000086b8145c98e5bd25ba722645b15ed65f024a87ec",
        "amount": "32000000000",
        "deposit_data_root": "5e58a5d8f1e53479343cb6188f061f6b1a46c521c53eef0580b04f485ad62bad",
        "signature": "0x88fe84889608a8b2424bddae2047d2ee4b42f72c4d8201d69e732d7c3bfa1bcb00f930979770b7d00071673fde8f205108dabe8d83ec49aa6de1b7869966b555be80a159e6ad11e273c4e0234038cfa525923044d6a89a4924fdc178f333568b"
      },
      "builder_registration": {
        "message": {
          "fee_recipient": "0x86B8145c98e5BD25BA722645b15eD65f024a87EC",
          "gas_limit": 30000000,
          "timestamp": 1616508000,
          "pubkey": "0xb51336c31c4f0cc365d6c7b5d8ff1b4b7d4cf7c70163f9fd51a2badc854f5e29823fa11e3d7749d207807867149508d6"
        },
        "signature": "0x851e4f196b7e7bda6429b94cceb92d480f53fa9753e1d6c830ff2706acb8cd866d81d5533db7dcfac1dc9d00a16e5e4801d33f36bdf1c2a2003e1c586466109e7851c79179b2c46d69c53c4a59e361d2727186a7e72bbd11debad1f2fae6f97d"
      },
      "partial_deposit_data": {
        "pubkey": "0xb51336c31c4f0cc365d6c7b5d8ff1b4b7d4cf7c70163f9fd51a2badc854f5e29823fa11e3d7749d207807867149508d6",
        "withdrawal_credentials": "0x01000000000000000000000086b8145c98e5bd25ba722645b15ed65f024a87ec",
        "amount": "32000000000",
        "deposit_data_root": "5e58a5d8f1e53479343cb6188f061f6b1a46c521c53eef0580b04f485ad62bad",
        "signature": "0x88fe84889608a8b2424bddae2047d2ee4b42f72c4d8201d69e732d7c3bfa1bcb00f930979770b7d00071673fde8f205108dabe8d83ec49aa6de1b7869966b555be80a159e6ad11e273c4e0234038cfa525923044d6a89a4924fdc178f333568b"
      }
    }
  ],
  "signature_aggregate": "0x85650c30ec29a3703934bf50a28da102975deda77e758579ea3dfe4136abf752",
  "lock_hash": "0xd2880980169ee4a0000f23feb8fad9a6c70f38312956fe67aa89e118f5b0e048",
  "node_signatures": [
    "0xe6e531be7bbf6cee37d80ab489ade6491469e10743d3c1496a3e66fe989eb4c100c260eaee4ef1aa08fdb79ea05bb8c12970dec1a296abe627ac25a2515373b301"
  ]
}

No content

Last updated

Was this helpful?