Teku (v23.1.0+43-gca39f81fb4)
Download OpenAPI specification:Download
A minimal API specification for the beacon node, which enables a validator to connect and perform its obligations on the Ethereum beacon chain.
Get chain genesis details
Retrieve details of the chain's genesis which can be used to identify chain.
Responses
Response samples
- 200
- 400
- 500
{- "data": {
- "genesis_time": "1",
- "genesis_validators_root": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2",
- "genesis_fork_version": "0xcf8e0d4e"
}
}
Get state root
Calculates HashTreeRoot for state with given 'state_id'. If stateId is root, same value will be returned.
path Parameters
state_id required | string Example: head State identifier. Can be one of: "head" (canonical head in node's view), "genesis", "finalized", "justified", <slot>, <hex encoded stateRoot with 0x prefix>. |
Responses
Response samples
- 200
- 400
- 404
- 500
{- "execution_optimistic": true,
- "finalized": true,
- "data": {
- "root": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2"
}
}
Get state fork
Returns Fork object for state with given 'state_id'.
path Parameters
state_id required | string Example: head State identifier. Can be one of: "head" (canonical head in node's view), "genesis", "finalized", "justified", <slot>, <hex encoded stateRoot with 0x prefix>. |
Responses
Response samples
- 200
- 400
- 404
- 500
{- "execution_optimistic": true,
- "finalized": true,
- "data": {
- "previous_version": "0xcf8e0d4e",
- "current_version": "0xcf8e0d4e",
- "epoch": "1"
}
}
Get state finality checkpoints
Returns finality checkpoints for state with given 'state_id'. In case finality is not yet achieved, checkpoint should return epoch 0 and ZERO_HASH as root.
path Parameters
state_id required | string Example: head State identifier. Can be one of: "head" (canonical head in node's view), "genesis", "finalized", "justified", <slot>, <hex encoded stateRoot with 0x prefix>. |
Responses
Response samples
- 200
- 400
- 404
- 500
{- "execution_optimistic": true,
- "finalized": true,
- "data": {
- "previous_justified": {
- "epoch": "1",
- "root": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2"
}, - "current_justified": {
- "epoch": "1",
- "root": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2"
}, - "finalized": {
- "epoch": "1",
- "root": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2"
}
}
}
Get validators from state
Returns filterable list of validators with their balance, status and index.
path Parameters
state_id required | string Example: head State identifier. Can be one of: "head" (canonical head in node's view), "genesis", "finalized", "justified", <slot>, <hex encoded stateRoot with 0x prefix>. |
query Parameters
id | Array of strings >= 1 items |
status | Array of strings <string> >= 1 items Example: status=active_ongoing |
Responses
Response samples
- 200
- 400
- 404
- 500
{- "execution_optimistic": true,
- "finalized": true,
- "data": [
- {
- "index": "1",
- "balance": "1",
- "status": "pending_initialized",
- "validator": {
- "pubkey": "string",
- "withdrawal_credentials": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2",
- "effective_balance": "1",
- "slashed": true,
- "activation_eligibility_epoch": "1",
- "activation_epoch": "1",
- "exit_epoch": "1",
- "withdrawable_epoch": "1"
}
}
]
}
Get validator from state
Retrieves data about the given peer.
path Parameters
state_id required | string Example: head State identifier. Can be one of: "head" (canonical head in node's view), "genesis", "finalized", "justified", <slot>, <hex encoded stateRoot with 0x prefix>. |
validator_id required | string Example: 1 Either hex encoded public key (with 0x prefix) or validator index |
Responses
Response samples
- 200
- 400
- 404
- 500
{- "execution_optimistic": true,
- "finalized": true,
- "data": {
- "index": "1",
- "balance": "1",
- "status": "pending_initialized",
- "validator": {
- "pubkey": "string",
- "withdrawal_credentials": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2",
- "effective_balance": "1",
- "slashed": true,
- "activation_eligibility_epoch": "1",
- "activation_epoch": "1",
- "exit_epoch": "1",
- "withdrawable_epoch": "1"
}
}
}
Get validator balances from state
Returns filterable list of validator balances.
path Parameters
state_id required | string Example: head State identifier. Can be one of: "head" (canonical head in node's view), "genesis", "finalized", "justified", <slot>, <hex encoded stateRoot with 0x prefix>. |
query Parameters
id | Array of strings >= 1 items |
Responses
Response samples
- 200
- 400
- 404
- 500
{- "execution_optimistic": true,
- "finalized": true,
- "data": [
- {
- "index": "1",
- "balance": "1"
}
]
}
Get committees at state
Retrieves the committees for the given state.
path Parameters
state_id required | string Example: head State identifier. Can be one of: "head" (canonical head in node's view), "genesis", "finalized", "justified", <slot>, <hex encoded stateRoot with 0x prefix>. |
query Parameters
epoch | string <uint64> Example: epoch=1
|
index | string <uint64> Example: index=1
|
slot | string <uint64> Example: slot=1
|
Responses
Response samples
- 200
- 400
- 404
- 500
{- "execution_optimistic": true,
- "finalized": true,
- "data": [
- {
- "index": "1",
- "slot": "1",
- "validators": [
- "1"
]
}
]
}
Get sync committees
Retrieves the sync committees for the given state.
path Parameters
state_id required | string Example: head State identifier. Can be one of: "head" (canonical head in node's view), "genesis", "finalized", "justified", <slot>, <hex encoded stateRoot with 0x prefix>. |
query Parameters
epoch | string <uint64> Example: epoch=1
|
Responses
Response samples
- 200
- 400
- 404
- 500
{- "execution_optimistic": true,
- "finalized": true,
- "data": {
- "validators": [
- "1"
], - "validator_aggregates": [
- [
- "1"
]
]
}
}
Get chain genesis details
Fetch the RANDAO mix for the requested epoch from the state identified by state_id
.
If an epoch is not specified then the RANDAO mix for the state's current epoch will be returned.
By adjusting the state_id
parameter you can query for any historic value of the RANDAO mix. Ordinarily states from the same epoch will mutate the RANDAO mix for that epoch as blocks are applied.
path Parameters
state_id required | string Example: head State identifier. Can be one of: "head" (canonical head in node's view), "genesis", "finalized", "justified", <slot>, <hex encoded stateRoot with 0x prefix>. |
query Parameters
epoch | string <uint64> Example: epoch=1
|
Responses
Response samples
- 200
- 400
- 404
- 500
{- "execution_optimistic": true,
- "finalized": true,
- "data": {
- "randao": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2"
}
}
Get block headers
Retrieves block headers matching given query. By default it will fetch current head slot blocks.
query Parameters
slot | string <uint64> Example: slot=1
|
parent_root | string <byte> Example: parent_root=0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2 Not currently supported. |
Responses
Response samples
- 200
- 400
- 500
{- "execution_optimistic": true,
- "finalized": true,
- "data": [
- {
- "root": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2",
- "canonical": true,
- "header": {
- "message": {
- "slot": "1",
- "proposer_index": "1",
- "parent_root": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2",
- "state_root": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2",
- "body_root": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2"
}, - "signature": "string"
}
}
]
}
Get block header
Retrieves block header for given block id.
path Parameters
block_id required | string Example: head Block identifier. Can be one of: "head" (canonical head in node's view), "genesis", "finalized", <slot>, <hex encoded blockRoot with 0x prefix>. |
Responses
Response samples
- 200
- 400
- 404
- 500
{- "data": {
- "root": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2",
- "canonical": true,
- "header": {
- "message": {
- "slot": "1",
- "proposer_index": "1",
- "parent_root": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2",
- "state_root": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2",
- "body_root": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2"
}, - "signature": "string"
}
}, - "execution_optimistic": true,
- "finalized": true
}
Publish a signed block
Submit a signed beacon block to the beacon node to be imported. The beacon node performs the required validation.
Request Body schema:
Responses
Request samples
- Payload
Response samples
- 400
- 415
- 500
- 503
{- "code": 0,
- "message": "string"
}
Get block
Retrieves block details for given block id.
NOTE: only phase 0 blocks are returned, use /eth/v2/beacon/blocks/{block_id}
for multiple milestone support.
path Parameters
block_id required | string Example: head Block identifier. Can be one of: "head" (canonical head in node's view), "genesis", "finalized", <slot>, <hex encoded blockRoot with 0x prefix>. |
Responses
Response samples
- 200
- 400
- 404
- 500
{- "data": {
- "message": {
- "slot": "1",
- "proposer_index": "1",
- "parent_root": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2",
- "state_root": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2",
- "body": {
- "randao_reveal": "string",
- "eth1_data": {
- "deposit_root": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2",
- "deposit_count": "1",
- "block_hash": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2"
}, - "graffiti": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2",
- "proposer_slashings": [
- {
- "signed_header_1": {
- "message": {
- "slot": "1",
- "proposer_index": "1",
- "parent_root": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2",
- "state_root": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2",
- "body_root": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2"
}, - "signature": "string"
}, - "signed_header_2": {
- "message": {
- "slot": "1",
- "proposer_index": "1",
- "parent_root": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2",
- "state_root": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2",
- "body_root": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2"
}, - "signature": "string"
}
}
], - "attester_slashings": [
- {
- "attestation_1": {
- "attesting_indices": [
- "1"
], - "data": {
- "slot": "1",
- "index": "1",
- "beacon_block_root": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2",
- "source": {
- "epoch": "1",
- "root": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2"
}, - "target": {
- "epoch": "1",
- "root": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2"
}
}, - "signature": "string"
}, - "attestation_2": {
- "attesting_indices": [
- "1"
], - "data": {
- "slot": "1",
- "index": "1",
- "beacon_block_root": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2",
- "source": {
- "epoch": "1",
- "root": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2"
}, - "target": {
- "epoch": "1",
- "root": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2"
}
}, - "signature": "string"
}
}
], - "attestations": [
- {
- "aggregation_bits": "string",
- "data": {
- "slot": "1",
- "index": "1",
- "beacon_block_root": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2",
- "source": {
- "epoch": "1",
- "root": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2"
}, - "target": {
- "epoch": "1",
- "root": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2"
}
}, - "signature": "string"
}
], - "deposits": [
- {
- "proof": [
- "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2"
], - "data": {
- "pubkey": "string",
- "withdrawal_credentials": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2",
- "amount": "1",
- "signature": "string"
}
}
], - "voluntary_exits": [
- {
- "message": {
- "epoch": "1",
- "validator_index": "1"
}, - "signature": "string"
}
]
}
}, - "signature": "string"
}
}
Get block
Retrieves block details for given block id.
path Parameters
block_id required | string Example: head Block identifier. Can be one of: "head" (canonical head in node's view), "genesis", "finalized", <slot>, <hex encoded blockRoot with 0x prefix>. |
Responses
Response samples
- 200
- 400
- 404
- 500
{- "version": "phase0",
- "execution_optimistic": true,
- "finalized": true,
- "data": {
- "message": {
- "slot": "1",
- "proposer_index": "1",
- "parent_root": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2",
- "state_root": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2",
- "body": {
- "randao_reveal": "string",
- "eth1_data": {
- "deposit_root": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2",
- "deposit_count": "1",
- "block_hash": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2"
}, - "graffiti": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2",
- "proposer_slashings": [
- {
- "signed_header_1": {
- "message": {
- "slot": "1",
- "proposer_index": "1",
- "parent_root": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2",
- "state_root": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2",
- "body_root": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2"
}, - "signature": "string"
}, - "signed_header_2": {
- "message": {
- "slot": "1",
- "proposer_index": "1",
- "parent_root": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2",
- "state_root": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2",
- "body_root": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2"
}, - "signature": "string"
}
}
], - "attester_slashings": [
- {
- "attestation_1": {
- "attesting_indices": [
- "1"
], - "data": {
- "slot": "1",
- "index": "1",
- "beacon_block_root": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2",
- "source": {
- "epoch": "1",
- "root": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2"
}, - "target": {
- "epoch": "1",
- "root": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2"
}
}, - "signature": "string"
}, - "attestation_2": {
- "attesting_indices": [
- "1"
], - "data": {
- "slot": "1",
- "index": "1",
- "beacon_block_root": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2",
- "source": {
- "epoch": "1",
- "root": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2"
}, - "target": {
- "epoch": "1",
- "root": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2"
}
}, - "signature": "string"
}
}
], - "attestations": [
- {
- "aggregation_bits": "string",
- "data": {
- "slot": "1",
- "index": "1",
- "beacon_block_root": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2",
- "source": {
- "epoch": "1",
- "root": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2"
}, - "target": {
- "epoch": "1",
- "root": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2"
}
}, - "signature": "string"
}
], - "deposits": [
- {
- "proof": [
- "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2"
], - "data": {
- "pubkey": "string",
- "withdrawal_credentials": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2",
- "amount": "1",
- "signature": "string"
}
}
], - "voluntary_exits": [
- {
- "message": {
- "epoch": "1",
- "validator_index": "1"
}, - "signature": "string"
}
]
}
}, - "signature": "string"
}
}
Get blinded block
Retrieves blinded block details for given block id. Depending on Accept
header it can be returned either as JSON or as bytes serialized by SSZ
path Parameters
block_id required | string Example: head Block identifier. Can be one of: "head" (canonical head in node's view), "genesis", "finalized", <slot>, <hex encoded blockRoot with 0x prefix>. |
Responses
Response samples
- 200
- 400
- 404
- 500
{- "version": "phase0",
- "execution_optimistic": true,
- "finalized": true,
- "data": {
- "message": {
- "slot": "1",
- "proposer_index": "1",
- "parent_root": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2",
- "state_root": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2",
- "body": {
- "randao_reveal": "string",
- "eth1_data": {
- "deposit_root": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2",
- "deposit_count": "1",
- "block_hash": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2"
}, - "graffiti": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2",
- "proposer_slashings": [
- {
- "signed_header_1": {
- "message": {
- "slot": "1",
- "proposer_index": "1",
- "parent_root": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2",
- "state_root": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2",
- "body_root": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2"
}, - "signature": "string"
}, - "signed_header_2": {
- "message": {
- "slot": "1",
- "proposer_index": "1",
- "parent_root": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2",
- "state_root": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2",
- "body_root": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2"
}, - "signature": "string"
}
}
], - "attester_slashings": [
- {
- "attestation_1": {
- "attesting_indices": [
- "1"
], - "data": {
- "slot": "1",
- "index": "1",
- "beacon_block_root": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2",
- "source": {
- "epoch": "1",
- "root": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2"
}, - "target": {
- "epoch": "1",
- "root": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2"
}
}, - "signature": "string"
}, - "attestation_2": {
- "attesting_indices": [
- "1"
], - "data": {
- "slot": "1",
- "index": "1",
- "beacon_block_root": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2",
- "source": {
- "epoch": "1",
- "root": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2"
}, - "target": {
- "epoch": "1",
- "root": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2"
}
}, - "signature": "string"
}
}
], - "attestations": [
- {
- "aggregation_bits": "string",
- "data": {
- "slot": "1",
- "index": "1",
- "beacon_block_root": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2",
- "source": {
- "epoch": "1",
- "root": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2"
}, - "target": {
- "epoch": "1",
- "root": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2"
}
}, - "signature": "string"
}
], - "deposits": [
- {
- "proof": [
- "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2"
], - "data": {
- "pubkey": "string",
- "withdrawal_credentials": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2",
- "amount": "1",
- "signature": "string"
}
}
], - "voluntary_exits": [
- {
- "message": {
- "epoch": "1",
- "validator_index": "1"
}, - "signature": "string"
}
]
}
}, - "signature": "string"
}
}
Get block root
Retrieves hashTreeRoot of BeaconBlock/BeaconBlockHeader
path Parameters
block_id required | string Example: head Block identifier. Can be one of: "head" (canonical head in node's view), "genesis", "finalized", <slot>, <hex encoded blockRoot with 0x prefix>. |
Responses
Response samples
- 200
- 400
- 404
- 500
{- "data": {
- "root": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2"
}, - "execution_optimistic": true,
- "finalized": true
}
Get block attestations
Retrieves attestations included in requested block.
path Parameters
block_id required | string Example: head Block identifier. Can be one of: "head" (canonical head in node's view), "genesis", "finalized", <slot>, <hex encoded blockRoot with 0x prefix>. |
Responses
Response samples
- 200
- 400
- 404
- 500
{- "execution_optimistic": true,
- "finalized": true,
- "data": [
- {
- "aggregation_bits": "string",
- "data": {
- "slot": "1",
- "index": "1",
- "beacon_block_root": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2",
- "source": {
- "epoch": "1",
- "root": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2"
}, - "target": {
- "epoch": "1",
- "root": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2"
}
}, - "signature": "string"
}
]
}
Get attestations
Retrieves attestations known by the node but not necessarily incorporated into any block.
query Parameters
slot | string <uint64> Example: slot=1
|
committee_index | string <uint64> Example: committee_index=1
|
Responses
Response samples
- 200
- 400
- 500
{- "data": [
- {
- "aggregation_bits": "string",
- "data": {
- "slot": "1",
- "index": "1",
- "beacon_block_root": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2",
- "source": {
- "epoch": "1",
- "root": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2"
}, - "target": {
- "epoch": "1",
- "root": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2"
}
}, - "signature": "string"
}
]
}
Submit signed attestations
Submit signed attestations to the beacon node to be validated and submitted if valid.
This endpoint does not protected against slashing.
Request Body schema: application/json
aggregation_bits required | string <bytes> ^0x[a-fA-F0-9]{2,}$ SSZ hexadecimal |
required | object (AttestationData) |
signature required | string <bytes> ^0x[a-fA-F0-9]{2,}$ SSZ hexadecimal |
Responses
Request samples
- Payload
[- {
- "aggregation_bits": "string",
- "data": {
- "slot": "1",
- "index": "1",
- "beacon_block_root": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2",
- "source": {
- "epoch": "1",
- "root": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2"
}, - "target": {
- "epoch": "1",
- "root": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2"
}
}, - "signature": "string"
}
]
Response samples
- 400
- 500
{- "code": 0,
- "message": "string",
- "failures": [
- {
- "index": "1",
- "message": "string"
}
]
}
Get Attester Slashings
Retrieves attester slashings known by the node but not necessarily incorporated into any block.
Responses
Response samples
- 200
- 400
- 500
{- "data": [
- {
- "attestation_1": {
- "attesting_indices": [
- "1"
], - "data": {
- "slot": "1",
- "index": "1",
- "beacon_block_root": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2",
- "source": {
- "epoch": "1",
- "root": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2"
}, - "target": {
- "epoch": "1",
- "root": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2"
}
}, - "signature": "string"
}, - "attestation_2": {
- "attesting_indices": [
- "1"
], - "data": {
- "slot": "1",
- "index": "1",
- "beacon_block_root": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2",
- "source": {
- "epoch": "1",
- "root": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2"
}, - "target": {
- "epoch": "1",
- "root": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2"
}
}, - "signature": "string"
}
}
]
}
Submit attester slashing object
Submits attester slashing object to node's pool and if passes validation node MUST broadcast it to network.
Request Body schema: application/json
required | object (IndexedAttestation) |
required | object (IndexedAttestation) |
Responses
Request samples
- Payload
{- "attestation_1": {
- "attesting_indices": [
- "1"
], - "data": {
- "slot": "1",
- "index": "1",
- "beacon_block_root": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2",
- "source": {
- "epoch": "1",
- "root": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2"
}, - "target": {
- "epoch": "1",
- "root": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2"
}
}, - "signature": "string"
}, - "attestation_2": {
- "attesting_indices": [
- "1"
], - "data": {
- "slot": "1",
- "index": "1",
- "beacon_block_root": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2",
- "source": {
- "epoch": "1",
- "root": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2"
}, - "target": {
- "epoch": "1",
- "root": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2"
}
}, - "signature": "string"
}
}
Response samples
- 400
- 500
{- "code": 0,
- "message": "string"
}
Get proposer slashings
Retrieves proposer slashings known by the node but not necessarily incorporated into any block.
Responses
Response samples
- 200
- 400
- 500
{- "data": [
- {
- "signed_header_1": {
- "message": {
- "slot": "1",
- "proposer_index": "1",
- "parent_root": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2",
- "state_root": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2",
- "body_root": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2"
}, - "signature": "string"
}, - "signed_header_2": {
- "message": {
- "slot": "1",
- "proposer_index": "1",
- "parent_root": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2",
- "state_root": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2",
- "body_root": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2"
}, - "signature": "string"
}
}
]
}
Submit proposer slashing object
Submits proposer slashing object to node's pool and, if it passes validation, the node MUST broadcast it to network.
Request Body schema: application/json
required | object (SignedBeaconBlockHeader) |
required | object (SignedBeaconBlockHeader) |
Responses
Request samples
- Payload
{- "signed_header_1": {
- "message": {
- "slot": "1",
- "proposer_index": "1",
- "parent_root": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2",
- "state_root": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2",
- "body_root": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2"
}, - "signature": "string"
}, - "signed_header_2": {
- "message": {
- "slot": "1",
- "proposer_index": "1",
- "parent_root": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2",
- "state_root": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2",
- "body_root": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2"
}, - "signature": "string"
}
}
Response samples
- 400
- 500
{- "code": 0,
- "message": "string"
}
Submit signed voluntary exit
Submits signed voluntary exit object to node's pool and if it passes validation node MUST broadcast it to network.
Request Body schema: application/json
required | object (VoluntaryExit) |
signature required | string <bytes> ^0x[a-fA-F0-9]{2,}$ SSZ hexadecimal |
Responses
Request samples
- Payload
{- "message": {
- "epoch": "1",
- "validator_index": "1"
}, - "signature": "string"
}
Response samples
- 400
- 500
{- "code": 0,
- "message": "string"
}
Submit sync committee messages to node
Submits sync committee message objects to the node.
Sync committee messages are not present in phase0, but are required for Altair networks.
If a sync committee message is validated successfully the node MUST publish that sync committee message on all applicable subnets.
If one or more sync committee messages fail validation the node MUST return a 400 error with details of which sync committee messages have failed, and why.
Request Body schema: application/json
slot required | string <uint64> unsigned 64 bit integer |
beacon_block_root required | string <byte> Bytes32 hexadecimal |
validator_index required | string <uint64> unsigned 64 bit integer |
signature required | string <bytes> ^0x[a-fA-F0-9]{2,}$ SSZ hexadecimal |
Responses
Request samples
- Payload
[- {
- "slot": "1",
- "beacon_block_root": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2",
- "validator_index": "1",
- "signature": "string"
}
]
Response samples
- 400
- 500
{- "code": 0,
- "message": "string",
- "failures": [
- {
- "index": "1",
- "message": "string"
}
]
}
Submit SignedBLSToExecutionChange object to node's pool
Submits SignedBLSToExecutionChange object to node's pool and if passes validation node MUST broadcast it to network.
Request Body schema: application/json
required | object (BLSToExecutionChange) |
signature required | string <bytes> ^0x[a-fA-F0-9]{2,}$ SSZ hexadecimal |
Responses
Request samples
- Payload
[- {
- "message": {
- "validator_index": "1",
- "from_bls_pubkey": "string",
- "to_execution_address": "string"
}, - "signature": "string"
}
]
Response samples
- 400
- 500
{- "code": 0,
- "message": "string",
- "failures": [
- {
- "index": "1",
- "message": "string"
}
]
}
Get SignedBLSToExecutionChange from operations pool
Retrieves BLS to execution changes known by the node but not necessarily incorporated into any block
Responses
Response samples
- 200
- 400
- 500
{- "data": [
- {
- "message": {
- "validator_index": "1",
- "from_bls_pubkey": "string",
- "to_execution_address": "string"
}, - "signature": "string"
}
]
}
Get chain genesis details
Retrieve details of the chain's genesis which can be used to identify chain.
Responses
Response samples
- 200
- 400
- 500
{- "data": {
- "genesis_time": "1",
- "genesis_validators_root": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2",
- "genesis_fork_version": "0xcf8e0d4e"
}
}
Get state fork
Returns Fork object for state with given 'state_id'.
path Parameters
state_id required | string Example: head State identifier. Can be one of: "head" (canonical head in node's view), "genesis", "finalized", "justified", <slot>, <hex encoded stateRoot with 0x prefix>. |
Responses
Response samples
- 200
- 400
- 404
- 500
{- "execution_optimistic": true,
- "finalized": true,
- "data": {
- "previous_version": "0xcf8e0d4e",
- "current_version": "0xcf8e0d4e",
- "epoch": "1"
}
}
Get validator from state
Retrieves data about the given peer.
path Parameters
state_id required | string Example: head State identifier. Can be one of: "head" (canonical head in node's view), "genesis", "finalized", "justified", <slot>, <hex encoded stateRoot with 0x prefix>. |
validator_id required | string Example: 1 Either hex encoded public key (with 0x prefix) or validator index |
Responses
Response samples
- 200
- 400
- 404
- 500
{- "execution_optimistic": true,
- "finalized": true,
- "data": {
- "index": "1",
- "balance": "1",
- "status": "pending_initialized",
- "validator": {
- "pubkey": "string",
- "withdrawal_credentials": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2",
- "effective_balance": "1",
- "slashed": true,
- "activation_eligibility_epoch": "1",
- "activation_epoch": "1",
- "exit_epoch": "1",
- "withdrawable_epoch": "1"
}
}
}
Get sync committees
Retrieves the sync committees for the given state.
path Parameters
state_id required | string Example: head State identifier. Can be one of: "head" (canonical head in node's view), "genesis", "finalized", "justified", <slot>, <hex encoded stateRoot with 0x prefix>. |
query Parameters
epoch | string <uint64> Example: epoch=1
|
Responses
Response samples
- 200
- 400
- 404
- 500
{- "execution_optimistic": true,
- "finalized": true,
- "data": {
- "validators": [
- "1"
], - "validator_aggregates": [
- [
- "1"
]
]
}
}
Publish a signed block
Submit a signed beacon block to the beacon node to be imported. The beacon node performs the required validation.
Request Body schema:
Responses
Request samples
- Payload
Response samples
- 400
- 415
- 500
- 503
{- "code": 0,
- "message": "string"
}
Publish a signed blinded block
Submit a signed blinded beacon block to the beacon node to be imported. The beacon node performs the required validation.
Request Body schema:
Responses
Request samples
- Payload
Response samples
- 400
- 415
- 500
- 503
{- "code": 0,
- "message": "string"
}
Submit signed attestations
Submit signed attestations to the beacon node to be validated and submitted if valid.
This endpoint does not protected against slashing.
Request Body schema: application/json
aggregation_bits required | string <bytes> ^0x[a-fA-F0-9]{2,}$ SSZ hexadecimal |
required | object (AttestationData) |
signature required | string <bytes> ^0x[a-fA-F0-9]{2,}$ SSZ hexadecimal |
Responses
Request samples
- Payload
[- {
- "aggregation_bits": "string",
- "data": {
- "slot": "1",
- "index": "1",
- "beacon_block_root": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2",
- "source": {
- "epoch": "1",
- "root": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2"
}, - "target": {
- "epoch": "1",
- "root": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2"
}
}, - "signature": "string"
}
]
Response samples
- 400
- 500
{- "code": 0,
- "message": "string",
- "failures": [
- {
- "index": "1",
- "message": "string"
}
]
}
Submit sync committee messages to node
Submits sync committee message objects to the node.
Sync committee messages are not present in phase0, but are required for Altair networks.
If a sync committee message is validated successfully the node MUST publish that sync committee message on all applicable subnets.
If one or more sync committee messages fail validation the node MUST return a 400 error with details of which sync committee messages have failed, and why.
Request Body schema: application/json
slot required | string <uint64> unsigned 64 bit integer |
beacon_block_root required | string <byte> Bytes32 hexadecimal |
validator_index required | string <uint64> unsigned 64 bit integer |
signature required | string <bytes> ^0x[a-fA-F0-9]{2,}$ SSZ hexadecimal |
Responses
Request samples
- Payload
[- {
- "slot": "1",
- "beacon_block_root": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2",
- "validator_index": "1",
- "signature": "string"
}
]
Response samples
- 400
- 500
{- "code": 0,
- "message": "string",
- "failures": [
- {
- "index": "1",
- "message": "string"
}
]
}
Subscribe to node events
Provides endpoint to subscribe to beacon node Server-Sent-Events stream. Consumers should use eventsource implementation to listen on those events.
Servers may send SSE comments beginning with :
for any purpose, including to keep the event stream connection alive in the presence of proxy servers.
query Parameters
topics | string Example: topics=head Event types to subscribe to. Available values include: [ |
Responses
Response samples
- 400
- 500
{- "code": 0,
- "message": "string"
}
Get node syncing status
Requests the beacon node to describe if it's currently syncing or not, and if it is, what block it is up to.
Responses
Response samples
- 200
- 400
- 500
{- "data": {
- "head_slot": "1",
- "sync_distance": "1",
- "is_syncing": true,
- "is_optimistic": true,
- "el_offline": true
}
}
Get attester duties
Requests the beacon node to provide a set of attestation duties, which should be performed by validators, for a particular epoch. Duties should only need to be checked once per epoch, however a chain reorganization (of > MIN_SEED_LOOKAHEAD epochs) could occur, resulting in a change of duties. For full safety, you should monitor head events and confirm the dependent root in this response matches:
- event.previous_duty_dependent_root when
compute_epoch_at_slot(event.slot) == epoch
- event.current_duty_dependent_root when
compute_epoch_at_slot(event.slot) + 1 == epoch
- event.block otherwise
The dependent_root value is get_block_root_at_slot(state, compute_start_slot_at_epoch(epoch - 1) - 1)
or the genesis block root in the case of underflow.
path Parameters
epoch required | string <uint64> Example: 1
|
Request Body schema: application/json
integer string
Responses
Request samples
- Payload
[- "1"
]
Response samples
- 200
- 400
- 500
- 503
{- "execution_optimistic": true,
- "finalized": true,
- "dependent_root": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2",
- "data": [
- {
- "pubkey": "0x93247f2209abcacf57b75a51dafae777f9dd38bc7053d1af526f220a7489a6d3a2753e5f3e8b1cfe39b56f43611df74a",
- "validator_index": "1",
- "committee_index": "1",
- "committee_length": "1",
- "committees_at_slot": "1",
- "validator_committee_index": "1",
- "slot": "1"
}
]
}
Get proposer duties
Request beacon node to provide all validators that are scheduled to propose a block in the given epoch.
Duties should only need to be checked once per epoch, however a chain reorganization could occur that results in a change of duties. For full safety, you should monitor head events and confirm the dependent root in this response matches:
- event.current_duty_dependent_root when
compute_epoch_at_slot(event.slot) == epoch
- event.block otherwise
The dependent_root value is get_block_root_at_slot(state, compute_start_slot_at_epoch(epoch) - 1)
or the genesis block root in the case of underflow.
path Parameters
epoch required | string <uint64> Example: 1
|
Responses
Response samples
- 200
- 400
- 500
- 503
{- "execution_optimistic": true,
- "dependent_root": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2",
- "data": [
- {
- "pubkey": "0x93247f2209abcacf57b75a51dafae777f9dd38bc7053d1af526f220a7489a6d3a2753e5f3e8b1cfe39b56f43611df74a",
- "validator_index": "1",
- "slot": "1"
}
]
}
Produce unsigned block
Requests a beacon node to produce a valid block, which can then be signed by a validator.
NOTE: deprecated, switch to using /eth/v2/validator/blocks/{slot}
for multiple milestone support.
path Parameters
slot required | string <uint64> Example: 1 The slot for which the block should be proposed. |
query Parameters
randao_reveal required | string <byte> Example: randao_reveal=0x1b66ac1fb663c9bc59509846d6ec05345bd908eda73e670af888da41af171505cc411d61252fb6cb3fa0017b679f8bb2305b26a285fa2737f175668d0dff91cc1b66ac1fb663c9bc59509846d6ec05345bd908eda73e670af888da41af171505
|
graffiti | string <byte> Example: graffiti=0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2
|
Responses
Response samples
- 200
- 400
- 500
- 503
{- "data": {
- "slot": "1",
- "proposer_index": "1",
- "parent_root": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2",
- "state_root": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2",
- "body": {
- "randao_reveal": "string",
- "eth1_data": {
- "deposit_root": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2",
- "deposit_count": "1",
- "block_hash": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2"
}, - "graffiti": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2",
- "proposer_slashings": [
- {
- "signed_header_1": {
- "message": {
- "slot": "1",
- "proposer_index": "1",
- "parent_root": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2",
- "state_root": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2",
- "body_root": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2"
}, - "signature": "string"
}, - "signed_header_2": {
- "message": {
- "slot": "1",
- "proposer_index": "1",
- "parent_root": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2",
- "state_root": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2",
- "body_root": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2"
}, - "signature": "string"
}
}
], - "attester_slashings": [
- {
- "attestation_1": {
- "attesting_indices": [
- "1"
], - "data": {
- "slot": "1",
- "index": "1",
- "beacon_block_root": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2",
- "source": {
- "epoch": "1",
- "root": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2"
}, - "target": {
- "epoch": "1",
- "root": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2"
}
}, - "signature": "string"
}, - "attestation_2": {
- "attesting_indices": [
- "1"
], - "data": {
- "slot": "1",
- "index": "1",
- "beacon_block_root": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2",
- "source": {
- "epoch": "1",
- "root": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2"
}, - "target": {
- "epoch": "1",
- "root": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2"
}
}, - "signature": "string"
}
}
], - "attestations": [
- {
- "aggregation_bits": "string",
- "data": {
- "slot": "1",
- "index": "1",
- "beacon_block_root": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2",
- "source": {
- "epoch": "1",
- "root": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2"
}, - "target": {
- "epoch": "1",
- "root": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2"
}
}, - "signature": "string"
}
], - "deposits": [
- {
- "proof": [
- "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2"
], - "data": {
- "pubkey": "string",
- "withdrawal_credentials": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2",
- "amount": "1",
- "signature": "string"
}
}
], - "voluntary_exits": [
- {
- "message": {
- "epoch": "1",
- "validator_index": "1"
}, - "signature": "string"
}
]
}
}
}
Produce unsigned block
Requests a beacon node to produce a valid block, which can then be signed by a validator. Metadata in the response indicates the type of block produced, and the supported types of block will be added to as forks progress.
path Parameters
slot required | string <uint64> Example: 1 The slot for which the block should be proposed. |
query Parameters
randao_reveal required | string <byte> Example: randao_reveal=0x1b66ac1fb663c9bc59509846d6ec05345bd908eda73e670af888da41af171505cc411d61252fb6cb3fa0017b679f8bb2305b26a285fa2737f175668d0dff91cc1b66ac1fb663c9bc59509846d6ec05345bd908eda73e670af888da41af171505
|
graffiti | string <byte> Example: graffiti=0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2
|
Responses
Response samples
- 200
- 400
- 500
{- "data": {
- "slot": "1",
- "proposer_index": "1",
- "parent_root": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2",
- "state_root": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2",
- "body": {
- "randao_reveal": "string",
- "eth1_data": {
- "deposit_root": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2",
- "deposit_count": "1",
- "block_hash": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2"
}, - "graffiti": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2",
- "proposer_slashings": [
- {
- "signed_header_1": {
- "message": {
- "slot": "1",
- "proposer_index": "1",
- "parent_root": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2",
- "state_root": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2",
- "body_root": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2"
}, - "signature": "string"
}, - "signed_header_2": {
- "message": {
- "slot": "1",
- "proposer_index": "1",
- "parent_root": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2",
- "state_root": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2",
- "body_root": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2"
}, - "signature": "string"
}
}
], - "attester_slashings": [
- {
- "attestation_1": {
- "attesting_indices": [
- "1"
], - "data": {
- "slot": "1",
- "index": "1",
- "beacon_block_root": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2",
- "source": {
- "epoch": "1",
- "root": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2"
}, - "target": {
- "epoch": "1",
- "root": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2"
}
}, - "signature": "string"
}, - "attestation_2": {
- "attesting_indices": [
- "1"
], - "data": {
- "slot": "1",
- "index": "1",
- "beacon_block_root": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2",
- "source": {
- "epoch": "1",
- "root": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2"
}, - "target": {
- "epoch": "1",
- "root": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2"
}
}, - "signature": "string"
}
}
], - "attestations": [
- {
- "aggregation_bits": "string",
- "data": {
- "slot": "1",
- "index": "1",
- "beacon_block_root": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2",
- "source": {
- "epoch": "1",
- "root": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2"
}, - "target": {
- "epoch": "1",
- "root": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2"
}
}, - "signature": "string"
}
], - "deposits": [
- {
- "proof": [
- "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2"
], - "data": {
- "pubkey": "string",
- "withdrawal_credentials": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2",
- "amount": "1",
- "signature": "string"
}
}
], - "voluntary_exits": [
- {
- "message": {
- "epoch": "1",
- "validator_index": "1"
}, - "signature": "string"
}
]
}
}, - "version": "phase0"
}
Produce unsigned blinded block
Requests a beacon node to produce a valid blinded block, which can then be signed by a validator. A blinded block is a block with only a transactions root, rather than a full transactions list.
Metadata in the response indicates the type of block produced, and the supported types of block will be added to as forks progress.
Pre-Bellatrix, this endpoint will return a BeaconBlock
.
path Parameters
slot required | string <uint64> Example: 1 The slot for which the block should be proposed. |
query Parameters
randao_reveal required | string <byte> Example: randao_reveal=0x1b66ac1fb663c9bc59509846d6ec05345bd908eda73e670af888da41af171505cc411d61252fb6cb3fa0017b679f8bb2305b26a285fa2737f175668d0dff91cc1b66ac1fb663c9bc59509846d6ec05345bd908eda73e670af888da41af171505
|
graffiti | string <byte> Example: graffiti=0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2
|
Responses
Response samples
- 200
- 400
- 500
{- "data": {
- "slot": "1",
- "proposer_index": "1",
- "parent_root": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2",
- "state_root": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2",
- "body": {
- "randao_reveal": "string",
- "eth1_data": {
- "deposit_root": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2",
- "deposit_count": "1",
- "block_hash": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2"
}, - "graffiti": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2",
- "proposer_slashings": [
- {
- "signed_header_1": {
- "message": {
- "slot": "1",
- "proposer_index": "1",
- "parent_root": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2",
- "state_root": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2",
- "body_root": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2"
}, - "signature": "string"
}, - "signed_header_2": {
- "message": {
- "slot": "1",
- "proposer_index": "1",
- "parent_root": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2",
- "state_root": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2",
- "body_root": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2"
}, - "signature": "string"
}
}
], - "attester_slashings": [
- {
- "attestation_1": {
- "attesting_indices": [
- "1"
], - "data": {
- "slot": "1",
- "index": "1",
- "beacon_block_root": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2",
- "source": {
- "epoch": "1",
- "root": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2"
}, - "target": {
- "epoch": "1",
- "root": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2"
}
}, - "signature": "string"
}, - "attestation_2": {
- "attesting_indices": [
- "1"
], - "data": {
- "slot": "1",
- "index": "1",
- "beacon_block_root": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2",
- "source": {
- "epoch": "1",
- "root": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2"
}, - "target": {
- "epoch": "1",
- "root": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2"
}
}, - "signature": "string"
}
}
], - "attestations": [
- {
- "aggregation_bits": "string",
- "data": {
- "slot": "1",
- "index": "1",
- "beacon_block_root": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2",
- "source": {
- "epoch": "1",
- "root": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2"
}, - "target": {
- "epoch": "1",
- "root": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2"
}
}, - "signature": "string"
}
], - "deposits": [
- {
- "proof": [
- "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2"
], - "data": {
- "pubkey": "string",
- "withdrawal_credentials": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2",
- "amount": "1",
- "signature": "string"
}
}
], - "voluntary_exits": [
- {
- "message": {
- "epoch": "1",
- "validator_index": "1"
}, - "signature": "string"
}
]
}
}, - "version": "phase0"
}
Produce an AttestationData
Requests that the beacon node produce an AttestationData.
query Parameters
slot | string <uint64> Example: slot=1
|
committee_index | string <uint64> Example: committee_index=1
|
Responses
Response samples
- 200
- 400
- 404
- 500
- 503
{- "data": {
- "slot": "1",
- "index": "1",
- "beacon_block_root": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2",
- "source": {
- "epoch": "1",
- "root": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2"
}, - "target": {
- "epoch": "1",
- "root": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2"
}
}
}
Get aggregated attestations
Aggregates all attestations matching given attestation data root and slot.
query Parameters
attestation_data_root required | string <byte> Example: attestation_data_root=0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2
|
slot required | string <uint64> Example: slot=1
|
Responses
Response samples
- 200
- 400
- 404
- 500
{- "data": {
- "aggregation_bits": "string",
- "data": {
- "slot": "1",
- "index": "1",
- "beacon_block_root": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2",
- "source": {
- "epoch": "1",
- "root": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2"
}, - "target": {
- "epoch": "1",
- "root": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2"
}
}, - "signature": "string"
}
}
Publish aggregate and proofs
Verifies given aggregate and proofs and publishes it on appropriate gossipsub topic.
Request Body schema: application/json
required | object (AggregateAndProof) |
signature required | string <bytes> ^0x[a-fA-F0-9]{2,}$ SSZ hexadecimal |
Responses
Request samples
- Payload
[- {
- "message": {
- "aggregator_index": "1",
- "aggregate": {
- "aggregation_bits": "string",
- "data": {
- "slot": "1",
- "index": "1",
- "beacon_block_root": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2",
- "source": {
- "epoch": "1",
- "root": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2"
}, - "target": {
- "epoch": "1",
- "root": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2"
}
}, - "signature": "string"
}, - "selection_proof": "string"
}, - "signature": "string"
}
]
Response samples
- 400
- 500
{- "code": 0,
- "message": "string"
}
Subscribe to a committee subnet
After Beacon node receives this request, search using discv5 for peers related to this subnet and replace current peers with those ones if necessary If validator is_aggregator, beacon node must:
- announce subnet topic subscription on gossipsub
- aggregate attestations received on that subnet
Request Body schema: application/json
validator_index required | string <integer> integer string |
committee_index required | string <integer> integer string |
committees_at_slot required | string <uint64> unsigned 64 bit integer |
slot required | string <uint64> unsigned 64 bit integer |
is_aggregator required | boolean |
Responses
Request samples
- Payload
[- {
- "validator_index": "1",
- "committee_index": "1",
- "committees_at_slot": "1",
- "slot": "1",
- "is_aggregator": true
}
]
Response samples
- 400
- 500
- 503
{- "code": 0,
- "message": "string"
}
Get sync committee duties
Requests the beacon node to provide a set of sync committee duties
path Parameters
epoch required | string <uint64> Example: 1
|
Request Body schema: application/json
integer string
Responses
Request samples
- Payload
[- "1"
]
Response samples
- 200
- 400
- 500
- 503
{- "execution_optimistic": true,
- "data": [
- {
- "pubkey": "0x93247f2209abcacf57b75a51dafae777f9dd38bc7053d1af526f220a7489a6d3a2753e5f3e8b1cfe39b56f43611df74a",
- "validator_index": "1",
- "validator_sync_committee_indices": [
- "1"
]
}
]
}
Produce a sync committee contribution
Returns a SyncCommitteeContribution
that is the aggregate of SyncCommitteeMessage
values known to this node matching the specified slot, subcommittee index and beacon block root.
query Parameters
slot required | string <uint64> Example: slot=1
|
subcommittee_index required | number
|
beacon_block_root required | string <byte> Example: beacon_block_root=0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2
|
Responses
Response samples
- 200
- 400
- 404
- 500
- 503
{- "data": {
- "slot": "1",
- "beacon_block_root": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2",
- "subcommittee_index": "1",
- "aggregation_bits": "string",
- "signature": "string"
}
}
Subscribe to a Sync committee subnet
Subscribe to a number of sync committee subnets
Sync committees are not present in phase0, but are required for Altair networks.
Subscribing to sync committee subnets is an action performed by VC to enable network participation in Altair networks, and only required if the VC has an active validator in an active sync committee.
Request Body schema: application/json
validator_index required | string <integer> integer string |
sync_committee_indices required | Array of strings <integer> |
until_epoch required | string <uint64> unsigned 64 bit integer |
Responses
Request samples
- Payload
[- {
- "validator_index": "1",
- "sync_committee_indices": [
- "1"
], - "until_epoch": "1"
}
]
Response samples
- 400
- 500
{- "code": 0,
- "message": "string"
}
Publish contribution and proofs
Verifies given sync committee contribution and proofs and publishes on appropriate gossipsub topics.
Request Body schema: application/json
required | object (ContributionAndProof) |
signature required | string <bytes> ^0x[a-fA-F0-9]{2,}$ SSZ hexadecimal |
Responses
Request samples
- Payload
[- {
- "message": {
- "aggregator_index": "1",
- "contribution": {
- "slot": "1",
- "beacon_block_root": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2",
- "subcommittee_index": "1",
- "aggregation_bits": "string",
- "signature": "string"
}, - "selection_proof": "string"
}, - "signature": "string"
}
]
Response samples
- 400
- 500
{- "code": 0,
- "message": "string"
}
Prepare Beacon Proposers
Prepares the beacon node for potential proposers by supplying information required when proposing blocks for the given validators. The information supplied for each validator index is considered persistent until overwritten by new information for the given validator index, or until the beacon node restarts.
Note that because the information is not persistent across beacon node restarts it is recommended that either the beacon node is monitored for restarts or this information is refreshed by resending this request periodically (for example, each epoch).
Also note that requests containing currently inactive or unknown validator indices will be accepted, as they may become active at a later epoch.
Request Body schema: application/json
validator_index required | string <uint64> unsigned 64 bit integer |
fee_recipient required | string <byte> Hex encoded deposit contract address with 0x prefix |
Responses
Request samples
- Payload
[- {
- "validator_index": "1",
- "fee_recipient": "0x1Db3439a222C519ab44bb1144fC28167b4Fa6EE6"
}
]
Response samples
- 400
- 500
{- "code": 0,
- "message": "string"
}
Register validators with builder
Prepares the beacon node for engaging with external builders. The information must be sent by the beacon node to the builder network. It is expected that the validator client will send this information periodically to ensure the beacon node has correct and timely registration information to provide to builders. The validator client should not sign blinded beacon blocks that do not adhere to their latest fee recipient and gas limit preferences.
Request Body schema:
Responses
Request samples
- Payload
Response samples
- 400
- 500
{- "code": 0,
- "message": "string"
}
Publish a signed blinded block
Submit a signed blinded beacon block to the beacon node to be imported. The beacon node performs the required validation.
Request Body schema:
Responses
Request samples
- Payload
Response samples
- 400
- 415
- 500
- 503
{- "code": 0,
- "message": "string"
}
Get attester duties
Requests the beacon node to provide a set of attestation duties, which should be performed by validators, for a particular epoch. Duties should only need to be checked once per epoch, however a chain reorganization (of > MIN_SEED_LOOKAHEAD epochs) could occur, resulting in a change of duties. For full safety, you should monitor head events and confirm the dependent root in this response matches:
- event.previous_duty_dependent_root when
compute_epoch_at_slot(event.slot) == epoch
- event.current_duty_dependent_root when
compute_epoch_at_slot(event.slot) + 1 == epoch
- event.block otherwise
The dependent_root value is get_block_root_at_slot(state, compute_start_slot_at_epoch(epoch - 1) - 1)
or the genesis block root in the case of underflow.
path Parameters
epoch required | string <uint64> Example: 1
|
Request Body schema: application/json
integer string
Responses
Request samples
- Payload
[- "1"
]
Response samples
- 200
- 400
- 500
- 503
{- "execution_optimistic": true,
- "finalized": true,
- "dependent_root": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2",
- "data": [
- {
- "pubkey": "0x93247f2209abcacf57b75a51dafae777f9dd38bc7053d1af526f220a7489a6d3a2753e5f3e8b1cfe39b56f43611df74a",
- "validator_index": "1",
- "committee_index": "1",
- "committee_length": "1",
- "committees_at_slot": "1",
- "validator_committee_index": "1",
- "slot": "1"
}
]
}
Get proposer duties
Request beacon node to provide all validators that are scheduled to propose a block in the given epoch.
Duties should only need to be checked once per epoch, however a chain reorganization could occur that results in a change of duties. For full safety, you should monitor head events and confirm the dependent root in this response matches:
- event.current_duty_dependent_root when
compute_epoch_at_slot(event.slot) == epoch
- event.block otherwise
The dependent_root value is get_block_root_at_slot(state, compute_start_slot_at_epoch(epoch) - 1)
or the genesis block root in the case of underflow.
path Parameters
epoch required | string <uint64> Example: 1
|
Responses
Response samples
- 200
- 400
- 500
- 503
{- "execution_optimistic": true,
- "dependent_root": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2",
- "data": [
- {
- "pubkey": "0x93247f2209abcacf57b75a51dafae777f9dd38bc7053d1af526f220a7489a6d3a2753e5f3e8b1cfe39b56f43611df74a",
- "validator_index": "1",
- "slot": "1"
}
]
}
Produce unsigned block
Requests a beacon node to produce a valid block, which can then be signed by a validator.
NOTE: deprecated, switch to using /eth/v2/validator/blocks/{slot}
for multiple milestone support.
path Parameters
slot required | string <uint64> Example: 1 The slot for which the block should be proposed. |
query Parameters
randao_reveal required | string <byte> Example: randao_reveal=0x1b66ac1fb663c9bc59509846d6ec05345bd908eda73e670af888da41af171505cc411d61252fb6cb3fa0017b679f8bb2305b26a285fa2737f175668d0dff91cc1b66ac1fb663c9bc59509846d6ec05345bd908eda73e670af888da41af171505
|
graffiti | string <byte> Example: graffiti=0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2
|
Responses
Response samples
- 200
- 400
- 500
- 503
{- "data": {
- "slot": "1",
- "proposer_index": "1",
- "parent_root": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2",
- "state_root": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2",
- "body": {
- "randao_reveal": "string",
- "eth1_data": {
- "deposit_root": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2",
- "deposit_count": "1",
- "block_hash": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2"
}, - "graffiti": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2",
- "proposer_slashings": [
- {
- "signed_header_1": {
- "message": {
- "slot": "1",
- "proposer_index": "1",
- "parent_root": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2",
- "state_root": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2",
- "body_root": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2"
}, - "signature": "string"
}, - "signed_header_2": {
- "message": {
- "slot": "1",
- "proposer_index": "1",
- "parent_root": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2",
- "state_root": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2",
- "body_root": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2"
}, - "signature": "string"
}
}
], - "attester_slashings": [
- {
- "attestation_1": {
- "attesting_indices": [
- "1"
], - "data": {
- "slot": "1",
- "index": "1",
- "beacon_block_root": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2",
- "source": {
- "epoch": "1",
- "root": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2"
}, - "target": {
- "epoch": "1",
- "root": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2"
}
}, - "signature": "string"
}, - "attestation_2": {
- "attesting_indices": [
- "1"
], - "data": {
- "slot": "1",
- "index": "1",
- "beacon_block_root": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2",
- "source": {
- "epoch": "1",
- "root": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2"
}, - "target": {
- "epoch": "1",
- "root": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2"
}
}, - "signature": "string"
}
}
], - "attestations": [
- {
- "aggregation_bits": "string",
- "data": {
- "slot": "1",
- "index": "1",
- "beacon_block_root": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2",
- "source": {
- "epoch": "1",
- "root": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2"
}, - "target": {
- "epoch": "1",
- "root": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2"
}
}, - "signature": "string"
}
], - "deposits": [
- {
- "proof": [
- "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2"
], - "data": {
- "pubkey": "string",
- "withdrawal_credentials": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2",
- "amount": "1",
- "signature": "string"
}
}
], - "voluntary_exits": [
- {
- "message": {
- "epoch": "1",
- "validator_index": "1"
}, - "signature": "string"
}
]
}
}
}
Produce unsigned block
Requests a beacon node to produce a valid block, which can then be signed by a validator. Metadata in the response indicates the type of block produced, and the supported types of block will be added to as forks progress.
path Parameters
slot required | string <uint64> Example: 1 The slot for which the block should be proposed. |
query Parameters
randao_reveal required | string <byte> Example: randao_reveal=0x1b66ac1fb663c9bc59509846d6ec05345bd908eda73e670af888da41af171505cc411d61252fb6cb3fa0017b679f8bb2305b26a285fa2737f175668d0dff91cc1b66ac1fb663c9bc59509846d6ec05345bd908eda73e670af888da41af171505
|
graffiti | string <byte> Example: graffiti=0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2
|
Responses
Response samples
- 200
- 400
- 500
{- "data": {
- "slot": "1",
- "proposer_index": "1",
- "parent_root": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2",
- "state_root": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2",
- "body": {
- "randao_reveal": "string",
- "eth1_data": {
- "deposit_root": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2",
- "deposit_count": "1",
- "block_hash": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2"
}, - "graffiti": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2",
- "proposer_slashings": [
- {
- "signed_header_1": {
- "message": {
- "slot": "1",
- "proposer_index": "1",
- "parent_root": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2",
- "state_root": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2",
- "body_root": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2"
}, - "signature": "string"
}, - "signed_header_2": {
- "message": {
- "slot": "1",
- "proposer_index": "1",
- "parent_root": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2",
- "state_root": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2",
- "body_root": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2"
}, - "signature": "string"
}
}
], - "attester_slashings": [
- {
- "attestation_1": {
- "attesting_indices": [
- "1"
], - "data": {
- "slot": "1",
- "index": "1",
- "beacon_block_root": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2",
- "source": {
- "epoch": "1",
- "root": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2"
}, - "target": {
- "epoch": "1",
- "root": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2"
}
}, - "signature": "string"
}, - "attestation_2": {
- "attesting_indices": [
- "1"
], - "data": {
- "slot": "1",
- "index": "1",
- "beacon_block_root": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2",
- "source": {
- "epoch": "1",
- "root": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2"
}, - "target": {
- "epoch": "1",
- "root": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2"
}
}, - "signature": "string"
}
}
], - "attestations": [
- {
- "aggregation_bits": "string",
- "data": {
- "slot": "1",
- "index": "1",
- "beacon_block_root": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2",
- "source": {
- "epoch": "1",
- "root": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2"
}, - "target": {
- "epoch": "1",
- "root": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2"
}
}, - "signature": "string"
}
], - "deposits": [
- {
- "proof": [
- "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2"
], - "data": {
- "pubkey": "string",
- "withdrawal_credentials": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2",
- "amount": "1",
- "signature": "string"
}
}
], - "voluntary_exits": [
- {
- "message": {
- "epoch": "1",
- "validator_index": "1"
}, - "signature": "string"
}
]
}
}, - "version": "phase0"
}
Produce unsigned blinded block
Requests a beacon node to produce a valid blinded block, which can then be signed by a validator. A blinded block is a block with only a transactions root, rather than a full transactions list.
Metadata in the response indicates the type of block produced, and the supported types of block will be added to as forks progress.
Pre-Bellatrix, this endpoint will return a BeaconBlock
.
path Parameters
slot required | string <uint64> Example: 1 The slot for which the block should be proposed. |
query Parameters
randao_reveal required | string <byte> Example: randao_reveal=0x1b66ac1fb663c9bc59509846d6ec05345bd908eda73e670af888da41af171505cc411d61252fb6cb3fa0017b679f8bb2305b26a285fa2737f175668d0dff91cc1b66ac1fb663c9bc59509846d6ec05345bd908eda73e670af888da41af171505
|
graffiti | string <byte> Example: graffiti=0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2
|
Responses
Response samples
- 200
- 400
- 500
{- "data": {
- "slot": "1",
- "proposer_index": "1",
- "parent_root": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2",
- "state_root": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2",
- "body": {
- "randao_reveal": "string",
- "eth1_data": {
- "deposit_root": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2",
- "deposit_count": "1",
- "block_hash": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2"
}, - "graffiti": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2",
- "proposer_slashings": [
- {
- "signed_header_1": {
- "message": {
- "slot": "1",
- "proposer_index": "1",
- "parent_root": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2",
- "state_root": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2",
- "body_root": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2"
}, - "signature": "string"
}, - "signed_header_2": {
- "message": {
- "slot": "1",
- "proposer_index": "1",
- "parent_root": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2",
- "state_root": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2",
- "body_root": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2"
}, - "signature": "string"
}
}
], - "attester_slashings": [
- {
- "attestation_1": {
- "attesting_indices": [
- "1"
], - "data": {
- "slot": "1",
- "index": "1",
- "beacon_block_root": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2",
- "source": {
- "epoch": "1",
- "root": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2"
}, - "target": {
- "epoch": "1",
- "root": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2"
}
}, - "signature": "string"
}, - "attestation_2": {
- "attesting_indices": [
- "1"
], - "data": {
- "slot": "1",
- "index": "1",
- "beacon_block_root": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2",
- "source": {
- "epoch": "1",
- "root": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2"
}, - "target": {
- "epoch": "1",
- "root": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2"
}
}, - "signature": "string"
}
}
], - "attestations": [
- {
- "aggregation_bits": "string",
- "data": {
- "slot": "1",
- "index": "1",
- "beacon_block_root": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2",
- "source": {
- "epoch": "1",
- "root": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2"
}, - "target": {
- "epoch": "1",
- "root": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2"
}
}, - "signature": "string"
}
], - "deposits": [
- {
- "proof": [
- "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2"
], - "data": {
- "pubkey": "string",
- "withdrawal_credentials": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2",
- "amount": "1",
- "signature": "string"
}
}
], - "voluntary_exits": [
- {
- "message": {
- "epoch": "1",
- "validator_index": "1"
}, - "signature": "string"
}
]
}
}, - "version": "phase0"
}
Produce an AttestationData
Requests that the beacon node produce an AttestationData.
query Parameters
slot | string <uint64> Example: slot=1
|
committee_index | string <uint64> Example: committee_index=1
|
Responses
Response samples
- 200
- 400
- 404
- 500
- 503
{- "data": {
- "slot": "1",
- "index": "1",
- "beacon_block_root": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2",
- "source": {
- "epoch": "1",
- "root": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2"
}, - "target": {
- "epoch": "1",
- "root": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2"
}
}
}
Get aggregated attestations
Aggregates all attestations matching given attestation data root and slot.
query Parameters
attestation_data_root required | string <byte> Example: attestation_data_root=0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2
|
slot required | string <uint64> Example: slot=1
|
Responses
Response samples
- 200
- 400
- 404
- 500
{- "data": {
- "aggregation_bits": "string",
- "data": {
- "slot": "1",
- "index": "1",
- "beacon_block_root": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2",
- "source": {
- "epoch": "1",
- "root": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2"
}, - "target": {
- "epoch": "1",
- "root": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2"
}
}, - "signature": "string"
}
}
Publish aggregate and proofs
Verifies given aggregate and proofs and publishes it on appropriate gossipsub topic.
Request Body schema: application/json
required | object (AggregateAndProof) |
signature required | string <bytes> ^0x[a-fA-F0-9]{2,}$ SSZ hexadecimal |
Responses
Request samples
- Payload
[- {
- "message": {
- "aggregator_index": "1",
- "aggregate": {
- "aggregation_bits": "string",
- "data": {
- "slot": "1",
- "index": "1",
- "beacon_block_root": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2",
- "source": {
- "epoch": "1",
- "root": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2"
}, - "target": {
- "epoch": "1",
- "root": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2"
}
}, - "signature": "string"
}, - "selection_proof": "string"
}, - "signature": "string"
}
]
Response samples
- 400
- 500
{- "code": 0,
- "message": "string"
}
Subscribe to a committee subnet
After Beacon node receives this request, search using discv5 for peers related to this subnet and replace current peers with those ones if necessary If validator is_aggregator, beacon node must:
- announce subnet topic subscription on gossipsub
- aggregate attestations received on that subnet
Request Body schema: application/json
validator_index required | string <integer> integer string |
committee_index required | string <integer> integer string |
committees_at_slot required | string <uint64> unsigned 64 bit integer |
slot required | string <uint64> unsigned 64 bit integer |
is_aggregator required | boolean |
Responses
Request samples
- Payload
[- {
- "validator_index": "1",
- "committee_index": "1",
- "committees_at_slot": "1",
- "slot": "1",
- "is_aggregator": true
}
]
Response samples
- 400
- 500
- 503
{- "code": 0,
- "message": "string"
}
Get sync committee duties
Requests the beacon node to provide a set of sync committee duties
path Parameters
epoch required | string <uint64> Example: 1
|
Request Body schema: application/json
integer string
Responses
Request samples
- Payload
[- "1"
]
Response samples
- 200
- 400
- 500
- 503
{- "execution_optimistic": true,
- "data": [
- {
- "pubkey": "0x93247f2209abcacf57b75a51dafae777f9dd38bc7053d1af526f220a7489a6d3a2753e5f3e8b1cfe39b56f43611df74a",
- "validator_index": "1",
- "validator_sync_committee_indices": [
- "1"
]
}
]
}
Produce a sync committee contribution
Returns a SyncCommitteeContribution
that is the aggregate of SyncCommitteeMessage
values known to this node matching the specified slot, subcommittee index and beacon block root.
query Parameters
slot required | string <uint64> Example: slot=1
|
subcommittee_index required | number
|
beacon_block_root required | string <byte> Example: beacon_block_root=0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2
|
Responses
Response samples
- 200
- 400
- 404
- 500
- 503
{- "data": {
- "slot": "1",
- "beacon_block_root": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2",
- "subcommittee_index": "1",
- "aggregation_bits": "string",
- "signature": "string"
}
}
Subscribe to a Sync committee subnet
Subscribe to a number of sync committee subnets
Sync committees are not present in phase0, but are required for Altair networks.
Subscribing to sync committee subnets is an action performed by VC to enable network participation in Altair networks, and only required if the VC has an active validator in an active sync committee.
Request Body schema: application/json
validator_index required | string <integer> integer string |
sync_committee_indices required | Array of strings <integer> |
until_epoch required | string <uint64> unsigned 64 bit integer |
Responses
Request samples
- Payload
[- {
- "validator_index": "1",
- "sync_committee_indices": [
- "1"
], - "until_epoch": "1"
}
]
Response samples
- 400
- 500
{- "code": 0,
- "message": "string"
}
Publish contribution and proofs
Verifies given sync committee contribution and proofs and publishes on appropriate gossipsub topics.
Request Body schema: application/json
required | object (ContributionAndProof) |
signature required | string <bytes> ^0x[a-fA-F0-9]{2,}$ SSZ hexadecimal |
Responses
Request samples
- Payload
[- {
- "message": {
- "aggregator_index": "1",
- "contribution": {
- "slot": "1",
- "beacon_block_root": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2",
- "subcommittee_index": "1",
- "aggregation_bits": "string",
- "signature": "string"
}, - "selection_proof": "string"
}, - "signature": "string"
}
]
Response samples
- 400
- 500
{- "code": 0,
- "message": "string"
}
Prepare Beacon Proposers
Prepares the beacon node for potential proposers by supplying information required when proposing blocks for the given validators. The information supplied for each validator index is considered persistent until overwritten by new information for the given validator index, or until the beacon node restarts.
Note that because the information is not persistent across beacon node restarts it is recommended that either the beacon node is monitored for restarts or this information is refreshed by resending this request periodically (for example, each epoch).
Also note that requests containing currently inactive or unknown validator indices will be accepted, as they may become active at a later epoch.
Request Body schema: application/json
validator_index required | string <uint64> unsigned 64 bit integer |
fee_recipient required | string <byte> Hex encoded deposit contract address with 0x prefix |
Responses
Request samples
- Payload
[- {
- "validator_index": "1",
- "fee_recipient": "0x1Db3439a222C519ab44bb1144fC28167b4Fa6EE6"
}
]
Response samples
- 400
- 500
{- "code": 0,
- "message": "string"
}
Register validators with builder
Prepares the beacon node for engaging with external builders. The information must be sent by the beacon node to the builder network. It is expected that the validator client will send this information periodically to ensure the beacon node has correct and timely registration information to provide to builders. The validator client should not sign blinded beacon blocks that do not adhere to their latest fee recipient and gas limit preferences.
Request Body schema:
Responses
Request samples
- Payload
Response samples
- 400
- 500
{- "code": 0,
- "message": "string"
}
Get finalized block root
Retrieves hashTreeRoot of finalized Beacon Block.
Responds with 404 if block at a slot is either unavailable or not yet finalized.
path Parameters
slot required | string <uint64> Example: 1
|
Responses
Response samples
- 200
- 400
- 404
- 500
{- "data": {
- "root": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2"
}
}
Get Validator Liveness
Requests the beacon node to indicate if a validator has been observed to be live in a given epoch. The beacon node might detect liveness by observing messages from the validator on the network, in the beacon chain, from its API or from any other source. It is important to note that the values returned by the beacon node are not canonical; they are best-effort and based upon a subjective view of the network.
path Parameters
epoch required | string <uint64> Example: 1
|
Request Body schema: application/json
indices required | Array of strings <uint64> |
Responses
Request samples
- Payload
{- "indices": [
- "1"
]
}
Response samples
- 200
- 400
- 500
- 503
{- "data": [
- {
- "index": "1",
- "epoch": "1",
- "is_live": true
}
]
}
Get current prepared beacon proposers and registered validators
Get the current proposers information held by beacon node as result of prepare_beacon_proposer and register_validator validator API calls. This API is considered unstable and the returned data format may change in the future.
Responses
Response samples
- 200
- 400
- 500
- 503
{- "prepared_proposers": [
- {
- "proposer_index": "1",
- "fee_recipient": "0x1Db3439a222C519ab44bb1144fC28167b4Fa6EE6",
- "expiry_slot": "1"
}
], - "registered_validators": [
- {
- "proposer_index": "1",
- "pubkey": "0x93247f2209abcacf57b75a51dafae777f9dd38bc7053d1af526f220a7489a6d3a2753e5f3e8b1cfe39b56f43611df74a",
- "fee_recipient": "0x1Db3439a222C519ab44bb1144fC28167b4Fa6EE6",
- "gas_limit": "1",
- "timestamp": "1",
- "expiry_slot": "1"
}
]
}
Get Global Validator Inclusion
Returns a global count of votes for a given epoch.
path Parameters
epoch required | string <uint64> Example: 1
|
Responses
Response samples
- 200
- 400
- 404
- 500
- 503
{- "data": {
- "current_epoch_active_gwei": "1",
- "previous_epoch_active_gwei": "1",
- "current_epoch_target_attesting_gwei": "1",
- "previous_epoch_target_attesting_gwei": "1",
- "previous_epoch_head_attesting_gwei": "1"
}
}
Get Validator Inclusion
Returns a per-validator summary of how that validator performed during the current epoch.
path Parameters
epoch required | string <uint64> Example: 1
|
validator_id required | string <uint64> Example: 1 unsigned 64 bit integer |
Responses
Response samples
- 200
- 400
- 404
- 500
- 503
{- "data": {
- "is_slashed": true,
- "is_withdrawable_in_current_epoch": true,
- "is_active_unslashed_in_current_epoch": true,
- "is_active_unslashed_in_previous_epoch": true,
- "current_epoch_effective_balance_gwei": "1",
- "is_current_epoch_target_attester": true,
- "is_previous_epoch_target_attester": true,
- "is_previous_epoch_head_attester": true
}
}
Subscribe to node events
Provides endpoint to subscribe to beacon node Server-Sent-Events stream. Consumers should use eventsource implementation to listen on those events.
Servers may send SSE comments beginning with :
for any purpose, including to keep the event stream connection alive in the presence of proxy servers.
query Parameters
topics | string Example: topics=head Event types to subscribe to. Available values include: [ |
Responses
Response samples
- 400
- 500
{- "code": 0,
- "message": "string"
}
Response samples
- 200
- 400
- 500
{- "data": {
- "peer_id": "QmYyQSo1c1Ym7orWxLYvCrM2EmxFTANf8wXmmE7DWjhx5N",
- "enr": "enr:-IS4QHCYrYZbAKWCBRlAy5zzaDZXJBGkcnh4MHcBFZntXNFrdvJjX04jRzjzCBOonrkTfj499SZuOh8R33Ls8RRcy5wBgmlkgnY0gmlwhH8AAAGJc2VjcDI1NmsxoQPKY0yuDUmstAHYpMa2_oxVtw0RW_QAdpzBQA8yWM0xOIN1ZHCCdl8",
- "p2p_addresses": [
- "/ip4/7.7.7.7/tcp/4242/p2p/QmYyQSo1c1Ym7orWxLYvCrM2EmxFTANf8wXmmE7DWjhx5N"
], - "discovery_addresses": [
- "/ip4/7.7.7.7/udp/30303/p2p/QmYyQSo1c1Ym7orWxLYvCrM2EmxFTANf8wXmmE7DWjhx5N"
], - "metadata": {
- "seq_number": "1",
- "attnets": "string",
- "syncnets": "string"
}
}
}
Response samples
- 200
- 400
- 500
{- "data": [
- {
- "peer_id": "QmYyQSo1c1Ym7orWxLYvCrM2EmxFTANf8wXmmE7DWjhx5N",
- "enr": "enr:-IS4QHCYrYZbAKWCBRlAy5zzaDZXJBGkcnh4MHcBFZntXNFrdvJjX04jRzjzCBOonrkTfj499SZuOh8R33Ls8RRcy5wBgmlkgnY0gmlwhH8AAAGJc2VjcDI1NmsxoQPKY0yuDUmstAHYpMa2_oxVtw0RW_QAdpzBQA8yWM0xOIN1ZHCCdl8",
- "last_seen_p2p_address": "/ip4/7.7.7.7/tcp/4242/p2p/QmYyQSo1c1Ym7orWxLYvCrM2EmxFTANf8wXmmE7DWjhx5N",
- "state": "disconnected",
- "direction": "inbound"
}
], - "meta": {
- "count": 0
}
}
Get node peer
Retrieves data about the given peer.
path Parameters
peer_id required | string Example: QmYyQSo1c1Ym7orWxLYvCrM2EmxFTANf8wXmmE7DWjhx5N Cryptographic hash of a peer’s public key. Read more |
Responses
Response samples
- 200
- 400
- 404
- 500
{- "data": {
- "peer_id": "QmYyQSo1c1Ym7orWxLYvCrM2EmxFTANf8wXmmE7DWjhx5N",
- "enr": "enr:-IS4QHCYrYZbAKWCBRlAy5zzaDZXJBGkcnh4MHcBFZntXNFrdvJjX04jRzjzCBOonrkTfj499SZuOh8R33Ls8RRcy5wBgmlkgnY0gmlwhH8AAAGJc2VjcDI1NmsxoQPKY0yuDUmstAHYpMa2_oxVtw0RW_QAdpzBQA8yWM0xOIN1ZHCCdl8",
- "last_seen_p2p_address": "/ip4/7.7.7.7/tcp/4242/p2p/QmYyQSo1c1Ym7orWxLYvCrM2EmxFTANf8wXmmE7DWjhx5N",
- "state": "disconnected",
- "direction": "inbound"
}
}
Get node syncing status
Requests the beacon node to describe if it's currently syncing or not, and if it is, what block it is up to.
Responses
Response samples
- 200
- 400
- 500
{- "data": {
- "head_slot": "1",
- "sync_distance": "1",
- "is_syncing": true,
- "is_optimistic": true,
- "el_offline": true
}
}
Response samples
- 200
- 400
- 500
{- "data": {
- "version": "string"
}
}
Get fork choice leaves Deprecated
Retrieves all possible chain heads (leaves of fork choice tree).
Deprecated - use `/eth/v2/debug/beacon/heads
Responses
Response samples
- 200
- 400
- 500
{- "data": [
- {
- "slot": "1",
- "root": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2"
}
]
}
Get state
Returns full BeaconState object for given state_id.
Use Accept header to select application/octet-stream
if SSZ response type is required.
NOTE: Only phase0 beacon state will be returned in JSON, use /eth/v2/beacon/states/{state_id}
for altair.
path Parameters
state_id required | string Example: head State identifier. Can be one of: "head" (canonical head in node's view), "genesis", "finalized", "justified", <slot>, <hex encoded stateRoot with 0x prefix>. |
Responses
Response samples
- 200
- 400
- 404
- 500
{- "data": {
- "genesis_time": "1",
- "genesis_validators_root": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2",
- "slot": "1",
- "fork": {
- "previous_version": "0xcf8e0d4e",
- "current_version": "0xcf8e0d4e",
- "epoch": "1"
}, - "latest_block_header": {
- "slot": "1",
- "proposer_index": "1",
- "parent_root": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2",
- "state_root": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2",
- "body_root": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2"
}, - "block_roots": [
- "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2"
], - "state_roots": [
- "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2"
], - "historical_roots": [
- "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2"
], - "eth1_data": {
- "deposit_root": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2",
- "deposit_count": "1",
- "block_hash": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2"
}, - "eth1_data_votes": [
- {
- "deposit_root": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2",
- "deposit_count": "1",
- "block_hash": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2"
}
], - "eth1_deposit_index": "1",
- "validators": [
- {
- "pubkey": "string",
- "withdrawal_credentials": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2",
- "effective_balance": "1",
- "slashed": true,
- "activation_eligibility_epoch": "1",
- "activation_epoch": "1",
- "exit_epoch": "1",
- "withdrawable_epoch": "1"
}
], - "balances": [
- "1"
], - "randao_mixes": [
- "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2"
], - "slashings": [
- "1"
], - "previous_epoch_attestations": [
- {
- "aggregation_bits": "string",
- "data": {
- "slot": "1",
- "index": "1",
- "beacon_block_root": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2",
- "source": {
- "epoch": "1",
- "root": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2"
}, - "target": {
- "epoch": "1",
- "root": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2"
}
}, - "inclusion_delay": "1",
- "proposer_index": "1"
}
], - "current_epoch_attestations": [
- {
- "aggregation_bits": "string",
- "data": {
- "slot": "1",
- "index": "1",
- "beacon_block_root": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2",
- "source": {
- "epoch": "1",
- "root": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2"
}, - "target": {
- "epoch": "1",
- "root": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2"
}
}, - "inclusion_delay": "1",
- "proposer_index": "1"
}
], - "justification_bits": "string",
- "previous_justified_checkpoint": {
- "epoch": "1",
- "root": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2"
}, - "current_justified_checkpoint": {
- "epoch": "1",
- "root": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2"
}, - "finalized_checkpoint": {
- "epoch": "1",
- "root": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2"
}
}
}
Get full BeaconState object
Returns full BeaconState object for given state_id.
Use Accept header to select application/octet-stream
if SSZ response type is required.
path Parameters
state_id required | string Example: head State identifier. Can be one of: "head" (canonical head in node's view), "genesis", "finalized", "justified", <slot>, <hex encoded stateRoot with 0x prefix>. |
Responses
Response samples
- 200
- 400
- 404
- 500
{- "version": "phase0",
- "execution_optimistic": true,
- "finalized": true,
- "data": {
- "genesis_time": "1",
- "genesis_validators_root": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2",
- "slot": "1",
- "fork": {
- "previous_version": "0xcf8e0d4e",
- "current_version": "0xcf8e0d4e",
- "epoch": "1"
}, - "latest_block_header": {
- "slot": "1",
- "proposer_index": "1",
- "parent_root": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2",
- "state_root": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2",
- "body_root": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2"
}, - "block_roots": [
- "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2"
], - "state_roots": [
- "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2"
], - "historical_roots": [
- "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2"
], - "eth1_data": {
- "deposit_root": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2",
- "deposit_count": "1",
- "block_hash": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2"
}, - "eth1_data_votes": [
- {
- "deposit_root": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2",
- "deposit_count": "1",
- "block_hash": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2"
}
], - "eth1_deposit_index": "1",
- "validators": [
- {
- "pubkey": "string",
- "withdrawal_credentials": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2",
- "effective_balance": "1",
- "slashed": true,
- "activation_eligibility_epoch": "1",
- "activation_epoch": "1",
- "exit_epoch": "1",
- "withdrawable_epoch": "1"
}
], - "balances": [
- "1"
], - "randao_mixes": [
- "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2"
], - "slashings": [
- "1"
], - "previous_epoch_attestations": [
- {
- "aggregation_bits": "string",
- "data": {
- "slot": "1",
- "index": "1",
- "beacon_block_root": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2",
- "source": {
- "epoch": "1",
- "root": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2"
}, - "target": {
- "epoch": "1",
- "root": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2"
}
}, - "inclusion_delay": "1",
- "proposer_index": "1"
}
], - "current_epoch_attestations": [
- {
- "aggregation_bits": "string",
- "data": {
- "slot": "1",
- "index": "1",
- "beacon_block_root": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2",
- "source": {
- "epoch": "1",
- "root": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2"
}, - "target": {
- "epoch": "1",
- "root": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2"
}
}, - "inclusion_delay": "1",
- "proposer_index": "1"
}
], - "justification_bits": "string",
- "previous_justified_checkpoint": {
- "epoch": "1",
- "root": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2"
}, - "current_justified_checkpoint": {
- "epoch": "1",
- "root": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2"
}, - "finalized_checkpoint": {
- "epoch": "1",
- "root": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2"
}
}
}
Response samples
- 200
- 400
- 500
- 503
{- "justified_checkpoint": {
- "epoch": "1",
- "root": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2"
}, - "finalized_checkpoint": {
- "epoch": "1",
- "root": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2"
}, - "fork_choice_nodes": [
- {
- "slot": "1",
- "block_root": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2",
- "parent_root": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2",
- "justified_epoch": "1",
- "finalized_epoch": "1",
- "weight": "1",
- "validity": "VALID",
- "execution_block_hash": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2",
- "extra_data": {
- "property1": "string",
- "property2": "string"
}
}
], - "extra_data": {
- "property1": "string",
- "property2": "string"
}
}
Changes the log level without restarting.
Changes the log level without restarting. You can change the log level for all logs, or the log level for specific packages or classes.
Request Body schema: application/json
level required | string <string> (Level) Level string |
log_filter | Array of strings |
Responses
Request samples
- Payload
{- "level": "ERROR",
- "log_filter": [
- "string"
]
}
Response samples
- 400
- 500
{- "code": 0,
- "message": "string"
}
Get SSZ State By Block id
Download the state SSZ object for given identifier - by block root, keyword, or slot.
path Parameters
block_id required | string Example: head Block identifier. Can be one of: "head" (canonical head in node's view), "genesis", "finalized", <slot>, <hex encoded blockRoot with 0x prefix>. |
Responses
Response samples
- 400
- 404
- 500
{- "code": 0,
- "message": "string"
}
Get node readiness
Returns 200 if the node is ready to accept traffic
query Parameters
target_peer_count | string <integer> Example: target_peer_count=1 Returns 503 status code when current peer count is below than target |
Responses
Response samples
- 400
- 500
{- "code": 0,
- "message": "string"
}
Get blocks at slot
Get all blocks (canonical and non-canonical) by slot.
path Parameters
slot required | string <uint64> Example: 1 slot of the blocks to retrieve. |
Responses
Response samples
- 200
- 400
- 404
- 500
- 503
{- "version": "phase0",
- "data": [
- {
- "message": {
- "slot": "1",
- "proposer_index": "1",
- "parent_root": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2",
- "state_root": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2",
- "body": {
- "randao_reveal": "string",
- "eth1_data": {
- "deposit_root": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2",
- "deposit_count": "1",
- "block_hash": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2"
}, - "graffiti": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2",
- "proposer_slashings": [
- {
- "signed_header_1": {
- "message": {
- "slot": "1",
- "proposer_index": "1",
- "parent_root": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2",
- "state_root": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2",
- "body_root": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2"
}, - "signature": "string"
}, - "signed_header_2": {
- "message": {
- "slot": "1",
- "proposer_index": "1",
- "parent_root": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2",
- "state_root": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2",
- "body_root": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2"
}, - "signature": "string"
}
}
], - "attester_slashings": [
- {
- "attestation_1": {
- "attesting_indices": [
- "1"
], - "data": {
- "slot": "1",
- "index": "1",
- "beacon_block_root": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2",
- "source": {
- "epoch": null,
- "root": null
}, - "target": {
- "epoch": null,
- "root": null
}
}, - "signature": "string"
}, - "attestation_2": {
- "attesting_indices": [
- "1"
], - "data": {
- "slot": "1",
- "index": "1",
- "beacon_block_root": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2",
- "source": {
- "epoch": null,
- "root": null
}, - "target": {
- "epoch": null,
- "root": null
}
}, - "signature": "string"
}
}
], - "attestations": [
- {
- "aggregation_bits": "string",
- "data": {
- "slot": "1",
- "index": "1",
- "beacon_block_root": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2",
- "source": {
- "epoch": "1",
- "root": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2"
}, - "target": {
- "epoch": "1",
- "root": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2"
}
}, - "signature": "string"
}
], - "deposits": [
- {
- "proof": [
- "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2"
], - "data": {
- "pubkey": "string",
- "withdrawal_credentials": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2",
- "amount": "1",
- "signature": "string"
}
}
], - "voluntary_exits": [
- {
- "message": {
- "epoch": "1",
- "validator_index": "1"
}, - "signature": "string"
}
]
}
}, - "signature": "0x1b66ac1fb663c9bc59509846d6ec05345bd908eda73e670af888da41af171505cc411d61252fb6cb3fa0017b679f8bb2305b26a285fa2737f175668d0dff91cc1b66ac1fb663c9bc59509846d6ec05345bd908eda73e670af888da41af171505",
- "root": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2"
}
]
}
Response samples
- 200
- 400
- 500
{- "data": [
- {
- "index": "1",
- "data": {
- "pubkey": "string",
- "withdrawal_credentials": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2",
- "amount": "1",
- "signature": "string"
}
}
]
}
Get new Eth1Data
Eth1Data that would be used in a new block created based on the current head.
Responses
Response samples
- 200
- 400
- 404
- 500
{- "data": {
- "deposit_root": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2",
- "deposit_count": "1",
- "block_hash": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2"
}
}
Get cached eth1 blocks
Get all of the eth1 blocks currently cached by the beacon node, that could be considered for inclusion during block production.
Responses
Response samples
- 200
- 400
- 404
- 500
{- "data": [
- {
- "deposit_root": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2",
- "deposit_count": "1",
- "block_hash": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2"
}
]
}
Get Eth1 voting summary
Returns information about the current state of voting for Eth1Data from the specified state.
path Parameters
state_id required | string Example: head State identifier. Can be one of: "head" (canonical head in node's view), "genesis", "finalized", "justified", <slot>, <hex encoded stateRoot with 0x prefix>. |
Responses
Response samples
- 200
- 400
- 404
- 500
{- "data": {
- "state_eth1_data": {
- "deposit_root": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2",
- "deposit_count": "1",
- "block_hash": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2"
}, - "eth1_data_votes": [
- {
- "eth1_data": {
- "deposit_root": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2",
- "deposit_count": "1",
- "block_hash": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2"
}, - "votes": "1"
}
], - "votes_required": "1",
- "voting_period_slots": "1",
- "voting_period_slots_left": "1"
}
}
Get finalized DepositTreeSnapshot
Latest finalized DepositTreeSnapshot that could be used to reconstruct Deposit merkle tree. See EIP-4881 for details.
Responses
Response samples
- 200
- 400
- 404
- 500
{- "data": {
- "finalized": [
- "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2"
], - "deposit_root": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2",
- "deposit_count": "1",
- "execution_block_hash": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2",
- "execution_block_height": "1"
}
}
Get Global Validator Inclusion
Returns a global count of votes for a given epoch.
path Parameters
epoch required | string <uint64> Example: 1
|
Responses
Response samples
- 200
- 400
- 404
- 500
- 503
{- "data": {
- "current_epoch_active_gwei": "1",
- "previous_epoch_active_gwei": "1",
- "current_epoch_target_attesting_gwei": "1",
- "previous_epoch_target_attesting_gwei": "1",
- "previous_epoch_head_attesting_gwei": "1"
}
}
Get Validator Inclusion
Returns a per-validator summary of how that validator performed during the current epoch.
path Parameters
epoch required | string <uint64> Example: 1
|
validator_id required | string <uint64> Example: 1 unsigned 64 bit integer |
Responses
Response samples
- 200
- 400
- 404
- 500
- 503
{- "data": {
- "is_slashed": true,
- "is_withdrawable_in_current_epoch": true,
- "is_active_unslashed_in_current_epoch": true,
- "is_active_unslashed_in_previous_epoch": true,
- "current_epoch_effective_balance_gwei": "1",
- "is_current_epoch_target_attester": true,
- "is_previous_epoch_target_attester": true,
- "is_previous_epoch_head_attester": true
}
}