api

package
v1.19.8 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Dec 15, 2025 License: GPL-3.0 Imports: 32 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func APIConsensusClients added in v1.17.0

func APIConsensusClients(w http.ResponseWriter, r *http.Request)

APIConsensusClients returns consensus client node information as JSON @Summary Get consensus clients information @Description Returns a list of all connected consensus clients with their node information, including PeerDAS support. Sensitive information (PeerID, NodeID, ENR) is only included if ShowSensitivePeerInfos is enabled in the configuration. @Tags clients @Accept json @Produce json @Success 200 {object} APIConsensusClientsResponse @Failure 429 {object} map[string]string "Rate limit exceeded" @Failure 500 {object} map[string]string "Internal server error" @Router /v1/clients/consensus [get] @ID getConsensusClients

func APIConsolidationRequestsV1 added in v1.19.0

func APIConsolidationRequestsV1(w http.ResponseWriter, r *http.Request)

APIConsolidationRequests returns a list of consolidation requests with filters @Summary Get consolidation requests list @Description Returns a list of consolidation requests (EL triggered) with detailed information and filtering options @Tags consolidation_requests @Accept json @Produce json @Param limit query int false "Number of consolidation requests to return (max 100)" @Param offset query int false "Offset for pagination" @Param min_slot query int false "Minimum slot number" @Param max_slot query int false "Maximum slot number" @Param source_address query string false "Filter by source address" @Param min_src_index query int false "Minimum source validator index" @Param max_src_index query int false "Maximum source validator index" @Param src_validator_name query string false "Filter by source validator name" @Param min_tgt_index query int false "Minimum target validator index" @Param max_tgt_index query int false "Maximum target validator index" @Param tgt_validator_name query string false "Filter by target validator name" @Param with_orphaned query int false "Include orphaned requests (2=orphaned only, 1=include all, 0=exclude orphaned)" @Param public_key query string false "Filter by public key" @Success 200 {object} APIConsolidationRequestsResponse @Failure 400 {object} map[string]string "Invalid parameters" @Failure 500 {object} map[string]string "Internal server error" @Router /v1/consolidation_requests [get] @ID getConsolidationRequests

func APIDasGuardianMassScan added in v1.18.0

func APIDasGuardianMassScan(w http.ResponseWriter, r *http.Request)

APIDasGuardianMassScan performs a DAS Guardian scan on all available nodes @Summary Scan all nodes using DAS Guardian @Description Performs DAS Guardian scans on all available consensus client nodes in parallel @Tags das-guardian @Accept json @Produce json @Param request body APIDasGuardianMassScanRequest true "Mass scan parameters" @Success 200 {object} APIDasGuardianMassScanResponse @Failure 400 {object} map[string]string "Invalid request" @Failure 429 {object} map[string]string "Rate limit exceeded" @Failure 500 {object} map[string]string "Internal server error" @Router /v1/das-guardian/mass-scan [post] @ID massDasGuardianScan

func APIDasGuardianScan added in v1.18.0

func APIDasGuardianScan(w http.ResponseWriter, r *http.Request)

APIDasGuardianScan performs a DAS Guardian scan on a given ENR @Summary Scan a node using DAS Guardian @Description Performs a comprehensive scan of a beacon node using eth-das-guardian to check P2P connectivity, fork digest validity, head accuracy, and custody information @Tags das-guardian @Accept json @Produce json @Param request body APIDasGuardianScanRequest true "Node ENR to scan" @Success 200 {object} APIDasGuardianScanResponse @Failure 400 {object} map[string]string "Invalid request" @Failure 429 {object} map[string]string "Rate limit exceeded" @Failure 500 {object} map[string]string "Internal server error" @Router /v1/das-guardian/scan [post] @ID scanDasGuardian

func APIDepositsIncludedV1 added in v1.19.0

func APIDepositsIncludedV1(w http.ResponseWriter, r *http.Request)

APIDepositsIncludedV1 returns a list of deposits that have been included in blocks @Summary Get deposits included in blocks @Description Returns a list of deposits that have been successfully included in beacon chain blocks with comprehensive filtering @Tags deposits @Accept json @Produce json @Param limit query int false "Number of deposits to return (max 100)" @Param offset query int false "Offset for pagination" @Param min_index query int false "Minimum deposit index" @Param max_index query int false "Maximum deposit index" @Param public_key query string false "Filter by validator public key (with or without 0x prefix)" @Param validator_name query string false "Filter by validator name" @Param min_amount query int false "Minimum deposit amount in gwei" @Param max_amount query int false "Maximum deposit amount in gwei" @Param with_orphaned query int false "Include orphaned deposits (0=canonical only, 1=include all, 2=orphaned only)" @Param address query string false "Filter by depositor address" @Param with_valid query int false "Filter by signature validity (0=invalid only, 1=valid only, 2=all)" @Success 200 {object} APIDepositsIncludedResponse @Failure 400 {object} map[string]string "Invalid parameters" @Failure 500 {object} map[string]string "Internal server error" @Router /v1/deposits/included [get] @ID getDepositsIncluded

func APIDepositsQueueV1 added in v1.19.0

func APIDepositsQueueV1(w http.ResponseWriter, r *http.Request)

APIDepositsQueueV1 returns a list of queued deposits @Summary Get deposit queue @Description Returns a list of deposits in the queue waiting to be processed (Electra only) with comprehensive filtering @Tags deposits @Accept json @Produce json @Param limit query int false "Number of deposits to return (max 100)" @Param offset query int false "Offset for pagination" @Param min_index query int false "Minimum deposit index" @Param max_index query int false "Maximum deposit index" @Param public_key query string false "Filter by validator public key (with or without 0x prefix)" @Param min_amount query int false "Minimum deposit amount in gwei" @Param max_amount query int false "Maximum deposit amount in gwei" @Success 200 {object} APIDepositsQueueResponse @Failure 400 {object} map[string]string "Invalid parameters" @Failure 500 {object} map[string]string "Internal server error" @Router /v1/deposits/queue [get] @ID getDepositsQueue

func APIDepositsTransactionsV1 added in v1.19.0

func APIDepositsTransactionsV1(w http.ResponseWriter, r *http.Request)

APIDepositsTransactionsV1 returns a list of deposit transactions @Summary Get deposit transactions @Description Returns a list of deposit transactions that have been initiated on the execution layer with comprehensive filtering @Tags deposits @Accept json @Produce json @Param limit query int false "Number of deposits to return (max 100)" @Param offset query int false "Offset for pagination" @Param min_index query int false "Minimum deposit index" @Param max_index query int false "Maximum deposit index" @Param public_key query string false "Filter by validator public key (with or without 0x prefix)" @Param validator_name query string false "Filter by validator name" @Param min_amount query int false "Minimum deposit amount in gwei" @Param max_amount query int false "Maximum deposit amount in gwei" @Param with_orphaned query int false "Include orphaned deposits (0=canonical only, 1=include all, 2=orphaned only)" @Param address query string false "Filter by transaction sender address" @Param target_address query string false "Filter by transaction target address" @Param with_valid query int false "Filter by signature validity (0=invalid only, 1=valid only, 2=all)" @Success 200 {object} APIDepositsTransactionsResponse @Failure 400 {object} map[string]string "Invalid parameters" @Failure 500 {object} map[string]string "Internal server error" @Router /v1/deposits/transactions [get] @ID getDepositsTransactions

func APIEpochsV1 added in v1.19.0

func APIEpochsV1(w http.ResponseWriter, r *http.Request)

APIEpochs returns a list of epochs with filters @Summary Get epochs list @Description Returns a list of epochs with detailed information and statistics @Tags epochs @Accept json @Produce json @Param epoch query int false "First epoch to display" @Param limit query int false "Number of epochs to return (max 100)" @Success 200 {object} APIEpochsResponse @Failure 400 {object} map[string]string "Invalid parameters" @Failure 500 {object} map[string]string "Internal server error" @Router /v1/epochs [get] @ID getEpochs

func APIExecutionClients added in v1.17.0

func APIExecutionClients(w http.ResponseWriter, r *http.Request)

APIExecutionClients returns execution client node information as JSON @Summary Get execution clients information @Description Returns a list of all connected execution clients with their node information. Sensitive information (IP addresses, ports, enode) is only included if ShowSensitivePeerInfos is enabled in the configuration. @Tags clients @Accept json @Produce json @Success 200 {object} APIExecutionClientsResponse @Failure 429 {object} map[string]string "Rate limit exceeded" @Failure 500 {object} map[string]string "Internal server error" @Router /v1/clients/execution [get] @ID getExecutionClients

func APIMevBlocksV1 added in v1.19.0

func APIMevBlocksV1(w http.ResponseWriter, r *http.Request)

