client

package
v0.0.0-...-1845101 Latest Latest
Warning

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

Go to latest
Published: Mar 21, 2024 License: GPL-3.0 Imports: 22 Imported by: 0

Documentation

Index

Constants

View Source
const (
	RequestUrlFormat   = "%s%s"
	RequestContentType = "application/json"

	RequestSyncStatusPath            = "/eth/v1/node/syncing"
	RequestEth2ConfigPath            = "/eth/v1/config/spec"
	RequestEth2DepositContractMethod = "/eth/v1/config/deposit_contract"
	RequestGenesisPath               = "/eth/v1/beacon/genesis"
	RequestFinalityCheckpointsPath   = "/eth/v1/beacon/states/%s/finality_checkpoints"
	RequestValidatorsPath            = "/eth/v1/beacon/states/%s/validators"
	RequestVoluntaryExitPath         = "/eth/v1/beacon/pool/voluntary_exits"
	RequestBeaconBlockPath           = "/eth/v2/beacon/blocks/%d"

	MaxRequestValidatorsCount = 50
)

Config

Variables

View Source
var File_types_types_proto protoreflect.FileDescriptor

Functions

This section is empty.

Types

type Attestation

type Attestation struct {
	AggregationBits string `json:"aggregation_bits"`
	Data            struct {
		Slot  uinteger `json:"slot"`
		Index uinteger `json:"index"`
	} `json:"data"`
}

type AttestationsResponse

type AttestationsResponse struct {
	Data []Attestation `json:"data"`
}

type BeaconBlockResponse

type BeaconBlockResponse struct {
	Version             string `json:"version"`
	ExecutionOptimistic bool   `json:"execution_optimistic"`
	Data                struct {
		Message struct {
			Slot          uinteger `json:"slot"`
			ProposerIndex uinteger `json:"proposer_index"`
			ParentRoot    string   `json:"parent_root"`
			StateRoot     string   `json:"state_root"`
			Body          struct {
				RandaoReveal string `json:"randao_reveal"`
				Eth1Data     struct {
					DepositRoot  string   `json:"deposit_root"`
					DepositCount uinteger `json:"deposit_count"`
					BlockHash    string   `json:"block_hash"`
				} `json:"eth1_data"`
				Graffiti          string `json:"graffiti"`
				ProposerSlashings []struct {
					SignedHeader1 struct {
						Message struct {
							Slot          uinteger `json:"slot"`
							ProposerIndex uinteger `json:"proposer_index"`
							ParentRoot    string   `json:"parent_root"`
							StateRoot     string   `json:"state_root"`
							BodyRoot      string   `json:"body_root"`
						} `json:"message"`
						Signature string `json:"signature"`
					} `json:"signed_header_1"`
					SignedHeader2 struct {
						Message struct {
							Slot          uinteger `json:"slot"`
							ProposerIndex uinteger `json:"proposer_index"`
							ParentRoot    string   `json:"parent_root"`
							StateRoot     string   `json:"state_root"`
							BodyRoot      string   `json:"body_root"`
						} `json:"message"`
						Signature string `json:"signature"`
					} `json:"signed_header_2"`
				} `json:"proposer_slashings"`
				AttesterSlashings []struct {
					Attestation1 struct {
						AttestingIndices []uinteger `json:"attesting_indices"`
						Signature        string     `json:"signature"`
						Data             struct {
							Slot            uinteger `json:"slot"`
							Index           uinteger `json:"index"`
							BeaconBlockRoot string   `json:"beacon_block_root"`
							Source          struct {
								Epoch uinteger `json:"epoch"`
								Root  string   `json:"root"`
							} `json:"source"`
							Target struct {
								Epoch uinteger `json:"epoch"`
								Root  string   `json:"root"`
							} `json:"target"`
						} `json:"data"`
					} `json:"attestation_1"`
					Attestation2 struct {
						AttestingIndices []uinteger `json:"attesting_indices"`
						Signature        string     `json:"signature"`
						Data             struct {
							Slot            uinteger `json:"slot"`
							Index           uinteger `json:"index"`
							BeaconBlockRoot string   `json:"beacon_block_root"`
							Source          struct {
								Epoch uinteger `json:"epoch"`
								Root  string   `json:"root"`
							} `json:"source"`
							Target struct {
								Epoch uinteger `json:"epoch"`
								Root  string   `json:"root"`
							} `json:"target"`
						} `json:"data"`
					} `json:"attestation_2"`
				} `json:"attester_slashings"`
				Attestations []struct {
					AggregationBits string `json:"aggregation_bits"`
					Signature       string `json:"signature"`
					Data            struct {
						Slot            uinteger `json:"slot"`
						Index           uinteger `json:"index"`
						BeaconBlockRoot string   `json:"beacon_block_root"`
						Source          struct {
							Epoch uinteger `json:"epoch"`
							Root  string   `json:"root"`
						} `json:"source"`
						Target struct {
							Epoch uinteger `json:"epoch"`
							Root  string   `json:"root"`
						} `json:"target"`
					} `json:"data"`
				} `json:"attestations"`
				Deposits []struct {
					Proof []string `json:"proof"`
					Data  struct {
						Pubkey                string   `json:"pubkey"`
						WithdrawalCredentials string   `json:"withdrawal_credentials"`
						Amount                uinteger `json:"amount"`
						Signature             string   `json:"signature"`
					} `json:"data"`
				} `json:"deposits"`
				VoluntaryExits []struct {
					Message struct {
						Epoch          uinteger `json:"epoch"`
						ValidatorIndex uinteger `json:"validator_index"`
					} `json:"message"`
					Signature string `json:"signature"`
				} `json:"voluntary_exits"`
				SyncAggregate struct {
					SyncCommitteeBits      string `json:"sync_committee_bits"`
					SyncCommitteeSignature string `json:"sync_committee_signature"`
				} `json:"sync_aggregate"`
				ExecutionPayload *struct {
					ParentHash    string   `json:"parent_hash"`
					FeeRecipient  string   `json:"fee_recipient"`
					StateRoot     string   `json:"state_root"`
					ReceiptsRoot  string   `json:"receipts_root"`
					LogsBloom     string   `json:"logs_bloom"`
					PrevRandao    string   `json:"prev_randao"`
					BlockNumber   uinteger `json:"block_number"`
					GasLimit      uinteger `json:"gas_limit"`
					GasUsed       uinteger `json:"gas_used"`
					Timestamp     uinteger `json:"timestamp"`
					ExtraData     string   `json:"extra_data"`
					BaseFeePerGas uinteger `json:"base_fee_per_gas"`
					BlockHash     string   `json:"block_hash"`
					Transactions  []string `json:"transactions"`
					// present only after capella
					Withdrawals []WithdrawalPayload `json:"withdrawals"`
				} `json:"execution_payload"`
			} `json:"body"`
		} `json:"message"`
		Signature string `json:"signature"`
	} `json:"data"`
}

