erigon icon indicating copy to clipboard operation
erigon copied to clipboard

Beacon Node API

Open Giulio2002 opened this issue 2 years ago • 2 comments

Beacon Node API Implementation Roadmap

This document outlines the tasks to implement the Beacon Node API endpoints.

Beacon

  • [x] GET /eth/v1/beacon/genesis - Retrieve details of the chain's genesis.
  • [x] GET /eth/v1/beacon/states/{state_id}/root - Get state SSZ HashTreeRoot.
  • [x] GET /eth/v1/beacon/states/{state_id}/fork - Get Fork object for requested state.
  • [x] GET /eth/v1/beacon/states/{state_id}/finality_checkpoints - Get state finality checkpoints.
  • [x] GET /eth/v1/beacon/states/{state_id}/validators - Get validators from state.
  • [x] GET /eth/v1/beacon/states/{state_id}/validators/{validator_id} - Get validator from state by id.
  • [x] GET /eth/v1/beacon/states/{state_id}/validator_balances - Get validator balances from state.
  • [x] GET /eth/v1/beacon/states/{state_id}/committees - Get all committees for a state.
  • [x] GET /eth/v1/beacon/states/{state_id}/sync_committees - Get sync committees for a state.
  • [x] GET /eth/v1/beacon/states/{state_id}/randao - Get the RANDAO mix for some epoch in a specified state.
  • [x] GET /eth/v1/beacon/headers - Get block headers.
  • [x] GET /eth/v1/beacon/headers/{block_id} - Get block header.
  • [ ] POST /eth/v1/beacon/bLinded_blocks - Publish a signed block.
  • [ ] POST /eth/v2/beacon/bLinded_blocks - Publish a signed block.
  • [x] POST /eth/v1/beacon/blocks - Publish a signed block.
  • [x] POST /eth/v2/beacon/blocks - Publish a signed block.
  • [x] GET /eth/v1/beacon/blocks/{block_id} - Get block.
  • [x] GET /eth/v2/beacon/blocks/{block_id} - Get block.
  • [x] GET /eth/v1/beacon/blocks/{block_id}/root - Get block root.
  • [x] GET /eth/v1/beacon/blocks/{block_id}/attestations - Get block attestations.
  • [x] GET /eth/v1/beacon/blob_sidecars/{block_id} - Get blob sidecars.
  • [x] POST /eth/v1/beacon/rewards/sync_committee/{block_id} - Get sync committee rewards.
  • [x] GET /eth/v1/beacon/deposit_snapshot - Get Deposit Tree Snapshot. (Deprecated after Electra)
  • [x] GET /eth/v1/beacon/rewards/blocks/{block_id} - Get block rewards.
  • [x] POST /eth/v1/beacon/rewards/attestations/{epoch} - Get attestations rewards.
  • [x] GET /eth/v1/beacon/bLinded_blocks/{block_id} - Get blinded block.
  • [x] GET /eth/v1/beacon/light_client/bootstrap/{block_root} - Get 'LightClientBootstrap' structure for a requested block root.
  • [x] GET /eth/v1/beacon/light_client/updates - Get 'LightClientUpdate' instances in a requested sync committee period range.
  • [x] GET /eth/v1/beacon/light_client/finality_update - Get the latest known 'LightClientFinalityUpdate'.
  • [x] GET /eth/v1/beacon/light_client/optimistic_update - Get the latest known 'LightClientOptimisticUpdate'.
  • [x] GET /eth/v1/beacon/pool/attestations - Get Attestations from operations pool.
  • [ ] POST /eth/v1/beacon/pool/attestations - Submit Attestation objects to node.
  • [x] GET /eth/v1/beacon/pool/attester_slashings - Get AttesterSlashings from operations pool.
  • [x] POST /eth/v1/beacon/pool/attester_slashings - Submit AttesterSlashing object to node's pool.
  • [x] GET /eth/v1/beacon/pool/proposer_slashings - Get ProposerSlashings from operations pool.
  • [x] POST /eth/v1/beacon/pool/proposer_slashings - Submit ProposerSlashing object to node's pool.
  • [x] POST /eth/v1/beacon/pool/sync_committees - Submit sync committee signatures to node
  • [x] GET /eth/v1/beacon/pool/sync_committees - Get sync committee signatures from operations pool.
  • [x] POST /eth/v1/beacon/pool/voluntary_exits - Submit SignedVoluntaryExit object to node's pool.
  • [x] GET /eth/v1/beacon/pool/voluntary_exits - Get SignedVoluntaryExit from operations pool.
  • [x] GET /eth/v1/beacon/pool/bls_to_execution_changes - Get SignedBLSToExecutionChange from operations pool.
  • [x] POST /eth/v1/beacon/pool/bls_to_execution_changes - Submit SignedBLSToExecutionChange object to node's pool.

