LogoLogo
SDKAPI
Next
Next
  • Learn
    • Introduction
      • Obol Collective
      • OBOL Incentives
      • Key Staking Concepts
      • Obol vs Other DV Implementations
      • Obol Splits
      • DV Launchpad
      • Frequently Asked Questions
    • Charon
      • Introduction to Charon
      • Distributed Key Generation
      • Cluster Configuration
      • Charon Networking
      • CLI Reference
    • Futher Reading
      • Ethereum and Its Relationship With DVT
      • Community Testing
      • Peer Score
      • Useful Links
  • Run a DV
    • Quickstart
      • Quickstart Overview
      • Create a DV Alone
      • Create a DV With a Group
      • Push Metrics to Obol Monitoring
    • Prepare to Run a DV
      • How and Where To Run DVs
      • Deployment Best Practices
      • Test a Cluster
    • Running a DV
      • Activate a DV
      • Update a DV
      • Monitoring Your Node
      • Claim Rewards
      • Exit a DV
    • Partner Integrations
      • Create an EigenLayer DV
      • Create a Lido CSM DV
      • DappNode
  • Advanced & Troubleshooting
    • Advanced Guides
      • Create a DV Using the SDK
      • Migrate an Existing Validator
      • Enable MEV
      • Combine DV Private Key Shares
      • Self-Host a Relay
      • Advanced Docker Configs
      • Beacon node authentication
    • Troubleshooting
      • Errors & Resolutions
      • Handling DKG Failure
      • Client Configuration
      • Test Commands
    • Security
      • Overview
      • Centralization Risks and Mitigation
      • Obol Bug Bounty Program
      • Smart Contract Audit
      • Software Development at Obol
      • Charon Threat Model
      • Contacts
  • Community & Governance
    • Governance
      • Collective Overview
      • The Token House
      • The RAF
      • The OBOL Token
      • Delegate Guide
      • RAF1 Guide
    • Community
      • Staking Mastery Program
      • Techne
    • Contribution & Feedback
      • Filing a Bug Report
      • Documentation Standards
      • Feedback
  • Walkthrough Guides
    • Walkthroughs
      • Walkthrough Guides
  • SDK
    • Intro
    • Enumerations
      • FORK_MAPPING
    • Classes
      • Client
    • Interfaces
      • ClusterDefinition
      • RewardsSplitPayload
    • Type-Aliases
      • BuilderRegistration
      • BuilderRegistrationMessage
      • ClusterCreator
      • ClusterLock
      • ClusterOperator
      • ClusterPayload
      • ClusterValidator
      • DepositData
      • DistributedValidator
      • ETH_ADDRESS
      • OperatorPayload
      • SplitRecipient
      • TotalSplitPayload
    • Functions
      • validateClusterLock
  • API
    • What is this API?
    • System
    • Metrics
    • Cluster Definition
    • Cluster Lock
    • State
    • DV Exit
    • Cluster Effectiveness
    • Terms And Conditions
    • Techne Credentials
    • Address
    • OWR Information
  • Specification
Powered by GitBook
On this page
Edit on GitHub
  1. API

Cluster Lock

PreviousCluster DefinitionNextState

Last updated 2 months ago

Retrieve a Distributed Validator Cluster Lock Object

get

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
404
Cluster not found
500
An unknown error occurred
get
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

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
404
Cluster not found
500
An unknown error occurred
get
GET //lock/search/{network} 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

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
404
Cluster not found
500
An unknown error occurred
get
GET //v1/lock/search/{network} HTTP/1.1
Host: api.obol.tech
Accept: */*
{
  "cluster_locks": [
    "text"
  ],
  "total_count": 2,
  "total_pages": 4
}

Redirect to the launchpad cluster status page

get

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
302
Serves a redirect to the launchpad cluster status page
404
Cluster lock not found
500
An unknown error occurred
get
GET //lock/{lockHash}/launchpad HTTP/1.1
Host: api.obol.tech
Accept: */*

No content

Redirect to the launchpad cluster status page

get

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
302
Serves a redirect to the launchpad cluster status page
404
Cluster lock not found
500
An unknown error occurred
get
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

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
500
An unknown error occurred
get
GET //lock/operator/{address} 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

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
500
An unknown error occurred
get
GET //v1/lock/operator/{address} 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

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
400
Network not spported
500
An unknown error occurred
get
GET //lock/network/{network} 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

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
400
Network not spported
500
An unknown error occurred
get
GET //v1/lock/network/{network} 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

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
400
Network not spported
500
An unknown error occurred
get
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

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
400
Network not spported
500
An unknown error occurred
get
GET //v1/lock/network/summary/{network} HTTP/1.1
Host: api.obol.tech
Accept: */*
{
  "eth_staked": 2,
  "total_clusters": 2,
  "total_operators": 4
}
  • GETRetrieve a Distributed Validator Cluster Lock Object
  • GETRetrieve a list of Distributed Validator Cluster Lock Objects
  • GETRetrieve a list of Distributed Validator Cluster Lock Objects
  • POSTPush Distributed Validator Cluster Lock Data
  • POSTPush Distributed Validator Cluster Lock Data
  • GETRedirect to the launchpad cluster status page
  • GETRedirect to the launchpad cluster status page
  • GETRetrieve a list of Distributed Validator Clusters for which this address is an operator
  • GETRetrieve a list of Distributed Validator Clusters for which this address is an operator
  • GETRetrieve a list of Distributed Validator Clusters for a given network
  • GETRetrieve a list of Distributed Validator Clusters for a given network
  • GETRetrieve a list of Distributed Validator Clusters for a given network
  • GETRetrieve a list of Distributed Validator Clusters for a given network
  • POSTVerify Distributed Validator Cluster Lock Data
  • POSTVerify Distributed Validator Cluster Lock Data

Push Distributed Validator Cluster Lock Data

post

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
400
Invalid lock data
404
The cluster definition corresponding to this lock file was not found
409
Duplicate cluster lock entry
500
An unknown error occurred
post
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

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
400
Invalid lock data
404
The cluster definition corresponding to this lock file was not found
409
Duplicate cluster lock entry
500
An unknown error occurred
post
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"
  ]
}

Verify Distributed Validator Cluster Lock Data

post

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
400
Invalid lock data
500
An unknown error occurred
post
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

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
400
Invalid lock data
500
An unknown error occurred
post
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