APIMevBlocksV1 returns a list of MEV blocks with filters @Summary Get MEV blocks @Description Returns a list of MEV blocks with relay information and comprehensive filtering @Tags mev_blocks @Accept json @Produce json @Param limit query int false "Number of MEV blocks to return (max 100)" @Param offset query int false "Offset for pagination" @Param min_slot query int false "Minimum slot number" @Param max_slot query int false "Maximum slot number" @Param min_index query int false "Minimum proposer validator index" @Param max_index query int false "Maximum proposer validator index" @Param validator_name query string false "Filter by proposer validator name" @Param relays query string false "Filter by MEV relays (comma-separated relay IDs)" @Param proposed query string false "Filter by proposed status (comma-separated: 0=not proposed, 1=proposed, 2=orphaned)" @Success 200 {object} APIMevBlocksResponse @Failure 400 {object} map[string]string "Invalid parameters" @Failure 500 {object} map[string]string "Internal server error" @Router /v1/mev_blocks [get] @ID getMevBlocks

func APINetworkForksV1 added in v1.19.0

func APINetworkForksV1(w http.ResponseWriter, r *http.Request)

APINetworkForksV1 returns information about network forks including BPO forks and fork digests @Summary Get network forks @Description Returns comprehensive information about past, current, and future network forks including consensus forks and BPO (Block Parameter Override) forks with fork digests @Tags network @Accept json @Produce json @Success 200 {object} APINetworkForksResponse @Failure 500 {object} map[string]string "Internal server error" @Router /v1/network/forks [get] @ID getNetworkForks

func APINetworkOverviewV1 added in v1.19.0

func APINetworkOverviewV1(w http.ResponseWriter, r *http.Request)

APINetworkOverviewV1 returns comprehensive network state overview @Summary Get network overview @Description Returns comprehensive network state information including network info, current state, checkpoints, validator stats, queue stats, and fork information @Tags network @Accept json @Produce json @Success 200 {object} APINetworkOverviewResponse @Failure 500 {object} map[string]string "Internal server error" @Router /v1/network/overview [get] @ID getNetworkOverview

func APINetworkSplitsV1 added in v1.19.0

func APINetworkSplitsV1(w http.ResponseWriter, r *http.Request)

APINetworkSplitsV1 returns information about active network splits/forks @Summary Get network splits @Description Returns information about active network forks/splits, their participation rates, and head blocks @Tags network @Accept json @Produce json @Param with_stale query bool false "Include stale forks with no voting weight (default: false)" @Success 200 {object} APINetworkSplitsResponse @Failure 500 {object} map[string]string "Internal server error" @Router /v1/network/splits [get] @ID getNetworkSplits

func APISlashingsV1 added in v1.19.0

func APISlashingsV1(w http.ResponseWriter, r *http.Request)

APISlashings returns a list of slashings with filters @Summary Get slashings list @Description Returns a list of slashings with detailed information and filtering options @Tags slashings @Accept json @Produce json @Param limit query int false "Number of slashings to return (max 100)" @Param page query int false "Page number (starts at 1)" @Param min_slot query int false "Minimum slot number" @Param max_slot query int false "Maximum slot number" @Param min_index query int false "Minimum validator index" @Param max_index query int false "Maximum validator index" @Param validator_name query string false "Filter by validator name" @Param slasher_name query string false "Filter by slasher name" @Param reason query int false "Filter by slashing reason" @Param with_orphaned query int false "Include orphaned slashings (0=exclude, 1=include, 2=only orphaned)" @Success 200 {object} APISlashingsResponse @Failure 400 {object} map[string]string "Invalid parameters" @Failure 500 {object} map[string]string "Internal server error" @Router /v1/slashings [get] @ID getSlashings

func APISlotV1 added in v1.18.0

func APISlotV1(w http.ResponseWriter, r *http.Request)

APISlotV1 returns information about a specific slot by slot number or block root @Summary Get slot information @Description Returns detailed information about a specific slot from the database. Accepts either slot number or block root (0x-prefixed hex) @Tags Slot @Produce json @Param slotOrHash path string true "Slot number or block root (0x-prefixed hex)" @Success 200 {object} APISlotResponse @Failure 400 {object} map[string]string "Invalid slot number or root format" @Failure 404 {object} map[string]string "Slot not found" @Failure 500 {object} map[string]string "Internal server error" @Router /v1/slot/{slotOrHash} [get] @ID getSlot

func APISlotsV1 added in v1.19.0

func APISlotsV1(w http.ResponseWriter, r *http.Request)

APISlotsV1 returns a list of slots with filters @Summary Get filtered slots list @Description Returns a list of slots with various filtering options, sorted by slot number descending @Tags Slot @Produce json @Param graffiti query string false "Filter by graffiti" @Param graffiti_invert query bool false "Invert graffiti filter" @Param extra_data query string false "Filter by extra data" @Param extra_data_invert query bool false "Invert extra data filter" @Param proposer query string false "Filter by proposer index" @Param proposer_name query string false "Filter by proposer name" @Param proposer_invert query bool false "Invert proposer filter" @Param with_orphaned query int false "Include orphaned blocks (0=exclude, 1=include, 2=only orphaned)" @Param with_missing query int false "Include missing blocks (0=exclude, 1=include, 2=only missing)" @Param min_sync query float32 false "Minimum sync aggregate participation (0-100)" @Param max_sync query float32 false "Maximum sync aggregate participation (0-100)" @Param min_exec_time query int false "Minimum execution time in ms" @Param max_exec_time query int false "Maximum execution time in ms" @Param min_tx_count query int false "Minimum transaction count" @Param max_tx_count query int false "Maximum transaction count" @Param min_blob_count query int false "Minimum blob count" @Param max_blob_count query int false "Maximum blob count" @Param fork_ids query string false "Comma-separated list of fork IDs" @Param start_slot query int false "Start slot for pagination (inclusive)" @Param limit query int false "Number of results to return (max 100, default 100)" @Success 200 {object} APISlotsResponse @Failure 400 {object} map[string]string "Invalid parameters" @Failure 500 {object} map[string]string "Internal server error" @Router /v1/slots [get] @ID getSlots

func APIValidatorNamesV1 added in v1.19.0

func APIValidatorNamesV1(w http.ResponseWriter, r *http.Request)

APIValidatorNamesV1 returns validator names for given indices or public keys Supports both GET (with query params) and POST (with JSON body) requests @Summary Get validator names @Description Returns validator names for given validator indices or public keys. Supports GET with query params or POST with JSON body for large lists. @Tags validator_names @Accept json @Produce json @Param indices query string false "Comma-separated list of validator indices (GET only)" @Param pubkeys query string false "Comma-separated list of validator public keys (GET only, with or without 0x prefix)" @Param body body APIValidatorNamesRequest false "Request body for POST requests with indices and/or pubkeys arrays" @Success 200 {object} APIValidatorNamesResponse @Failure 400 {object} map[string]string "Invalid parameters" @Failure 500 {object} map[string]string "Internal server error" @Router /v1/validator_names [get] @Router /v1/validator_names [post] @ID getValidatorNames

func APIValidatorsActivityV1 added in v1.19.0

func APIValidatorsActivityV1(w http.ResponseWriter, r *http.Request)

APIValidatorsActivityV1 returns aggregated validator activity stats @Summary Get validators activity statistics @Description Returns aggregated validator activity statistics with grouping and filtering options @Tags validators @Accept json @Produce json @Param limit query int false "Number of groups to return (max 1000, default 50)" @Param page query int false "Page number (starts at 1)" @Param group query int false "Grouping option: 1=by 100k indexes, 2=by 10k indexes, 3=by validator names (default: 3 if names available, else 1)" @Param search query string false "Search term for group names (supports regex)" @Param order query string false "Sort order: group, group-d, count, count-d, active, active-d, online, online-d, offline, offline-d, exited, exited-d, slashed, slashed-d (default: group)" @Success 200 {object} APIValidatorsActivityResponse @Failure 400 {object} map[string]string "Invalid parameters" @Failure 500 {object} map[string]string "Internal server error" @Router /v1/validators/activity [get] @ID getValidatorsActivity

func APIValidatorsV1 added in v1.19.0

func APIValidatorsV1(w http.ResponseWriter, r *http.Request)

APIValidators returns a list of validators with filters @Summary Get validators list @Description Returns a list of validators with detailed information and filtering options @Tags validators @Accept json @Produce json @Param limit query int false "Number of validators to return (max 1000)" @Param page query int false "Page number (starts at 1)" @Param pubkey query string false "Filter by public key" @Param index query string false "Filter by validator index" @Param name query string false "Filter by validator name" @Param status query string false "Filter by validator status (comma-separated)" @Param order query string false "Sort order: index, index-d, pubkey, pubkey-d, balance, balance-d, activation, activation-d, exit, exit-d" @Success 200 {object} APIValidatorsResponse @Failure 400 {object} map[string]string "Invalid parameters" @Failure 500 {object} map[string]string "Internal server error" @Router /v1/validators [get] @ID getValidators

