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.4.4]
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.4.4]
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
- type Attestation
- type AttestationsResponse
- type BeaconBlockResponse
- type Committee
- type CommitteesResponse
- type Eth2ConfigResponse
- type Eth2DepositContractResponse
- type FinalityCheckpointsResponse
- type ForkResponse
- type GenesisResponse
- type ProposerDutiesResponse
- type ProposerDuty
- type StandardHttpClient
- func (c *StandardHttpClient) Close() error
- func (c *StandardHttpClient) ExitValidator(validatorIndex, epoch uint64, signature types.ValidatorSignature) error
- func (c *StandardHttpClient) GetAttestations(blockId string) ([]beacon.AttestationInfo, bool, error)
- func (c *StandardHttpClient) GetBeaconBlock(blockId string) (beacon.BeaconBlock, bool, error)
- func (c *StandardHttpClient) GetBeaconHead() (beacon.BeaconHead, error)
- func (c *StandardHttpClient) GetClientType() (beacon.BeaconClientType, error)
- func (c *StandardHttpClient) GetCommitteesForEpoch(epoch *uint64) ([]beacon.Committee, error)
- func (c *StandardHttpClient) GetDomainData(domainType []byte, epoch uint64, useGenesisFork bool) ([]byte, error)
- func (c *StandardHttpClient) GetEth1DataForEth2Block(blockId string) (beacon.Eth1Data, bool, error)
- func (c *StandardHttpClient) GetEth2Config() (beacon.Eth2Config, error)
- func (c *StandardHttpClient) GetEth2DepositContract() (beacon.Eth2DepositContract, error)
- func (c *StandardHttpClient) GetSyncStatus() (beacon.SyncStatus, error)
- func (c *StandardHttpClient) GetValidatorIndex(pubkey types.ValidatorPubkey) (uint64, error)
- func (c *StandardHttpClient) GetValidatorProposerDuties(indices []uint64, epoch uint64) (map[uint64]uint64, error)
- func (c *StandardHttpClient) GetValidatorStatus(pubkey types.ValidatorPubkey, opts *beacon.ValidatorStatusOptions) (beacon.ValidatorStatus, error)
- func (c *StandardHttpClient) GetValidatorStatusByIndex(index string, opts *beacon.ValidatorStatusOptions) (beacon.ValidatorStatus, error)
- func (c *StandardHttpClient) GetValidatorStatuses(pubkeys []types.ValidatorPubkey, opts *beacon.ValidatorStatusOptions) (map[types.ValidatorPubkey]beacon.ValidatorStatus, error)
- func (c *StandardHttpClient) GetValidatorSyncDuties(indices []uint64, epoch uint64) (map[uint64]bool, error)
- type SyncDutiesResponse
- type SyncDuty
- type SyncStatusResponse
- type Validator
- type ValidatorsResponse
- type VoluntaryExitMessage
- type VoluntaryExitRequest
Constants ¶
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" 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 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"`
}
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) GetDomainData ¶
func (c *StandardHttpClient) GetDomainData(domainType []byte, epoch uint64, useGenesisFork bool) ([]byte, error)
Get domain data for a domain type at a given epoch
func (*StandardHttpClient) GetEth1DataForEth2Block ¶
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) 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 ¶
func (c *StandardHttpClient) GetValidatorStatus(pubkey types.ValidatorPubkey, opts *beacon.ValidatorStatusOptions) (beacon.ValidatorStatus, error)
Get a validator's status
func (*StandardHttpClient) GetValidatorStatusByIndex ¶
func (c *StandardHttpClient) GetValidatorStatusByIndex(index string, opts *beacon.ValidatorStatusOptions) (beacon.ValidatorStatus, error)
func (*StandardHttpClient) GetValidatorStatuses ¶
func (c *StandardHttpClient) GetValidatorStatuses(pubkeys []types.ValidatorPubkey, opts *beacon.ValidatorStatusOptions) (map[types.ValidatorPubkey]beacon.ValidatorStatus, error)
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