Builder

  • [x] GET /eth/v1/builder/states/{state_id}/expected_withdrawals - Get the withdrawals that are to be included for the block built on the specified state.

Config

  • [x] GET /eth/v1/config/fork_schedule - Get scheduled upcoming forks.
  • [x] GET /eth/v1/config/spec - Get spec params.
  • [x] GET /eth/v1/config/deposit_contract - Get deposit contract address.

Debug

  • [x] GET /eth/v2/debug/beacon/states/{state_id} - Get full BeaconState object.
  • [x] GET /eth/v2/debug/beacon/heads - Get fork choice leaves.
  • [x] GET /eth/v1/debug/fork_choice - Get fork choice array.

Events

  • [x] GET /eth/v1/events - Subscribe to beacon node events.

Node

  • [x] GET /eth/v1/node/identity - Get node network identity.
  • [x] GET /eth/v1/node/peers - Get node network peers.
  • [x] GET /eth/v1/node/peers/{peer_id} - Get peer.
  • [x] GET /eth/v1/node/peer_count - Get peer count.
  • [x] GET /eth/v1/node/version - Get version string of the running beacon node.
  • [x] GET /eth/v1/node/syncing - Get node syncing status.
  • [x] GET /eth/v1/node/health - Get health check.

Validator

  • [x] POST /eth/v1/validator/duties/attester/{epoch} - Get attester duties.
  • [x] GET /eth/v1/validator/duties/proposer/{epoch} - Get block proposers duties.
  • [x] POST /eth/v1/validator/duties/sync/{epoch} - Get sync committee duties.
  • [x] GET /eth/v2/validator/blocks/{slot} - Produce a new block, without signature. (DEPRECATED!)
  • [x] GET /eth/v3/validator/blocks/{slot} - Produce a new block, without signature.
  • [x] GET /eth/v1/validator/blinded_blocks/{slot} - Produce a new blinded block, without signature. (DEPRECATED!)
  • [x] GET /eth/v1/validator/attestation_data - Produce an attestation data.
  • [ ] GET /eth/v1/validator/aggregate_attestation - Get aggregated attestation.
  • [x] POST /eth/v1/validator/aggregate_and_proofs - Publish multiple aggregate and proofs.
  • [ ] POST /eth/v1/validator/beacon_committee_subscriptions - Signal beacon node to prepare for a committee subnet.
  • [x] POST /eth/v1/validator/sync_committee_subscriptions - Subscribe to sync committee subnets.
  • [ ] POST /eth/v1/validator/beacon_committee_selections - Determine if a distributed validator has been selected to aggregate attestations.
  • [ ] GET /eth/v1/validator/sync_committee_contribution - Produce a sync committee contribution.
  • [ ] POST /eth/v1/validator/sync_committee_selections - Determine if a distributed validator has been selected to make a sync committee contribution.
  • [x] POST /eth/v1/validator/contribution_and_proofs - Publish multiple contribution and proofs.
  • [x] POST /eth/v1/validator/prepare_beacon_proposer - Provide beacon node with proposals for the given validators.
  • [ ] POST /eth/v1/validator/register_validator - Provide beacon node with registrations for the given validators to the external builder network.
  • [x] GET /eth/v1/validator/liveness/{epoch} - Indicates if a validator has been observed on the network.

Rewards

  • [x] POST /eth/v1/beacon/rewards/sync_committee/{block_id} - Get sync committee rewards.
  • [x] GET /eth/v1/beacon/rewards/blocks/{block_id} - Get block rewards.
  • [x] POST /eth/v1/beacon/rewards/attestations/{epoch} - Get attestations rewards.

Giulio2002 avatar Nov 19 '23 21:11 Giulio2002

/validator endpoints: https://github.com/ledgerwatch/erigon/pull/9080

Giulio2002 avatar Dec 25 '23 17:12 Giulio2002

Rewards enpoints: https://github.com/ledgerwatch/erigon/pull/9102

Giulio2002 avatar Dec 29 '23 18:12 Giulio2002

This has been completed

Giulio2002 avatar Dec 27 '24 12:12 Giulio2002