func APIVoluntaryExitsV1 added in v1.19.0

func APIVoluntaryExitsV1(w http.ResponseWriter, r *http.Request)

APIVoluntaryExits returns a list of voluntary exits with filters @Summary Get voluntary exits list @Description Returns a list of voluntary exits with detailed information and filtering options @Tags voluntary_exits @Accept json @Produce json @Param limit query int false "Number of voluntary exits to return (max 100)" @Param page query int false "Page number (starts at 1)" @Param min_slot query int false "Minimum slot number" @Param max_slot query int false "Maximum slot number" @Param min_index query int false "Minimum validator index" @Param max_index query int false "Maximum validator index" @Param validator_name query string false "Filter by validator name" @Param with_orphaned query int false "Include orphaned exits (1=include, 0=exclude)" @Success 200 {object} APIVoluntaryExitsResponse @Failure 400 {object} map[string]string "Invalid parameters" @Failure 500 {object} map[string]string "Internal server error" @Router /v1/voluntary_exits [get] @ID getVoluntaryExits

func APIWithdrawalRequestsV1 added in v1.19.0

func APIWithdrawalRequestsV1(w http.ResponseWriter, r *http.Request)

APIWithdrawalRequests returns a list of withdrawal requests with filters @Summary Get withdrawal requests list @Description Returns a list of withdrawal requests (EL triggered) with detailed information and filtering options @Tags withdrawal_requests @Accept json @Produce json @Param limit query int false "Number of withdrawal requests to return (max 100)" @Param offset query int false "Offset for pagination" @Param min_slot query int false "Minimum slot number" @Param max_slot query int false "Maximum slot number" @Param source_address query string false "Filter by source address" @Param min_index query int false "Minimum validator index" @Param max_index query int false "Maximum validator index" @Param validator_name query string false "Filter by validator name" @Param with_orphaned query int false "Include orphaned requests (1=include, 0=exclude)" @Param type query int false "Filter by type (1=withdrawals, 2=exits)" @Param public_key query string false "Filter by public key" @Success 200 {object} APIWithdrawalRequestsResponse @Failure 400 {object} map[string]string "Invalid parameters" @Failure 500 {object} map[string]string "Internal server error" @Router /v1/withdrawal_requests [get] @ID getWithdrawalRequests

func ApiEpochV1

func ApiEpochV1(w http.ResponseWriter, r *http.Request)

ApiEpoch godoc @Summary Get epoch by number, latest, finalized @Tags Epoch @Description Returns information for a specified epoch by the epoch number or an epoch tag (can be latest or finalized) @Produce json @Param epoch path string true "Epoch number, the string latest or the string finalized" @Success 200 {object} ApiResponse{data=APIEpochResponseV1} "Success" @Failure 400 {object} ApiResponse "Failure" @Failure 500 {object} ApiResponse "Server Error" @Router /v1/epoch/{epoch} [get] @ID getEpoch

func ApiValidatorByEth1AddressV1

func ApiValidatorByEth1AddressV1(w http.ResponseWriter, r *http.Request)

ApiValidatorByEth1Address godoc @Summary Get all validators that belong to an eth1 address @Tags Validator @Produce json @Param eth1address path string true "Eth1 address from which the validator deposits were sent". @Param limit query string false "Limit the number of results (default: 2000)" @Param offset query string false "Offset the results (default: 0)" @Success 200 {object} ApiResponse{data=[]ApiValidatorEth1ResponseV1} @Failure 400 {object} ApiResponse @Router /v1/validator/eth1/{eth1address} [get] @ID getValidatorByEth1Address

func ApiValidatorDepositsV1 added in v1.16.0

func ApiValidatorDepositsV1(w http.ResponseWriter, r *http.Request)

ApiValidatorDepositsV1 godoc @Summary Get validator execution layer deposits @Description Get all eth1 deposits for up to 100 validators @Tags Validators @Produce json @Param indexOrPubkey path string true "Up to 100 validator indicesOrPubkeys, comma separated" @Success 200 {object} api.ApiResponse{data=[]api.ApiValidatorDepositsResponseV1} @Failure 400 {object} api.ApiResponse @Router /v1/validator/{indexOrPubkey}/deposits [get] @ID getValidatorDeposits

func ApiValidatorGetV1

func ApiValidatorGetV1(w http.ResponseWriter, r *http.Request)

ApiValidator godoc @Summary Get up to 100 validators @Tags Validator @Description Searching for too many validators based on their pubkeys will lead to a "URI too long" error @Produce json @Param indexOrPubkey path string true "Up to 100 validator indicesOrPubkeys, comma separated" @Success 200 {object} ApiResponse{data=[]ApiValidatorResponseV1} @Failure 400 {object} ApiResponse @Router /v1/validator/{indexOrPubkey} [get] @ID getValidator

func ApiValidatorPostV1

func ApiValidatorPostV1(w http.ResponseWriter, r *http.Request)

ApiValidator godoc @Summary Get up to 100 validators @Tags Validator @Description This POST endpoint exists because the GET endpoint can lead to a "URI too long" error when searching for too many validators based on their pubkeys. @Produce json @Param indexOrPubkey body ApiValidatorRequestV1 true "Up to 100 validator indicesOrPubkeys, comma separated" @Success 200 {object} ApiResponse{data=[]ApiValidatorResponseV1} @Failure 400 {object} ApiResponse @Router /v1/validator [post] @ID getValidatorPost

func ApiWithdrawalCredentialsValidatorsV1

func ApiWithdrawalCredentialsValidatorsV1(w http.ResponseWriter, r *http.Request)

ApiWithdrawalCredentialsValidators godoc @Summary Get all validators that have a specific withdrawal credentials @Tags Validator @Produce json @Param withdrawalCredentialsOrEth1address path string true "Provide a withdrawal credential or an eth1 address with an optional 0x prefix". It can also be a valid ENS name. @Param limit query int false "Limit the number of results, maximum: 200" default(10) @Param offset query int false "Offset the number of results" default(0) @Success 200 {object} ApiResponse{data=[]ApiWithdrawalCredentialsResponseV1} @Failure 400 {object} ApiResponse @Router /v1/validator/withdrawalCredentials/{withdrawalCredentialsOrEth1address} [get] @ID getWithdrawalCredentialsValidators

func SendOKResponse

func SendOKResponse(j *json.Encoder, route string, data []interface{})

Types

type APICheckpoints added in v1.19.0

type APICheckpoints struct {
	FinalizedEpoch int64  `json:"finalized_epoch"`
	FinalizedRoot  string `json:"finalized_root,omitempty"`
	JustifiedEpoch int64  `json:"justified_epoch"`
	JustifiedRoot  string `json:"justified_root,omitempty"`
}

APICheckpoints contains finalization and justification information

type APIConsensusClientMetadata added in v1.18.0

type APIConsensusClientMetadata struct {
	Attnets           string `json:"attnets,omitempty"`
	Syncnets          string `json:"syncnets,omitempty"`
	SeqNumber         string `json:"seq_number,omitempty"`
	CustodyGroupCount string `json:"custody_group_count,omitempty"` // MetadataV3 field for Fulu
}

APIConsensusClientMetadata represents the metadata from the node identity

type APIConsensusClientNodeInfo added in v1.17.0

type APIConsensusClientNodeInfo struct {
	ClientName    string                      `json:"client_name"`
	ClientType    string                      `json:"client_type"`
	Version       string                      `json:"version"`
	PeerID        string                      `json:"peer_id"`
	NodeID        string                      `json:"node_id"`
	ENR           string                      `json:"enr"`
	ENRDecoded    map[string]interface{}      `json:"enr_decoded,omitempty"`
	HeadSlot      uint64                      `json:"head_slot"`
	HeadRoot      string                      `json:"head_root"`
	Status        string                      `json:"status"`
	PeerCount     uint32                      `json:"peer_count"`
	PeersInbound  uint32                      `json:"peers_inbound"`
	PeersOutbound uint32                      `json:"peers_outbound"`
	LastRefresh   time.Time                   `json:"last_refresh"`
	LastError     string                      `json:"last_error,omitempty"`
	DataColumns   []uint64                    `json:"data_columns"`
	Metadata      *APIConsensusClientMetadata `json:"metadata,omitempty"`
}

APIConsensusClientNodeInfo represents the response structure for consensus client node info

type APIConsensusClientsResponse added in v1.17.0

type APIConsensusClientsResponse struct {
	Clients []APIConsensusClientNodeInfo `json:"clients"`
	Count   int                          `json:"count"`
}

