OVM

Get an ObolValidatorManager (OVM) in one call

Changed on

Provenance (CreateObolValidatorManager from the network OVM factory), state (one Multicall3 read), role holders (RolesUpdated candidates, rolesOf at the same block), the 0xSplits v2 params of its recipients (verified against splitHash) and the validators whose credentials point at it. Every chain read is made at blockNumber. Amounts are wei decimal strings; addresses checksummed. Validators come from the goteth registry snapshot in ClickHouse (daily), the beacon registry past it and the pending deposit queue, with current status from the head state. Roles, splits and validators are only read for a verified Obol OVM (provenance obol); for any other contract they are null and only provenance and state are returned. Sections that could not be read are null and explained in notes. An address without code is 200 with provenance notObol. Complete answers, and answers for notObol addresses, are cached for one slot; answers with a section that could not be read are not cached.

get/v1/ovm/{network}/{address}

Request

  • Base URL
    https://api.obol.tech
  • Auth
    none declared

Path parameters

networkstring required

The network of the OVM

addressstring required

The OVM address

Response

The OVM

addressstring required
networkstring required
blockNumbernumber required

Block every chain read (state, roles, splits) was made at

ownerstring nullable required
principalRecipientstring nullable required
rewardRecipientstring nullable required
principalThresholdstring nullable required

wei (the contract stores gwei)

amountOfPrincipalStakestring nullable required

wei. A routing counter raised by OVM.deposit, not a measure of stake: compare with principalOnBeaconChain.

fundsPendingWithdrawalstring nullable required
balancestring nullable required

OVM ETH balance, wei

versionstring nullable required

version(), null if the contract has none

principalOnBeaconChainstring nullable required

wei. The principal this OVM is responsible for: the sum of processed beacon-chain deposits credited to validators whose withdrawal credentials point at this OVM (by the validator's current credentials), adjusted for consolidations into/out of those validators, minus principal already paid out by the OVM (sum of DistributeFunds.principalPayout). null until processed deposits are indexed (see notes).

notesstring[] required

Anything partial or unavailable in this answer

Example response

{
  "address": "0x8019384Ddf091154D6cfFA8E7f09542B39E2273f",
  "network": "hoodi",
  "blockNumber": 3854924,
  "provenance": {
    "status": "obol",
    "factoryAddress": "0x5754C8665B7e7BF15E83fCdF6d9636684B782b12",
    "creationTxHash": "0x176d60d40d1825d817941d59811a25c94b98c55a1c7763dccc9635ad6601c0a7",
    "creationBlock": 3807521,
    "reason": "CreateObolValidatorManager event found"
  },
  "principalThreshold": "16000000000000000000",
  "amountOfPrincipalStake": "64000000000000000000",
  "fundsPendingWithdrawal": "0",
  "balance": "1250000000000000000",
  "version": "v1.0.0",
  "pullBalances": {
    "principalRecipient": "0",
    "rewardRecipient": "0"
  },
  "roles": [
    {
      "address": "0x8a3bE1b1F4e2b6C5bC0dC5Bf1d1e6A1a8D1d5E2F",
      "roles": "33",
      "roleNames": [
        "WITHDRAWAL",
        "DEPOSIT"
      ],
      "grantedAtBlock": 3807530,
      "grantedAtTimestamp": 1760000000
    }
  ],
  "splits": [
    {
      "address": "0x1c5F4E4e2f1D5ab6E1bB0A9c7A4B4D5e6F7a8B9C",
      "kind": "reward",
      "splitHash": "0x9f5a0c0d4c5ea9f4b1c0b1a7a1e2c3d4e5f60718293a4b5c6d7e8f9012345678",
      "recipients": [
        "0x1111111111111111111111111111111111111111"
      ],
      "allocations": [
        "1000000"
      ],
      "totalAllocation": "1000000",
      "source": "SplitCreated"
    }
  ],
  "validators": [
    {
      "pubkey": "0xabababababababababababababababababababababababababababababababababababababababababababababababab",
      "index": 123456,
      "status": "active",
      "beaconStatus": "active_ongoing",
      "balance": "32001234567000000000",
      "effectiveBalance": "32000000000000000000",
      "withdrawalCredentials": "0x0200000000000000000000008019384ddf091154d6cffa8e7f09542b39e2273f",
      "lockHash": "0xcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcd",
      "clusterName": "My Obol Cluster"
    }
  ],
  "notes": [
    "principalOnBeaconChain is null: processed deposits are not indexed"
  ]
}

Changes

    • info

      added the media type application/json for the response with the status

    • info

      added the media type application/json for the response with the status

    • info

      added the media type application/json for the response with the status

    • info

      added the media type application/json for the response with the status

    • info

      endpoint added