type Committee

type Committee struct {
	Index      uinteger   `json:"index"`
	Slot       uinteger   `json:"slot"`
	Validators []uinteger `json:"validators"`
}

type CommitteesResponse

type CommitteesResponse struct {
	Data []Committee `json:"data"`
}

type Eth2ConfigResponse

type Eth2ConfigResponse struct {
	Data struct {
		SecondsPerSlot               uinteger `json:"SECONDS_PER_SLOT"`
		SlotsPerEpoch                uinteger `json:"SLOTS_PER_EPOCH"`
		EpochsPerSyncCommitteePeriod uinteger `json:"EPOCHS_PER_SYNC_COMMITTEE_PERIOD"`
	} `json:"data"`
}

type Eth2DepositContractResponse

type Eth2DepositContractResponse struct {
	Data struct {
		ChainID uinteger       `json:"chain_id"`
		Address common.Address `json:"address"`
	} `json:"data"`
}

type FinalityCheckpointsResponse

type FinalityCheckpointsResponse struct {
	Data struct {
		PreviousJustified struct {
			Epoch uinteger `json:"epoch"`
		} `json:"previous_justified"`
		CurrentJustified struct {
			Epoch uinteger `json:"epoch"`
		} `json:"current_justified"`
		Finalized struct {
			Epoch uinteger `json:"epoch"`
		} `json:"finalized"`
	} `json:"data"`
}

type ForkResponse

type ForkResponse struct {
	Data struct {
		PreviousVersion byteArray `json:"previous_version"`
		CurrentVersion  byteArray `json:"current_version"`
		Epoch           uinteger  `json:"epoch"`
	} `json:"data"`
}

type GenesisResponse

type GenesisResponse struct {
	Data struct {
		GenesisTime           uinteger  `json:"genesis_time"`
		GenesisForkVersion    byteArray `json:"genesis_fork_version"`
		GenesisValidatorsRoot byteArray `json:"genesis_validators_root"`
	} `json:"data"`
}

type ProposerDutiesResponse

type ProposerDutiesResponse struct {
	Data []ProposerDuty `json:"data"`
}

type ProposerDuty

type ProposerDuty struct {
	ValidatorIndex uinteger `json:"validator_index"`
	Pubkey         string   `json:"pubkey"`
	Slot           uinteger `json:"slot"`
}

type StandardHttpClient

type StandardHttpClient struct {
	// contains filtered or unexported fields
}