APIConsensusClientsResponse represents the full API response

type APIConsolidationRequestInfo added in v1.19.0

type APIConsolidationRequestInfo struct {
	SourceAddress        string                            `json:"source_address"`
	SourcePublicKey      string                            `json:"source_public_key"`
	SourceValidatorIndex uint64                            `json:"source_validator_index,omitempty"`
	SourceValidatorName  string                            `json:"source_validator_name,omitempty"`
	SourceValidatorValid bool                              `json:"source_validator_valid"`
	TargetPublicKey      string                            `json:"target_public_key"`
	TargetValidatorIndex uint64                            `json:"target_validator_index,omitempty"`
	TargetValidatorName  string                            `json:"target_validator_name,omitempty"`
	TargetValidatorValid bool                              `json:"target_validator_valid"`
	IsIncluded           bool                              `json:"is_included"`
	SlotNumber           uint64                            `json:"slot_number,omitempty"`
	SlotRoot             string                            `json:"slot_root,omitempty"`
	Time                 int64                             `json:"time,omitempty"`
	Status               uint64                            `json:"status"` // 0=pending, 1=included, 2=orphaned
	Result               uint8                             `json:"result,omitempty"`
	ResultMessage        string                            `json:"result_message,omitempty"`
	TxStatus             uint64                            `json:"tx_status"` // 0=pending, 1=confirmed, 2=orphaned
	TransactionHash      string                            `json:"transaction_hash,omitempty"`
	TransactionDetails   *APIConsolidationRequestTxDetails `json:"transaction_details,omitempty"`
}

APIConsolidationRequestInfo represents information about a single consolidation request

type APIConsolidationRequestTxDetails added in v1.19.0

type APIConsolidationRequestTxDetails struct {
	BlockNumber uint64 `json:"block_number"`
	BlockHash   string `json:"block_hash"`
	BlockTime   int64  `json:"block_time"`
	TxOrigin    string `json:"tx_origin"`
	TxTarget    string `json:"tx_target"`
	TxHash      string `json:"tx_hash"`
}

APIConsolidationRequestTxDetails represents transaction details for a consolidation request

type APIConsolidationRequestsData added in v1.19.0

type APIConsolidationRequestsData struct {
	ConsolidationRequests []*APIConsolidationRequestInfo `json:"consolidation_requests"`
	Count                 uint64                         `json:"count"`
	TotalRequests         uint64                         `json:"total_requests"`
	TotalPending          uint64                         `json:"total_pending"`
}

APIConsolidationRequestsData contains the consolidation requests data

type APIConsolidationRequestsResponse added in v1.19.0

type APIConsolidationRequestsResponse struct {
	Status string                        `json:"status"`
	Data   *APIConsolidationRequestsData `json:"data"`
}

APIConsolidationRequestsResponse represents the response structure for consolidation requests list

type APICurrentState added in v1.19.0

type APICurrentState struct {
	CurrentSlot          uint64  `json:"current_slot"`
	CurrentEpoch         uint64  `json:"current_epoch"`
	CurrentEpochProgress float64 `json:"current_epoch_progress"`
	SlotsPerEpoch        uint64  `json:"slots_per_epoch"`
	SecondsPerSlot       uint64  `json:"seconds_per_slot"`
	SecondsPerEpoch      uint64  `json:"seconds_per_epoch"`
}

APICurrentState contains current network state

type APIDasGuardianEvalResult added in v1.18.0

type APIDasGuardianEvalResult struct {
	NodeID           string     `json:"node_id"`
	Slots            []uint64   `json:"slots"`
	ColumnIdx        []uint64   `json:"column_idx"`
	DownloadedResult [][]string `json:"downloaded_result"`
	ValidKzg         [][]string `json:"valid_kzg"`
	ValidColumn      [][]bool   `json:"valid_column"`
	ValidSlot        []bool     `json:"valid_slot"`
	Error            string     `json:"error,omitempty"`
}

APIDasGuardianEvalResult represents the DAS evaluation results

type APIDasGuardianMassScanRequest added in v1.18.0

type APIDasGuardianMassScanRequest struct {
	Slots       []uint64 `json:"slots,omitempty"`        // Optional slot numbers to scan
	RandomMode  string   `json:"random_mode,omitempty"`  // Random slot selection mode: "non_missed", "with_blobs", "available"
	RandomCount int32    `json:"random_count,omitempty"` // Number of random slots to select (default: 4)
}

APIDasGuardianMassScanRequest represents the request body for mass DAS Guardian scan

type APIDasGuardianMassScanResponse added in v1.18.0

type APIDasGuardianMassScanResponse struct {
	Success bool                          `json:"success"`
	Error   string                        `json:"error,omitempty"`
	Slots   []uint64                      `json:"slots,omitempty"`   // The slots that were scanned
	Results map[string]*APIMassNodeResult `json:"results,omitempty"` // ENR -> node result
}

APIDasGuardianMassScanResponse represents the response from mass DAS Guardian scan

type APIDasGuardianMetadata added in v1.18.0

type APIDasGuardianMetadata struct {
	SeqNumber         uint64 `json:"seq_number"`
	Attnets           string `json:"attnets"`
	Syncnets          string `json:"syncnets"`
	CustodyGroupCount uint64 `json:"custody_group_count"`
}

APIDasGuardianMetadata represents the beacon node metadata

type APIDasGuardianScanRequest added in v1.18.0

type APIDasGuardianScanRequest struct {
	ENR         string   `json:"enr"`
	Slots       []uint64 `json:"slots,omitempty"`        // Optional slot numbers to scan
	RandomMode  string   `json:"random_mode,omitempty"`  // Random slot selection mode: "non_missed", "with_blobs", "available"
	RandomCount int32    `json:"random_count,omitempty"` // Number of random slots to select (default: 4)
}

APIDasGuardianScanRequest represents the request body for DAS Guardian scan

type APIDasGuardianScanResponse added in v1.18.0

type APIDasGuardianScanResponse struct {
	Success bool                      `json:"success"`
	Error   string                    `json:"error,omitempty"`
	Result  *APIDasGuardianScanResult `json:"result,omitempty"`
}

APIDasGuardianScanResponse represents the response from DAS Guardian scan

type APIDasGuardianScanResult added in v1.18.0

type APIDasGuardianScanResult struct {
	// P2P Information
	Libp2pInfo map[string]interface{} `json:"libp2p_info"`

	// Status Information (from RemoteStatus)
	RemoteStatus *APIDasGuardianStatus `json:"remote_status,omitempty"`

	// Metadata (from RemoteMetadata)
	RemoteMetadata *APIDasGuardianMetadata `json:"remote_metadata,omitempty"`

	// DAS Evaluation Result
	EvalResult *APIDasGuardianEvalResult `json:"eval_result,omitempty"`
}

APIDasGuardianScanResult represents the scan result details

type APIDasGuardianStatus added in v1.18.0

type APIDasGuardianStatus struct {
	ForkDigest     string `json:"fork_digest"`
	FinalizedRoot  string `json:"finalized_root"`
	FinalizedEpoch uint64 `json:"finalized_epoch"`
	HeadRoot       string `json:"head_root"`
	HeadSlot       uint64 `json:"head_slot"`
	EarliestSlot   uint64 `json:"earliest_slot"`
}

APIDasGuardianStatus represents the beacon node status

type APIDepositIncludedInfo added in v1.19.0

type APIDepositIncludedInfo struct {
	Index                 uint64 `json:"index,omitempty"`
	SlotNumber            uint64 `json:"slot_number,omitempty"`
	SlotRoot              string `json:"slot_root,omitempty"`
	Time                  int64  `json:"time"`
	BlockNumber           uint64 `json:"block_number,omitempty"`
	PublicKey             string `json:"public_key"`
	ValidatorIndex        int64  `json:"validator_index"`
	ValidatorName         string `json:"validator_name,omitempty"`
	Amount                uint64 `json:"amount"`
	WithdrawalCredentials string `json:"withdrawal_credentials"`
	TxHash                string `json:"tx_hash,omitempty"`
	TxOrigin              string `json:"tx_origin,omitempty"`
	TxTarget              string `json:"tx_target,omitempty"`
	Orphaned              bool   `json:"orphaned"`
	Valid                 bool   `json:"valid,omitempty"`
}

APIDepositIncludedInfo represents information about a single deposit included in blocks

type APIDepositQueueInfo added in v1.19.0

