client

package
v1.6.1 Latest Latest
Warning

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

Go to latest
Published: May 23, 2024 License: GPL-3.0 Imports: 18 Imported by: 0

Documentation

Overview

This work is licensed and released under GNU GPL v3 or any other later versions. The full text of the license is below/ found at <http://www.gnu.org/licenses/>

(c) 2023 Rocket Pool Pty Ltd. Modified under GNU GPL v3. [1.5.0]

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with this program. If not, see <http://www.gnu.org/licenses/>.

This work is licensed and released under GNU GPL v3 or any other later versions. The full text of the license is below/ found at <http://www.gnu.org/licenses/>

(c) 2023 Rocket Pool Pty Ltd. Modified under GNU GPL v3. [1.5.0]

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with this program. If not, see <http://www.gnu.org/licenses/>.

Index

Constants

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

	RequestSyncStatusPath            = "/eth/v1/node/syncing"
	RequestNodeVersionPath           = "/eth/v1/node/version"
	RequestEth2ConfigPath            = "/eth/v1/config/spec"
	RequestEth2DepositContractMethod = "/eth/v1/config/deposit_contract"
	RequestGenesisPath               = "/eth/v1/beacon/genesis"
	RequestCommitteePath             = "/eth/v1/beacon/states/%s/committees"
	RequestFinalityCheckpointsPath   = "/eth/v1/beacon/states/%s/finality_checkpoints"
	RequestForkPath                  = "/eth/v1/beacon/states/%s/fork"
	RequestValidatorsPath            = "/eth/v1/beacon/states/%s/validators"
	RequestVoluntaryExitPath         = "/eth/v1/beacon/pool/voluntary_exits"
	RequestAttestationsPath          = "/eth/v1/beacon/blocks/%s/attestations"
	RequestBeaconBlockPath           = "/eth/v2/beacon/blocks/%s"
	RequestValidatorSyncDuties       = "/eth/v1/validator/duties/sync/%s"
	RequestValidatorProposerDuties   = "/eth/v1/validator/duties/proposer/%s"

	MaxRequestValidatorsCount = 600
)

Config

Variables

This section is empty.

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 {
	Data struct {
		Message struct {
			Slot          uinteger `json:"slot"`
			ProposerIndex uinteger `json:"proposer_index"`
			Body          struct {
				Eth1Data struct {
					DepositRoot  byteArray `json:"deposit_root"`
					DepositCount uinteger  `json:"deposit_count"`
					BlockHash    byteArray `json:"block_hash"`
				} `json:"eth1_data"`
				Attestations     []Attestation `json:"attestations"`
				ExecutionPayload *struct {
					FeeRecipient byteArray `json:"fee_recipient"`
					BlockNumber  uinteger  `json:"block_number"`
				} `json:"execution_payload"`
			} `json:"body"`
		} `json:"message"`
	} `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 NodeVersionResponse added in v1.4.9

type NodeVersionResponse struct {
	Data struct {
		Version string `json:"version"`
	} `json:"data"`
}

type ProposerDutiesResponse

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

type ProposerDuty

type ProposerDuty struct {
	ValidatorIndex uinteger `json:"validator_index"`
}

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) *StandardHttpClient

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) GetAttestations

func (c *StandardHttpClient) GetAttestations(blockId string) ([]beacon.AttestationInfo, bool, error)

func (*StandardHttpClient) GetBeaconBlock

func (c *StandardHttpClient) GetBeaconBlock(blockId string) (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) GetCommitteesForEpoch

func (c *StandardHttpClient) GetCommitteesForEpoch(epoch *uint64) ([]beacon.Committee, error)

Get the attestation committees for the given epoch, or the current epoch if nil

func (*StandardHttpClient) GetEth1DataForEth2Block

func (c *StandardHttpClient) GetEth1DataForEth2Block(blockId string) (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) GetExitDomainData added in v1.4.7

func (c *StandardHttpClient) GetExitDomainData(domainType []byte, network config.Network) ([]byte, error)

Get domain data for a domain type at a given epoch

func (*StandardHttpClient) GetNodeVersion added in v1.4.9

func (c *StandardHttpClient) GetNodeVersion() (beacon.NodeVersion, error)

func (*StandardHttpClient) GetSyncStatus

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

Get the node's sync status

func (*StandardHttpClient) GetValidatorIndex

func (c *StandardHttpClient) GetValidatorIndex(pubkey types.ValidatorPubkey) (uint64, error)

Get a validator's index

func (*StandardHttpClient) GetValidatorProposerDuties

func (c *StandardHttpClient) GetValidatorProposerDuties(indices []uint64, epoch uint64) (map[uint64]uint64, error)

Sums proposer duties per validators for a given epoch

func (*StandardHttpClient) GetValidatorStatus

Get a validator's status

func (*StandardHttpClient) GetValidatorStatusByIndex

func (c *StandardHttpClient) GetValidatorStatusByIndex(index string, opts *beacon.ValidatorStatusOptions) (beacon.ValidatorStatus, error)

func (*StandardHttpClient) GetValidatorStatuses

Get multiple validators' statuses

func (*StandardHttpClient) GetValidatorSyncDuties

func (c *StandardHttpClient) GetValidatorSyncDuties(indices []uint64, epoch uint64) (map[uint64]bool, error)

Get whether validators have sync duties to perform at given epoch

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 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

Jump to

Keyboard shortcuts

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