Beacon client using the standard Beacon HTTP REST API (https://ethereum.github.io/beacon-APIs/)

func NewStandardHttpClient

func NewStandardHttpClient(providerAddress string, chainID *big.Int) (*StandardHttpClient, error)

Create a new client instance

func (*StandardHttpClient) Close

func (c *StandardHttpClient) Close() error

Close the client connection

func (*StandardHttpClient) ExitValidator

func (c *StandardHttpClient) ExitValidator(validatorIndex, epoch uint64, signature types.ValidatorSignature) error

Perform a voluntary exit on a validator

func (*StandardHttpClient) GetBeaconBlock

func (c *StandardHttpClient) GetBeaconBlock(blockId uint64) (beacon.BeaconBlock, bool, error)

func (*StandardHttpClient) GetBeaconHead

func (c *StandardHttpClient) GetBeaconHead() (beacon.BeaconHead, error)

Get the beacon head

func (*StandardHttpClient) GetClientType

func (c *StandardHttpClient) GetClientType() (beacon.BeaconClientType, error)

Get the client's process configuration type

func (*StandardHttpClient) GetEth1DataForEth2Block

func (c *StandardHttpClient) GetEth1DataForEth2Block(blockId uint64) (beacon.Eth1Data, bool, error)

Get the ETH1 data for the target beacon block

func (*StandardHttpClient) GetEth2Config

func (c *StandardHttpClient) GetEth2Config() (beacon.Eth2Config, error)

Get the eth2 config

func (*StandardHttpClient) GetEth2DepositContract

func (c *StandardHttpClient) GetEth2DepositContract() (beacon.Eth2DepositContract, error)

Get the eth2 deposit contract info

func (*StandardHttpClient) GetSyncStatus

func (c *StandardHttpClient) GetSyncStatus() (beacon.SyncStatus, error)

Get the node's sync status

func (*StandardHttpClient) GetValidatorStatus

Get a validator's status

func (*StandardHttpClient) GetValidatorStatuses

Get multiple validators' statuses epoch in opts == the first slot of epoch

type SyncCommittee

type SyncCommittee struct {
	Validators          []string   `json:"validators"`
	ValidatorAggregates [][]string `json:"validator_aggregates"`
}

type SyncCommitteesResponse

type SyncCommitteesResponse struct {
	Data SyncCommittee `json:"data"`
}

type SyncDutiesResponse

type SyncDutiesResponse struct {
	Data []SyncDuty `json:"data"`
}

type SyncDuty

type SyncDuty struct {
	Pubkey               byteArray  `json:"pubkey"`
	ValidatorIndex       uinteger   `json:"validator_index"`
	SyncCommitteeIndices []uinteger `json:"validator_sync_committee_indices"`
}

type SyncStatusResponse

type SyncStatusResponse struct {
	Data struct {
		IsSyncing    bool     `json:"is_syncing"`
		HeadSlot     uinteger `json:"head_slot"`
		SyncDistance uinteger `json:"sync_distance"`
	} `json:"data"`
}

Response types

type Validator

type Validator struct {
	Index     uinteger `json:"index"`
	Balance   uinteger `json:"balance"`
	Status    string   `json:"status"`
	Validator struct {
		Pubkey                     byteArray `json:"pubkey"`
		WithdrawalCredentials      byteArray `json:"withdrawal_credentials"`
		EffectiveBalance           uinteger  `json:"effective_balance"`
		Slashed                    bool      `json:"slashed"`
		ActivationEligibilityEpoch uinteger  `json:"activation_eligibility_epoch"`
		ActivationEpoch            uinteger  `json:"activation_epoch"`
		ExitEpoch                  uinteger  `json:"exit_epoch"`
		WithdrawableEpoch          uinteger  `json:"withdrawable_epoch"`
	} `json:"validator"`
}

type ValidatorEpochIncome

type ValidatorEpochIncome struct {
	AttestationSourceReward            uint64 `` /* 133-byte string literal not displayed */
	AttestationSourcePenalty           uint64 `` /* 136-byte string literal not displayed */
	AttestationTargetReward            uint64 `` /* 133-byte string literal not displayed */
	AttestationTargetPenalty           uint64 `` /* 136-byte string literal not displayed */
	AttestationHeadReward              uint64 `` /* 127-byte string literal not displayed */
	FinalityDelayPenalty               uint64 `protobuf:"varint,7,opt,name=finality_delay_penalty,json=finalityDelayPenalty,proto3" json:"finality_delay_penalty,omitempty"`
	ProposerSlashingInclusionReward    uint64 `` /* 159-byte string literal not displayed */
	ProposerAttestationInclusionReward uint64 `` /* 168-byte string literal not displayed */
	ProposerSyncInclusionReward        uint64 `` /* 148-byte string literal not displayed */
	SyncCommitteeReward                uint64 `protobuf:"varint,11,opt,name=sync_committee_reward,json=syncCommitteeReward,proto3" json:"sync_committee_reward,omitempty"`
	SyncCommitteePenalty               uint64 `protobuf:"varint,12,opt,name=sync_committee_penalty,json=syncCommitteePenalty,proto3" json:"sync_committee_penalty,omitempty"`
	SlashingReward                     uint64 `protobuf:"varint,13,opt,name=slashing_reward,json=slashingReward,proto3" json:"slashing_reward,omitempty"`
	SlashingPenalty                    uint64 `protobuf:"varint,14,opt,name=slashing_penalty,json=slashingPenalty,proto3" json:"slashing_penalty,omitempty"`
	TxFeeRewardWei                     []byte `protobuf:"bytes,15,opt,name=tx_fee_reward_wei,json=txFeeRewardWei,proto3" json:"tx_fee_reward_wei,omitempty"`
	ProposalsMissed                    uint64 `protobuf:"varint,16,opt,name=proposals_missed,json=proposalsMissed,proto3" json:"proposals_missed,omitempty"`
	// contains filtered or unexported fields
}

func (*ValidatorEpochIncome) Descriptor deprecated

func (*ValidatorEpochIncome) Descriptor() ([]byte, []int)

Deprecated: Use ValidatorEpochIncome.ProtoReflect.Descriptor instead.

func (*ValidatorEpochIncome) GetAttestationHeadReward

func (x *ValidatorEpochIncome) GetAttestationHeadReward() uint64

func (*ValidatorEpochIncome) GetAttestationSourcePenalty

func (x *ValidatorEpochIncome) GetAttestationSourcePenalty() uint64

func (*ValidatorEpochIncome) GetAttestationSourceReward

func (x *ValidatorEpochIncome) GetAttestationSourceReward() uint64

func (*ValidatorEpochIncome) GetAttestationTargetPenalty

func (x *ValidatorEpochIncome) GetAttestationTargetPenalty() uint64

func (*ValidatorEpochIncome) GetAttestationTargetReward

func (x *ValidatorEpochIncome) GetAttestationTargetReward() uint64

func (*ValidatorEpochIncome) GetFinalityDelayPenalty

func (x *ValidatorEpochIncome) GetFinalityDelayPenalty() uint64

func (*ValidatorEpochIncome) GetProposalsMissed

func (x *ValidatorEpochIncome) GetProposalsMissed() uint64

func (*ValidatorEpochIncome) GetProposerAttestationInclusionReward

func (x *ValidatorEpochIncome) GetProposerAttestationInclusionReward() uint64

func (*ValidatorEpochIncome) GetProposerSlashingInclusionReward

func (x *ValidatorEpochIncome) GetProposerSlashingInclusionReward() uint64

func (*ValidatorEpochIncome) GetProposerSyncInclusionReward

func (x *ValidatorEpochIncome) GetProposerSyncInclusionReward() uint64

func (*ValidatorEpochIncome) GetSlashingPenalty

func (x *ValidatorEpochIncome) GetSlashingPenalty() uint64

func (*ValidatorEpochIncome) GetSlashingReward

func (x *ValidatorEpochIncome) GetSlashingReward() uint64

func (*ValidatorEpochIncome) GetSyncCommitteePenalty

func (x *ValidatorEpochIncome) GetSyncCommitteePenalty() uint64

func (*ValidatorEpochIncome) GetSyncCommitteeReward

func (x *ValidatorEpochIncome) GetSyncCommitteeReward() uint64

func (*ValidatorEpochIncome) GetTxFeeRewardWei

func (x *ValidatorEpochIncome) GetTxFeeRewardWei() []byte

func (*ValidatorEpochIncome) ProtoMessage

func (*ValidatorEpochIncome) ProtoMessage()

func (*ValidatorEpochIncome) ProtoReflect

func (x *ValidatorEpochIncome) ProtoReflect() protoreflect.Message

func (*ValidatorEpochIncome) Reset

func (x *ValidatorEpochIncome) Reset()

func (*ValidatorEpochIncome) String

func (x *ValidatorEpochIncome) String() string

type ValidatorsResponse

type ValidatorsResponse struct {
	Data []Validator `json:"data"`
}

type VoluntaryExitMessage

type VoluntaryExitMessage struct {
	Epoch          uinteger `json:"epoch"`
	ValidatorIndex uinteger `json:"validator_index"`
}

type VoluntaryExitRequest

type VoluntaryExitRequest struct {
	Message   VoluntaryExitMessage `json:"message"`
	Signature byteArray            `json:"signature"`
}

Request types

type WithdrawalPayload

type WithdrawalPayload struct {
	Index          uinteger `json:"index"`
	ValidatorIndex uinteger `json:"validator_index"`
	Address        string   `json:"address"`
	Amount         uinteger `json:"amount"`
}

Jump to

Keyboard shortcuts

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