type APIDepositQueueInfo struct {
	Index                 uint64 `json:"index,omitempty"`
	QueuePosition         uint64 `json:"queue_position"`
	EstimatedTime         int64  `json:"estimated_time"`
	PublicKey             string `json:"public_key"`
	ValidatorIndex        int64  `json:"validator_index"`
	ValidatorName         string `json:"validator_name,omitempty"`
	ValidatorStatus       string `json:"validator_status"`
	Amount                uint64 `json:"amount"`
	WithdrawalCredentials string `json:"withdrawal_credentials"`
	TxHash                string `json:"tx_hash,omitempty"`
	TxOrigin              string `json:"tx_origin,omitempty"`
	TxTarget              string `json:"tx_target,omitempty"`
	BlockNumber           uint64 `json:"block_number,omitempty"`
	BlockHash             string `json:"block_hash,omitempty"`
	Time                  int64  `json:"time,omitempty"`
	ValidatorLiveness     uint8  `json:"validator_liveness,omitempty"`
	ValidatorLivenessMax  uint8  `json:"validator_liveness_max,omitempty"`
}

APIDepositQueueInfo represents information about a single queued deposit

type APIDepositTransactionInfo added in v1.19.0

type APIDepositTransactionInfo struct {
	Index                 uint64 `json:"index"`
	BlockNumber           uint64 `json:"block_number"`
	BlockHash             string `json:"block_hash,omitempty"`
	Time                  int64  `json:"time"`
	PublicKey             string `json:"public_key"`
	ValidatorIndex        int64  `json:"validator_index"`
	ValidatorName         string `json:"validator_name,omitempty"`
	ValidatorStatus       string `json:"validator_status"`
	Amount                uint64 `json:"amount"`
	WithdrawalCredentials string `json:"withdrawal_credentials"`
	TxHash                string `json:"tx_hash"`
	TxOrigin              string `json:"tx_origin"`
	TxTarget              string `json:"tx_target"`
	Orphaned              bool   `json:"orphaned"`
	Valid                 bool   `json:"valid"`
	ValidatorLiveness     uint8  `json:"validator_liveness,omitempty"`
	ValidatorLivenessMax  uint8  `json:"validator_liveness_max,omitempty"`
}

APIDepositTransactionInfo represents information about a single deposit transaction

type APIDepositsIncludedData added in v1.19.0

type APIDepositsIncludedData struct {
	Deposits     []*APIDepositIncludedInfo `json:"deposits"`
	Count        uint64                    `json:"count"`
	TotalCount   uint64                    `json:"total_count"`
	CurrentEpoch uint64                    `json:"current_epoch"`
}

APIDepositsIncludedData contains the deposits included data

type APIDepositsIncludedResponse added in v1.19.0

type APIDepositsIncludedResponse struct {
	Status string                   `json:"status"`
	Data   *APIDepositsIncludedData `json:"data"`
}

APIDepositsIncludedResponse represents the response structure for deposits included in blocks

type APIDepositsQueueData added in v1.19.0

type APIDepositsQueueData struct {
	Deposits             []*APIDepositQueueInfo `json:"deposits"`
	Count                uint64                 `json:"count"`
	TotalCount           uint64                 `json:"total_count"`
	CurrentEpoch         uint64                 `json:"current_epoch"`
	IsElectra            bool                   `json:"is_electra"`
	TotalNewValidators   uint64                 `json:"total_new_validators,omitempty"`
	TotalAmount          uint64                 `json:"total_amount,omitempty"`
	EstimatedProcessTime *int64                 `json:"estimated_process_time,omitempty"`
}

APIDepositsQueueData contains the deposit queue data

type APIDepositsQueueResponse added in v1.19.0

type APIDepositsQueueResponse struct {
	Status string                `json:"status"`
	Data   *APIDepositsQueueData `json:"data"`
}

APIDepositsQueueResponse represents the response structure for deposit queue

type APIDepositsTransactionsData added in v1.19.0

type APIDepositsTransactionsData struct {
	Deposits     []*APIDepositTransactionInfo `json:"deposits"`
	Count        uint64                       `json:"count"`
	TotalCount   uint64                       `json:"total_count"`
	CurrentEpoch uint64                       `json:"current_epoch"`
}

APIDepositsTransactionsData contains the deposit transactions data

type APIDepositsTransactionsResponse added in v1.19.0

type APIDepositsTransactionsResponse struct {
	Status string                       `json:"status"`
	Data   *APIDepositsTransactionsData `json:"data"`
}

APIDepositsTransactionsResponse represents the response structure for deposit transactions

type APIEpochInfo added in v1.19.0

type APIEpochInfo struct {
	Epoch                 uint64  `json:"epoch"`
	Finalized             bool    `json:"finalized"`
	VotingFinalized       bool    `json:"voting_finalized"`
	VotingJustified       bool    `json:"voting_justified"`
	Validators            uint64  `json:"validators"`
	ValidatorBalance      uint64  `json:"validator_balance"`
	EligibleEther         uint64  `json:"eligible_ether"`
	TargetVoted           uint64  `json:"target_voted"`
	HeadVoted             uint64  `json:"head_voted"`
	TotalVoted            uint64  `json:"total_voted"`
	VoteParticipation     float64 `json:"vote_participation"`
	Attestations          uint64  `json:"attestations"`
	Deposits              uint64  `json:"deposits"`
	DepositsAmount        uint64  `json:"deposits_amount"`
	ProposerSlashings     uint64  `json:"proposer_slashings"`
	AttesterSlashings     uint64  `json:"attester_slashings"`
	Exits                 uint64  `json:"exits"`
	WithdrawalsCount      uint64  `json:"withdrawals_count"`
	WithdrawalsAmount     uint64  `json:"withdrawals_amount"`
	BLSChanges            uint64  `json:"bls_changes"`
	SyncParticipation     float64 `json:"sync_participation"`
	ProposedBlocks        uint64  `json:"proposed_blocks"`
	MissedBlocks          uint64  `json:"missed_blocks"`
	OrphanedBlocks        uint64  `json:"orphaned_blocks"`
	MinSyncCommitteeSize  uint64  `json:"min_sync_committee_size,omitempty"`
	MaxSyncCommitteeSize  uint64  `json:"max_sync_committee_size,omitempty"`
	WithdrawalRequests    uint64  `json:"withdrawal_requests,omitempty"`
	ConsolidationRequests uint64  `json:"consolidation_requests,omitempty"`
}

APIEpochInfo represents information about a single epoch

type APIEpochResponseV1

type APIEpochResponseV1 struct {
	Epoch                   uint64 `json:"epoch"`
	Ts                      uint64 `json:"ts"`
	AttestationsCount       uint64 `json:"attestationscount"`
	AttesterSlashingsCount  uint64 `json:"attesterslashingscount"`
	AverageValidatorBalance uint64 `json:"averagevalidatorbalance"`
	BlocksCount             uint64 `json:"blockscount"`
	DepositsCount           uint64 `json:"depositscount"`
	EligibleEther           uint64 `json:"eligibleether"`
	Finalized               bool   `json:"finalized"`
	GlobalParticipationRate uint64 `json:"globalparticipationrate"`
	MissedBlocks            uint64 `json:"missedblocks"`
	OrphanedBlocks          uint64 `json:"orphanedblocks"`
	ProposedBlocks          uint64 `json:"proposedblocks"`
	ProposerSlashingsCount  uint64 `json:"proposerslashingscount"`
	ScheduledBlocks         uint64 `json:"scheduledblocks"`
	TotalValidatorBalance   uint64 `json:"totalvalidatorbalance"`
	ValidatorsCount         uint64 `json:"validatorscount"`
	VoluntaryExitsCount     uint64 `json:"voluntaryexitscount"`
	VotedEther              uint64 `json:"votedether"`
	RewardsExported         uint64 `json:"rewards_exported"`
	WithdrawalCount         uint64 `json:"withdrawalcount"`
}

type APIEpochsData added in v1.19.0

type APIEpochsData struct {
	Epochs         []*APIEpochInfo `json:"epochs"`
	EpochCount     uint64          `json:"epoch_count"`
	FirstEpoch     uint64          `json:"first_epoch"`
	LastEpoch      uint64          `json:"last_epoch"`
	TotalEpochs    uint64          `json:"total_epochs"`
	CurrentEpoch   uint64          `json:"current_epoch"`
	FinalizedEpoch uint64          `json:"finalized_epoch"`
}

APIEpochsData contains the epochs data

type APIEpochsResponse added in v1.19.0

type APIEpochsResponse struct {
	Status string         `json:"status"`
	Data   *APIEpochsData `json:"data"`
}

APIEpochsResponse represents the response structure for epochs list

type APIExecutionClientNodeInfo added in v1.17.0

type APIExecutionClientNodeInfo struct {
	ClientName string    `json:"client_name"`
	NodeID     string    `json:"node_id"`
	Enode      string    `json:"enode"`
	IP         string    `json:"ip"`
	Port       int       `json:"port"`
	Version    string    `json:"version"`
	Status     string    `json:"status"`
	LastUpdate time.Time `json:"last_update"`
}

APIExecutionClientNodeInfo represents the response structure for execution client node info

type APIExecutionClientsResponse added in v1.17.0

type APIExecutionClientsResponse struct {
	Clients []APIExecutionClientNodeInfo `json:"clients"`
	Count   int                          `json:"count"`
}

APIExecutionClientsResponse represents the full API response

type APIMassNodeResult added in v1.18.0

type APIMassNodeResult struct {
	Success           bool                   `json:"success"`
	Error             string                 `json:"error,omitempty"`
	NodeAlias         string                 `json:"node_alias,omitempty"`
	ValidColumns      [][]bool               `json:"valid_columns,omitempty"`   // Per-slot array of column validity
	TotalColumns      int                    `json:"total_columns"`             // Total number of columns per slot
	SlotResults       map[uint64]*SlotResult `json:"slot_results,omitempty"`    // Slot -> result details
	CustodyGroupCount uint64                 `json:"custody_group_count"`       // CGC from node metadata
	CustodyColumns    []uint64               `json:"custody_columns,omitempty"` // Custody column indices
	EarliestSlot      uint64                 `json:"earliest_slot"`             // Earliest available slot from node status
}

APIMassNodeResult represents the scan result for a single node in mass scan

type APIMevBlockInfo added in v1.19.0

type APIMevBlockInfo struct {
	SlotNumber     uint64                  `json:"slot_number"`
	BlockHash      string                  `json:"block_hash"`
	BlockNumber    uint64                  `json:"block_number"`
	Time           int64                   `json:"time"`
	ValidatorIndex uint64                  `json:"validator_index"`
	ValidatorName  string                  `json:"validator_name,omitempty"`
	BuilderPubkey  string                  `json:"builder_pubkey,omitempty"`
	Proposed       uint8                   `json:"proposed"` // 0=not proposed, 1=proposed, 2=orphaned
	Relays         []*APIMevBlockRelayInfo `json:"relays"`
	FeeRecipient   string                  `json:"fee_recipient"`
	TxCount        uint32                  `json:"tx_count"`
	BlobCount      uint64                  `json:"blob_count"`
	GasUsed        uint64                  `json:"gas_used"`
	BlockValue     uint64                  `json:"block_value_gwei"`
}

APIMevBlockInfo represents information about a single MEV block

type APIMevBlockRelayInfo added in v1.19.0

type APIMevBlockRelayInfo struct {
	RelayId   uint8  `json:"relay_id"`
	RelayName string `json:"relay_name"`
}

APIMevBlockRelayInfo represents information about a MEV relay for a block

type APIMevBlocksData added in v1.19.0

type APIMevBlocksData struct {
	MevBlocks  []*APIMevBlockInfo `json:"mev_blocks"`
	Count      uint64             `json:"count"`
	TotalCount uint64             `json:"total_count"`
}

APIMevBlocksData contains the MEV blocks data

type APIMevBlocksResponse added in v1.19.0

type APIMevBlocksResponse struct {
	Status string            `json:"status"`
	Data   *APIMevBlocksData `json:"data"`
}

APIMevBlocksResponse represents the response structure for MEV blocks list

type APINetworkForkInfo added in v1.19.0

type APINetworkForkInfo struct {
	Name             string  `json:"name"`
	Version          *string `json:"version,omitempty"` // nil for BPO forks
	Epoch            uint64  `json:"epoch"`
	Active           bool    `json:"active"`
	Scheduled        bool    `json:"scheduled"`
	Time             int64   `json:"time,omitempty"`
	Type             string  `json:"type"` // "consensus" or "bpo"
	ForkDigest       string  `json:"fork_digest"`
	MaxBlobsPerBlock *uint64 `json:"max_blobs_per_block,omitempty"` // only for BPO forks
}

APINetworkForkInfo represents information about a single network fork

type APINetworkForksData added in v1.19.0

type APINetworkForksData struct {
	ConfigName     string                `json:"config_name"`
	CurrentEpoch   uint64                `json:"current_epoch"`
	FinalizedEpoch int64                 `json:"finalized_epoch"`
	Forks          []*APINetworkForkInfo `json:"forks"`
	Count          uint64                `json:"count"`
}

APINetworkForksData contains the network forks data

type APINetworkForksResponse added in v1.19.0

type APINetworkForksResponse struct {
	Status string               `json:"status"`
	Data   *APINetworkForksData `json:"data"`
}

APINetworkForksResponse represents the response structure for network forks

type APINetworkInfo added in v1.19.0

type APINetworkInfo struct {
	NetworkName           string `json:"network_name"`
	ConfigName            string `json:"config_name"`
	DepositContract       string `json:"deposit_contract"`
	WithdrawalContract    string `json:"withdrawal_contract"`
	ConsolidationContract string `json:"consolidation_contract"`
	GenesisTime           int64  `json:"genesis_time"`
	GenesisRoot           string `json:"genesis_root"`
	GenesisValidatorsRoot string `json:"genesis_validators_root"`
}

APINetworkInfo contains basic network information

type APINetworkOverviewData added in v1.19.0

type APINetworkOverviewData struct {
	NetworkInfo    *APINetworkInfo       `json:"network_info"`
	CurrentState   *APICurrentState      `json:"current_state"`
	Checkpoints    *APICheckpoints       `json:"checkpoints"`
	ValidatorStats *APIValidatorStats    `json:"validator_stats"`
	QueueStats     *APIQueueStats        `json:"queue_stats,omitempty"`
	Forks          []*APINetworkForkInfo `json:"forks"`
	IsSynced       bool                  `json:"is_synced"`
}

APINetworkOverviewData contains comprehensive network state information

type APINetworkOverviewResponse added in v1.19.0

type APINetworkOverviewResponse struct {
	Status string                  `json:"status"`
	Data   *APINetworkOverviewData `json:"data"`
}

APINetworkOverviewResponse represents the response structure for network overview

type APINetworkSplitInfo added in v1.19.0

type APINetworkSplitInfo struct {
	ForkId                 string    `json:"fork_id"`
	HeadSlot               uint64    `json:"head_slot"`
	HeadRoot               string    `json:"head_root"`
	HeadBlockHash          string    `json:"head_block_hash,omitempty"`
	HeadExecutionNumber    uint64    `json:"head_execution_number,omitempty"`
	TotalChainWeight       uint64    `json:"total_chain_weight"`
	LastEpochVotes         []uint64  `json:"last_epoch_votes"`
	LastEpochParticipation []float64 `json:"last_epoch_participation"`
	IsCanonical            bool      `json:"is_canonical"`
}

APINetworkSplitInfo represents information about a single network split/fork

type APINetworkSplitsData added in v1.19.0

type APINetworkSplitsData struct {
	CurrentEpoch   uint64                 `json:"current_epoch"`
	CurrentSlot    uint64                 `json:"current_slot"`
	FinalizedEpoch int64                  `json:"finalized_epoch"`
	FinalizedRoot  string                 `json:"finalized_root"`
	Splits         []*APINetworkSplitInfo `json:"splits"`
}

APINetworkSplitsData contains information about active network forks/splits

type APINetworkSplitsResponse added in v1.19.0

type APINetworkSplitsResponse struct {
	Status string                `json:"status"`
	Data   *APINetworkSplitsData `json:"data"`
}

APINetworkSplitsResponse represents the response structure for network splits

type APIQueueStats added in v1.19.0

type APIQueueStats struct {
	EnteringValidatorCount        uint64 `json:"entering_validator_count"`
	ExitingValidatorCount         uint64 `json:"exiting_validator_count"`
	EnteringEtherAmount           uint64 `json:"entering_ether_amount"`
	EtherChurnPerDay              uint64 `json:"ether_churn_per_day"`
	DepositEstimatedTimeToProcess uint64 `json:"deposit_estimated_time"`
	ExitEstimatedTimeToProcess    uint64 `json:"exit_estimated_time"`
}

APIQueueStats contains queue statistics (Electra era)

type APISlashingInfo added in v1.19.0

type APISlashingInfo struct {
	SlotNumber             uint64 `json:"slot_number"`
	SlotRoot               string `json:"slot_root"`
	Time                   int64  `json:"time"`
	Orphaned               bool   `json:"orphaned"`
	Reason                 uint8  `json:"reason"`
	ValidatorIndex         uint64 `json:"validator_index"`
	ValidatorName          string `json:"validator_name,omitempty"`
	ValidatorStatus        string `json:"validator_status"`
	ValidatorBalance       uint64 `json:"validator_balance,omitempty"`
	SlasherIndex           uint64 `json:"slasher_index"`
	SlasherName            string `json:"slasher_name,omitempty"`
	ValidatorLiveness      uint8  `json:"validator_liveness,omitempty"`
	ValidatorLivenessTotal uint8  `json:"validator_liveness_total,omitempty"`
}

APISlashingInfo represents information about a single slashing

type APISlashingsData added in v1.19.0

type APISlashingsData struct {
	Slashings  []*APISlashingInfo `json:"slashings"`
	Count      uint64             `json:"count"`
	TotalCount uint64             `json:"total_count"`
	PageIndex  uint64             `json:"page_index"`
	TotalPages uint64             `json:"total_pages"`
}

APISlashingsData contains the slashings data

type APISlashingsResponse added in v1.19.0

type APISlashingsResponse struct {
	Status string            `json:"status"`
	Data   *APISlashingsData `json:"data"`
}

APISlashingsResponse represents the response structure for slashings list

type APISlotData added in v1.18.0

type APISlotData struct {
	AttestationsCount          uint64  `json:"attestationscount"`
	AttesterSlashingsCount     uint64  `json:"attesterslashingscount"`
	BlockRoot                  string  `json:"blockroot"`
	DepositsCount              uint64  `json:"depositscount"`
	Epoch                      uint64  `json:"epoch"`
	ExecBaseFeePerGas          uint64  `json:"exec_base_fee_per_gas"`
	ExecBlockHash              string  `json:"exec_block_hash"`
	ExecBlockNumber            uint64  `json:"exec_block_number"`
	ExecExtraData              string  `json:"exec_extra_data"`
	ExecFeeRecipient           string  `json:"exec_fee_recipient"`
	ExecGasLimit               uint64  `json:"exec_gas_limit"`
	ExecGasUsed                uint64  `json:"exec_gas_used"`
	ExecTransactionsCount      uint64  `json:"exec_transactions_count"`
	Graffiti                   string  `json:"graffiti"`
	GraffitiText               string  `json:"graffiti_text"`
	ParentRoot                 string  `json:"parentroot"`
	Proposer                   uint64  `json:"proposer"`
	ProposerSlashingsCount     uint64  `json:"proposerslashingscount"`
	Slot                       uint64  `json:"slot"`
	StateRoot                  string  `json:"stateroot"`
	Status                     string  `json:"status"`
	SyncAggregateParticipation float64 `json:"syncaggregate_participation"`
	VoluntaryExitsCount        uint64  `json:"voluntaryexitscount"`
	WithdrawalCount            uint64  `json:"withdrawalcount"`
	BlobCount                  uint64  `json:"blob_count"`
}

APISlotData represents detailed slot information

type APISlotListItem added in v1.19.0

type APISlotListItem struct {
	Slot                       uint64                       `json:"slot"`
	Epoch                      uint64                       `json:"epoch"`
	Time                       time.Time                    `json:"time"`
	Finalized                  bool                         `json:"finalized"`
	Scheduled                  bool                         `json:"scheduled"`
	Status                     string                       `json:"status"`
	Proposer                   uint64                       `json:"proposer"`
	ProposerName               string                       `json:"proposer_name"`
	AttestationCount           uint64                       `json:"attestation_count"`
	DepositCount               uint64                       `json:"deposit_count"`
	ExitCount                  uint64                       `json:"exit_count"`
	ProposerSlashingCount      uint64                       `json:"proposer_slashing_count"`
	AttesterSlashingCount      uint64                       `json:"attester_slashing_count"`
	SyncAggregateParticipation float64                      `json:"sync_aggregate_participation"`
	EthTransactionCount        uint64                       `json:"eth_transaction_count"`
	BlobCount                  uint64                       `json:"blob_count"`
	WithEthBlock               bool                         `json:"with_eth_block"`
	EthBlockNumber             *uint64                      `json:"eth_block_number,omitempty"`
	Graffiti                   string                       `json:"graffiti"`
	GraffitiText               string                       `json:"graffiti_text"`
	ElExtraData                string                       `json:"el_extra_data"`
	GasUsed                    uint64                       `json:"gas_used"`
	GasLimit                   uint64                       `json:"gas_limit"`
	BlockSize                  uint64                       `json:"block_size"`
	BlockRoot                  string                       `json:"block_root"`
	ParentRoot                 string                       `json:"parent_root"`
	StateRoot                  string                       `json:"state_root"`
	RecvDelay                  *int32                       `json:"recv_delay,omitempty"`
	MinExecTime                *uint32                      `json:"min_exec_time,omitempty"`
	MaxExecTime                *uint32                      `json:"max_exec_time,omitempty"`
	AvgExecTime                *uint32                      `json:"avg_exec_time,omitempty"`
	ExecutionTimes             []models.ExecutionTimeDetail `json:"execution_times,omitempty"`
	IsMevBlock                 bool                         `json:"is_mev_block"`
	MevBlockRelays             string                       `json:"mev_block_relays,omitempty"`
}

APISlotListItem represents a single slot in the list

type APISlotResponse added in v1.18.0

type APISlotResponse struct {
	Status string       `json:"status"`
	Data   *APISlotData `json:"data"`
}

APISlotResponse represents the response for slot information

type APISlotsData added in v1.19.0

type APISlotsData struct {
	Slots      []*APISlotListItem `json:"slots"`
	TotalCount int                `json:"total_count"`
	NextSlot   *uint64            `json:"next_slot,omitempty"`
}

APISlotsData represents the slots list data

type APISlotsResponse added in v1.19.0

type APISlotsResponse struct {
	Status string        `json:"status"`
	Data   *APISlotsData `json:"data"`
}

APISlotsResponse represents the response for slots list endpoint

type APIValidatorActivityGroup added in v1.19.0

type APIValidatorActivityGroup struct {
	Group      string `json:"group"`
	Validators uint64 `json:"validators"`
	Activated  uint64 `json:"activated"`
	Online     uint64 `json:"online"`
	Offline    uint64 `json:"offline"`
	Exited     uint64 `json:"exited"`
	Slashed    uint64 `json:"slashed"`
}

APIValidatorActivityGroup represents a group of validators with their activity statistics

type APIValidatorInfo added in v1.19.0

type APIValidatorInfo struct {
	Index                uint64 `json:"index"`
	Name                 string `json:"name,omitempty"`
	PublicKey            string `json:"public_key"`
	Balance              uint64 `json:"balance"`
	EffectiveBalance     uint64 `json:"effective_balance"`
	Status               string `json:"status"`
	ActivationEpoch      uint64 `json:"activation_epoch,omitempty"`
	ActivationTime       int64  `json:"activation_time,omitempty"`
	ExitEpoch            uint64 `json:"exit_epoch,omitempty"`
	ExitTime             int64  `json:"exit_time,omitempty"`
	WithdrawalAddress    string `json:"withdrawal_address,omitempty"`
	WithdrawalCreds      string `json:"withdrawal_credentials"`
	ValidatorLiveness    uint8  `json:"validator_liveness,omitempty"`
	ValidatorLivenessMax uint8  `json:"validator_liveness_max,omitempty"`
}

APIValidatorInfo represents information about a single validator

type APIValidatorNameInfo added in v1.19.0

type APIValidatorNameInfo struct {
	Index     uint64 `json:"index"`
	Name      string `json:"name,omitempty"`
	PublicKey string `json:"public_key"`
	Found     bool   `json:"found"`
}

APIValidatorNameInfo represents information about a single validator name lookup

type APIValidatorNamesData added in v1.19.0

type APIValidatorNamesData struct {
	ValidatorNames []*APIValidatorNameInfo `json:"validator_names"`
	Count          uint64                  `json:"count"`
}

APIValidatorNamesData contains the validator names data

type APIValidatorNamesRequest added in v1.19.0

type APIValidatorNamesRequest struct {
	Indices []uint64 `json:"indices,omitempty"`
	Pubkeys []string `json:"pubkeys,omitempty"`
}

APIValidatorNamesRequest represents the request body for POST requests

type APIValidatorNamesResponse added in v1.19.0

type APIValidatorNamesResponse struct {
	Status string                 `json:"status"`
	Data   *APIValidatorNamesData `json:"data"`
}

APIValidatorNamesResponse represents the response structure for validator names lookup

type APIValidatorStats added in v1.19.0

type APIValidatorStats struct {
	TotalBalance         uint64 `json:"total_balance"`
	TotalActiveBalance   uint64 `json:"total_active_balance"`
	ActiveValidatorCount uint64 `json:"active_validator_count"`
	AverageBalance       uint64 `json:"average_balance"`
	TotalEligibleEther   uint64 `json:"total_eligible_ether"`
}

APIValidatorStats contains validator statistics

type APIValidatorsActivityData added in v1.19.0

type APIValidatorsActivityData struct {
	Groups         []*APIValidatorActivityGroup `json:"groups"`
	GroupCount     uint64                       `json:"group_count"`
	TotalGroups    uint64                       `json:"total_groups"`
	PageIndex      uint64                       `json:"page_index"`
	TotalPages     uint64                       `json:"total_pages"`
	FirstGroup     uint64                       `json:"first_group"`
	LastGroup      uint64                       `json:"last_group"`
	CurrentEpoch   uint64                       `json:"current_epoch"`
	FinalizedEpoch uint64                       `json:"finalized_epoch"`

	// Filter and grouping options
	GroupBy    uint64 `json:"group_by"`
	SearchTerm string `json:"search_term,omitempty"`
	Sorting    string `json:"sorting"`
}

APIValidatorsActivityData contains the validators activity data

type APIValidatorsActivityResponse added in v1.19.0

type APIValidatorsActivityResponse struct {
	Status string                     `json:"status"`
	Data   *APIValidatorsActivityData `json:"data"`
}

APIValidatorsActivityResponse represents the response structure for validators activity

type APIValidatorsData added in v1.19.0

type APIValidatorsData struct {
	Validators     []*APIValidatorInfo `json:"validators"`
	Count          uint64              `json:"count"`
	TotalCount     uint64              `json:"total_count"`
	PageIndex      uint64              `json:"page_index"`
	TotalPages     uint64              `json:"total_pages"`
	FirstValidator uint64              `json:"first_validator"`
	LastValidator  uint64              `json:"last_validator"`
	CurrentEpoch   uint64              `json:"current_epoch"`
	FinalizedEpoch uint64              `json:"finalized_epoch"`
}

APIValidatorsData contains the validators data

type APIValidatorsResponse added in v1.19.0

type APIValidatorsResponse struct {
	Status string             `json:"status"`
	Data   *APIValidatorsData `json:"data"`
}

APIValidatorsResponse represents the response structure for validators list

type APIVoluntaryExitInfo added in v1.19.0

type APIVoluntaryExitInfo struct {
	SlotNumber             uint64 `json:"slot_number"`
	SlotRoot               string `json:"slot_root"`
	Time                   int64  `json:"time"`
	Orphaned               bool   `json:"orphaned"`
	ValidatorIndex         uint64 `json:"validator_index"`
	ValidatorName          string `json:"validator_name,omitempty"`
	ValidatorStatus        string `json:"validator_status"`
	ValidatorBalance       uint64 `json:"validator_balance,omitempty"`
	PublicKey              string `json:"public_key,omitempty"`
	WithdrawalCredentials  string `json:"withdrawal_credentials,omitempty"`
	ValidatorLiveness      uint8  `json:"validator_liveness,omitempty"`
	ValidatorLivenessTotal uint8  `json:"validator_liveness_total,omitempty"`
}

APIVoluntaryExitInfo represents information about a single voluntary exit

type APIVoluntaryExitsData added in v1.19.0

type APIVoluntaryExitsData struct {
	VoluntaryExits []*APIVoluntaryExitInfo `json:"voluntary_exits"`
	Count          uint64                  `json:"count"`
	TotalCount     uint64                  `json:"total_count"`
	PageIndex      uint64                  `json:"page_index"`
	TotalPages     uint64                  `json:"total_pages"`
}

APIVoluntaryExitsData contains the voluntary exits data

type APIVoluntaryExitsResponse added in v1.19.0

type APIVoluntaryExitsResponse struct {
	Status string                 `json:"status"`
	Data   *APIVoluntaryExitsData `json:"data"`
}

APIVoluntaryExitsResponse represents the response structure for voluntary exits list

type APIWithdrawalRequestInfo added in v1.19.0

type APIWithdrawalRequestInfo struct {
	SourceAddress      string                         `json:"source_address"`
	Amount             uint64                         `json:"amount"`
	PublicKey          string                         `json:"public_key"`
	ValidatorIndex     uint64                         `json:"validator_index,omitempty"`
	ValidatorName      string                         `json:"validator_name,omitempty"`
	ValidatorValid     bool                           `json:"validator_valid"`
	IsIncluded         bool                           `json:"is_included"`
	SlotNumber         uint64                         `json:"slot_number,omitempty"`
	SlotRoot           string                         `json:"slot_root,omitempty"`
	Time               int64                          `json:"time,omitempty"`
	Status             uint64                         `json:"status"` // 0=pending, 1=included, 2=orphaned
	Result             uint8                          `json:"result,omitempty"`
	ResultMessage      string                         `json:"result_message,omitempty"`
	TxStatus           uint64                         `json:"tx_status"` // 0=pending, 1=confirmed, 2=orphaned
	TransactionHash    string                         `json:"transaction_hash,omitempty"`
	TransactionDetails *APIWithdrawalRequestTxDetails `json:"transaction_details,omitempty"`
}

APIWithdrawalRequestInfo represents information about a single withdrawal request

type APIWithdrawalRequestTxDetails added in v1.19.0

type APIWithdrawalRequestTxDetails struct {
	BlockNumber uint64 `json:"block_number"`
	BlockHash   string `json:"block_hash"`
	BlockTime   int64  `json:"block_time"`
	TxOrigin    string `json:"tx_origin"`
	TxTarget    string `json:"tx_target"`
	TxHash      string `json:"tx_hash"`
}

APIWithdrawalRequestTxDetails represents transaction details for a withdrawal request

type APIWithdrawalRequestsData added in v1.19.0

type APIWithdrawalRequestsData struct {
	WithdrawalRequests []*APIWithdrawalRequestInfo `json:"withdrawal_requests"`
	Count              uint64                      `json:"count"`
	TotalRequests      uint64                      `json:"total_requests"`
	TotalPending       uint64                      `json:"total_pending"`
}

APIWithdrawalRequestsData contains the withdrawal requests data

type APIWithdrawalRequestsResponse added in v1.19.0

type APIWithdrawalRequestsResponse struct {
	Status string                     `json:"status"`
	Data   *APIWithdrawalRequestsData `json:"data"`
}

APIWithdrawalRequestsResponse represents the response structure for withdrawal requests list

type ApiResponse

type ApiResponse struct {
	Status string      `json:"status"`
	Data   interface{} `json:"data"`
}

type ApiValidatorDepositsResponseV1 added in v1.16.0

type ApiValidatorDepositsResponseV1 struct {
	Amount                uint64 `json:"amount"`
	BlockNumber           uint64 `json:"block_number"`
	BlockTS               uint64 `json:"block_ts"`
	FromAddress           string `json:"from_address"`
	MerkleTreeIndex       string `json:"merkletree_index"`
	PublicKey             string `json:"publickey"`
	Removed               bool   `json:"removed"`
	Signature             string `json:"signature"`
	TxHash                string `json:"tx_hash"`
	TxIndex               uint64 `json:"tx_index"`
	TxInput               string `json:"tx_input"`
	ValidSignature        bool   `json:"valid_signature"`
	WithdrawalCredentials string `json:"withdrawal_credentials"`
}

type ApiValidatorEth1ResponseV1

type ApiValidatorEth1ResponseV1 struct {
	PublicKey      string `json:"public_key"`
	ValidSignature bool   `json:"valid_signature"`
	ValidatorIndex uint64 `json:"validator_index"`
}

type ApiValidatorRequestV1 added in v1.17.0

type ApiValidatorRequestV1 struct {
	IndicesOrPubKey string `json:"indicesOrPubkey"`
}

type ApiValidatorResponseV1

type ApiValidatorResponseV1 struct {
	Activationeligibilityepoch uint64 `json:"activationeligibilityepoch"`
	Activationepoch            uint64 `json:"activationepoch"`
	Balance                    uint64 `json:"balance"`
	Effectivebalance           uint64 `json:"effectivebalance"`
	Exitepoch                  uint64 `json:"exitepoch"`
	Isonline                   bool   `json:"isonline"`
	Name                       string `json:"name"`
	Pubkey                     string `json:"pubkey"`
	Slashed                    bool   `json:"slashed"`
	Status                     string `json:"status"`
	Validatorindex             uint64 `json:"validatorindex"`
	Withdrawableepoch          uint64 `json:"withdrawableepoch"`
	Withdrawalcredentials      string `json:"withdrawalcredentials"`
}

type ApiWithdrawalCredentialsResponseV1

type ApiWithdrawalCredentialsResponseV1 struct {
	PublicKey      string `json:"publickey"`
	ValidatorIndex uint64 `json:"validatorindex"`
}

type IndexerBeacon added in v1.19.0

type IndexerBeacon interface {
	GetChainHeads() []*beacon.ChainHead
	GetBlocksByForkId(forkId beacon.ForkKey) []*beacon.Block
}

Helper function to get IndexerBeacon interface methods we need

type SlotResult added in v1.18.0

type SlotResult struct {
	ValidColumnCount int    `json:"valid_column_count"`
	TotalColumns     int    `json:"total_columns"`
	Error            string `json:"error,omitempty"`
}

SlotResult represents the scan result for a single slot

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL