consensus

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: 22 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var NullRoot phase0.Root = phase0.Root{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}

Functions

This section is empty.

Types

type BlobScheduleEntry added in v1.18.0

type BlobScheduleEntry struct {
	Epoch            uint64 `yaml:"EPOCH"`
	MaxBlobsPerBlock uint64 `yaml:"MAX_BLOBS_PER_BLOCK"`
}

type ChainSpec

type ChainSpec struct {
	ChainSpecConfig      `yaml:",inline"`
	ChainSpecPreset      `yaml:",inline"`
	ChainSpecDomainTypes `yaml:",inline"`
}

func (*ChainSpec) CheckMismatch

func (chain *ChainSpec) CheckMismatch(chain2 *ChainSpec) ([]SpecMismatch, error)

func (*ChainSpec) Clone

func (chain *ChainSpec) Clone() *ChainSpec

func (*ChainSpec) ParseAdditive added in v1.19.2

func (chain *ChainSpec) ParseAdditive(values map[string]interface{}) error

type ChainSpecConfig added in v1.19.2

type ChainSpecConfig struct {
	PresetBase string `yaml:"PRESET_BASE"`
	ConfigName string `yaml:"CONFIG_NAME" check-if:"false"`

	// Transition
	TerminalTotalDifficulty          string `yaml:"TERMINAL_TOTAL_DIFFICULTY"            check-severity:"warning"`
	TerminalBlockHash                []byte `yaml:"TERMINAL_BLOCK_HASH"                  check-severity:"warning"`
	TerminalBlockHashActivationEpoch uint64 `yaml:"TERMINAL_BLOCK_HASH_ACTIVATION_EPOCH" check-severity:"warning"`

	// Genesis
	MinGenesisActiveValidatorCount uint64         `yaml:"MIN_GENESIS_ACTIVE_VALIDATOR_COUNT"`
	MinGenesisTime                 uint64         `yaml:"MIN_GENESIS_TIME"`
	GenesisForkVersion             phase0.Version `yaml:"GENESIS_FORK_VERSION"`
	GenesisDelay                   uint64         `yaml:"GENESIS_DELAY"`

	// Forking
	AltairForkVersion    phase0.Version `yaml:"ALTAIR_FORK_VERSION"    check-if-fork:"AltairForkEpoch"`
	AltairForkEpoch      *uint64        `yaml:"ALTAIR_FORK_EPOCH"      check-if-fork:"AltairForkEpoch"`
	BellatrixForkVersion phase0.Version `yaml:"BELLATRIX_FORK_VERSION" check-if-fork:"BellatrixForkEpoch"`
	BellatrixForkEpoch   *uint64        `yaml:"BELLATRIX_FORK_EPOCH"   check-if-fork:"BellatrixForkEpoch"`
	CapellaForkVersion   phase0.Version `yaml:"CAPELLA_FORK_VERSION"   check-if-fork:"CapellaForkEpoch"`
	CapellaForkEpoch     *uint64        `yaml:"CAPELLA_FORK_EPOCH"     check-if-fork:"CapellaForkEpoch"`
	DenebForkVersion     phase0.Version `yaml:"DENEB_FORK_VERSION"     check-if-fork:"DenebForkEpoch"`
	DenebForkEpoch       *uint64        `yaml:"DENEB_FORK_EPOCH"       check-if-fork:"DenebForkEpoch"`
	ElectraForkVersion   phase0.Version `yaml:"ELECTRA_FORK_VERSION"   check-if-fork:"ElectraForkEpoch"`
	ElectraForkEpoch     *uint64        `yaml:"ELECTRA_FORK_EPOCH"     check-if-fork:"ElectraForkEpoch"`
	FuluForkVersion      phase0.Version `yaml:"FULU_FORK_VERSION"      check-if-fork:"FuluForkEpoch"`
	FuluForkEpoch        *uint64        `yaml:"FULU_FORK_EPOCH"        check-if-fork:"FuluForkEpoch"`

	// Time parameters
	SecondsPerSlot                  uint64 `yaml:"SECONDS_PER_SLOT"`
	SecondsPerEth1Block             uint64 `yaml:"SECONDS_PER_ETH1_BLOCK"`
	MinValidatorWithdrawbilityDelay uint64 `yaml:"MIN_VALIDATOR_WITHDRAWABILITY_DELAY"`
	ShardCommitteePeriod            uint64 `yaml:"SHARD_COMMITTEE_PERIOD"`
	Eth1FollowDistance              uint64 `yaml:"ETH1_FOLLOW_DISTANCE"`

	// Validator cycle
	InactivityScoreBias             uint64 `yaml:"INACTIVITY_SCORE_BIAS"`
	InactivityScoreRecoveryRate     uint64 `yaml:"INACTIVITY_SCORE_RECOVERY_RATE"`
	EjectionBalance                 uint64 `yaml:"EJECTION_BALANCE"`
	MinPerEpochChurnLimit           uint64 `yaml:"MIN_PER_EPOCH_CHURN_LIMIT"`
	ChurnLimitQuotient              uint64 `yaml:"CHURN_LIMIT_QUOTIENT"`
	MaxPerEpochActivationChurnLimit uint64 `yaml:"MAX_PER_EPOCH_ACTIVATION_CHURN_LIMIT"`

	// fork choice
	ProposerScoreBoost              uint64 `yaml:"PROPOSER_SCORE_BOOST"`
	ReorgHeadWeightThreshold        uint64 `yaml:"REORG_HEAD_WEIGHT_THRESHOLD"`
	ReorgParentWeightThreshold      uint64 `yaml:"REORG_PARENT_WEIGHT_THRESHOLD"`
	ReorgMaxEpochsSinceFinalization uint64 `yaml:"REORG_MAX_EPOCHS_SINCE_FINALIZATION"`

	// Deposit contract
	DepositChainId         uint64 `yaml:"DEPOSIT_CHAIN_ID"`
	DepositNetworkId       uint64 `yaml:"DEPOSIT_NETWORK_ID"`
	DepositContractAddress []byte `yaml:"DEPOSIT_CONTRACT_ADDRESS"`

	// Networking
	MaxPayloadSize                   uint64            `yaml:"MAX_PAYLOAD_SIZE"`
	MaxRequestBlocks                 uint64            `yaml:"MAX_REQUEST_BLOCKS"`
	EpochsPerSubnetSubscription      uint64            `yaml:"EPOCHS_PER_SUBNET_SUBSCRIPTION"`
	MinEpochsForBlockRequests        uint64            `yaml:"MIN_EPOCHS_FOR_BLOCK_REQUESTS"`
	AttestationPropoagationSlotRange uint64            `yaml:"ATTESTATION_PROPAGATION_SLOT_RANGE"`
	MaximumGossipClockDisparity      uint64            `yaml:"MAXIMUM_GOSSIP_CLOCK_DISPARITY"`
	MessageDomainInvalidSnappy       phase0.DomainType `yaml:"MESSAGE_DOMAIN_INVALID_SNAPPY"`
	MessageDomainValidSnappy         phase0.DomainType `yaml:"MESSAGE_DOMAIN_VALID_SNAPPY"`
	SubnetsPerNode                   uint64            `yaml:"SUBNETS_PER_NODE"`
	AttestationSubnetCount           uint64            `yaml:"ATTESTATION_SUBNET_COUNT"`
	AttestationSubnetExtraBits       uint64            `yaml:"ATTESTATION_SUBNET_EXTRA_BITS"`
	AttestationSubnetPrefixBits      uint64            `yaml:"ATTESTATION_SUBNET_PREFIX_BITS"`

	// Deneb
	MaxRequestBlocksDeneb            uint64 `yaml:"MAX_REQUEST_BLOCKS_DENEB"              check-if-fork:"DenebForkEpoch"`
	MinEpochsForBlobSidecarsRequests uint64 `yaml:"MIN_EPOCHS_FOR_BLOB_SIDECARS_REQUESTS" check-if-fork:"DenebForkEpoch"`
	BlobSidecarSubnetCount           uint64 `yaml:"BLOB_SIDECAR_SUBNET_COUNT"             check-if-fork:"DenebForkEpoch"`
	MaxBlobsPerBlock                 uint64 `yaml:"MAX_BLOBS_PER_BLOCK"                   check-if-fork:"DenebForkEpoch"`
	MaxRequestBlobSidecars           uint64 `yaml:"MAX_REQUEST_BLOB_SIDECARS"             check-if-fork:"DenebForkEpoch"`

	// Electra
	MinPerEpochChurnLimitElectra        uint64 `yaml:"MIN_PER_EPOCH_CHURN_LIMIT_ELECTRA"         check-if-fork:"ElectraForkEpoch"`
	MaxPerEpochActivationExitChurnLimit uint64 `yaml:"MAX_PER_EPOCH_ACTIVATION_EXIT_CHURN_LIMIT" check-if-fork:"ElectraForkEpoch"`
	BlobSidecarSubnetCountElectra       uint64 `yaml:"BLOB_SIDECAR_SUBNET_COUNT_ELECTRA"         check-if-fork:"ElectraForkEpoch"`
	MaxBlobsPerBlockElectra             uint64 `yaml:"MAX_BLOBS_PER_BLOCK_ELECTRA"               check-if-fork:"ElectraForkEpoch"`
	MaxRequestBlobSidecarsElectra       uint64 `yaml:"MAX_REQUEST_BLOB_SIDECARS_ELECTRA"         check-if-fork:"ElectraForkEpoch"`

	// Fulu
	MinEpochsForDataColumnSidecars   uint64              `yaml:"MIN_EPOCHS_FOR_DATA_COLUMN_SIDECARS_REQUESTS"  check-if-fork:"FuluForkEpoch"`
	NumberOfCustodyGroups            *uint64             `yaml:"NUMBER_OF_CUSTODY_GROUPS"                      check-if-fork:"FuluForkEpoch"`
	DataColumnSidecarSubnetCount     *uint64             `yaml:"DATA_COLUMN_SIDECAR_SUBNET_COUNT"              check-if-fork:"FuluForkEpoch"`
	MaxRequestDataColumnSidecars     uint64              `yaml:"MAX_REQUEST_DATA_COLUMN_SIDECARS"              check-if-fork:"FuluForkEpoch"`
	SamplesPerSlot                   uint64              `yaml:"SAMPLES_PER_SLOT"                              check-if-fork:"FuluForkEpoch"`
	CustodyRequirement               *uint64             `yaml:"CUSTODY_REQUIREMENT"                           check-if-fork:"FuluForkEpoch"`
	ValidatorCustodyRequirement      *uint64             `yaml:"VALIDATOR_CUSTODY_REQUIREMENT"                 check-if-fork:"FuluForkEpoch"`
	BalancePerAdditionalCustodyGroup *uint64             `yaml:"BALANCE_PER_ADDITIONAL_CUSTODY_GROUP"          check-if-fork:"FuluForkEpoch"`
	BlobSchedule                     []BlobScheduleEntry `yaml:"BLOB_SCHEDULE"                                 check-if-fork:"FuluForkEpoch"`
}

https://github.com/ethereum/consensus-specs/blob/dev/configs/mainnet.yaml

type ChainSpecDomainTypes added in v1.19.2

type ChainSpecDomainTypes struct {
	DomainBeaconProposer              phase0.DomainType `yaml:"DOMAIN_BEACON_PROPOSER"`
	DomainBeaconAttester              phase0.DomainType `yaml:"DOMAIN_BEACON_ATTESTER"`
	DomainRandao                      phase0.DomainType `yaml:"DOMAIN_RANDAO"`
	DomainDeposit                     phase0.DomainType `yaml:"DOMAIN_DEPOSIT"`
	DomainVoluntaryExit               phase0.DomainType `yaml:"DOMAIN_VOLUNTARY_EXIT"`
	DomainSelectionProof              phase0.DomainType `yaml:"DOMAIN_SELECTION_PROOF"`
	DomainAggregateAndProof           phase0.DomainType `yaml:"DOMAIN_AGGREGATE_AND_PROOF"`
	DomainSyncCommittee               phase0.DomainType `yaml:"DOMAIN_SYNC_COMMITTEE"`
	DomainSyncCommitteeSelectionProof phase0.DomainType `yaml:"DOMAIN_SYNC_COMMITTEE_SELECTION_PROOF"`
	DomainContributionAndProof        phase0.DomainType `yaml:"DOMAIN_CONTRIBUTION_AND_PROOF"`
	DomainBlsToExecutionChange        phase0.DomainType `yaml:"DOMAIN_BLS_TO_EXECUTION_CHANGE"`
}

type ChainSpecPreset added in v1.19.2

type ChainSpecPreset struct {
	// Presets
	MaxCommitteesPerSlot           uint64 `yaml:"MAX_COMMITTEES_PER_SLOT"`
	TargetCommitteeSize            uint64 `yaml:"TARGET_COMMITTEE_SIZE"`
	MaxValidatorsPerCommittee      uint64 `yaml:"MAX_VALIDATORS_PER_COMMITTEE"`
	ShuffleRoundCount              uint64 `yaml:"SHUFFLE_ROUND_COUNT"`
	HysteresisQuotient             uint64 `yaml:"HYSTERESIS_QUOTIENT"`
	HysteresisDownwardMultiplier   uint64 `yaml:"HYSTERESIS_DOWNWARD_MULTIPLIER"`
	HysteresisUpwardMultiplier     uint64 `yaml:"HYSTERESIS_UPWARD_MULTIPLIER"`
	MinDepositAmount               uint64 `yaml:"MIN_DEPOSIT_AMOUNT"`
	MaxEffectiveBalance            uint64 `yaml:"MAX_EFFECTIVE_BALANCE"`
	EffectiveBalanceIncrement      uint64 `yaml:"EFFECTIVE_BALANCE_INCREMENT"`
	MinAttestationInclusionDelay   uint64 `yaml:"MIN_ATTESTATION_INCLUSION_DELAY"`
	SlotsPerEpoch                  uint64 `yaml:"SLOTS_PER_EPOCH"`
	MinSeedLookahead               uint64 `yaml:"MIN_SEED_LOOKAHEAD"`
	MaxSeedLookahead               uint64 `yaml:"MAX_SEED_LOOKAHEAD"`
	EpochsPerEth1VotingPeriod      uint64 `yaml:"EPOCHS_PER_ETH1_VOTING_PERIOD"`
	SlotsPerHistoricalRoot         uint64 `yaml:"SLOTS_PER_HISTORICAL_ROOT"`
	MinEpochsToInactivityPenalty   uint64 `yaml:"MIN_EPOCHS_TO_INACTIVITY_PENALTY"`
	EpochsPerHistoricalVector      uint64 `yaml:"EPOCHS_PER_HISTORICAL_VECTOR"`
	EpochsPerSlashingVector        uint64 `yaml:"EPOCHS_PER_SLASHINGS_VECTOR"`
	HistoricalRootsLimit           uint64 `yaml:"HISTORICAL_ROOTS_LIMIT"`
	ValidatorRegistryLimit         uint64 `yaml:"VALIDATOR_REGISTRY_LIMIT"`
	BaseRewardFactor               uint64 `yaml:"BASE_REWARD_FACTOR"`
	WhitelistRewardQuotient        uint64 `yaml:"WHISTLEBLOWER_REWARD_QUOTIENT"`
	ProposerRewardQuotient         uint64 `yaml:"PROPOSER_REWARD_QUOTIENT"`
	InactivityPenaltyQuotient      uint64 `yaml:"INACTIVITY_PENALTY_QUOTIENT"`
	MinSlashingPenaltyQuotient     uint64 `yaml:"MIN_SLASHING_PENALTY_QUOTIENT"`
	ProportionalSlashingMultiplier uint64 `yaml:"PROPORTIONAL_SLASHING_MULTIPLIER"`
	MaxProposerSlashings           uint64 `yaml:"MAX_PROPOSER_SLASHINGS"`
	MaxAttesterSlashings           uint64 `yaml:"MAX_ATTESTER_SLASHINGS"`
	MaxAttestations                uint64 `yaml:"MAX_ATTESTATIONS"`
	MaxDeposits                    uint64 `yaml:"MAX_DEPOSITS"`
	MaxVoluntaryExits              uint64 `yaml:"MAX_VOLUNTARY_EXITS"`

	// Altair
	InactivityPenaltyQuotientAltair      uint64 `yaml:"INACTIVITY_PENALTY_QUOTIENT_ALTAIR" check-if-fork:"AltairForkEpoch"`
	MinSlashingPenaltyQuotientAltair     uint64 `yaml:"MIN_SLASHING_PENALTY_QUOTIENT_ALTAIR" check-if-fork:"AltairForkEpoch"`
	ProportionalSlashingMultiplierAltair uint64 `yaml:"PROPORTIONAL_SLASHING_MULTIPLIER_ALTAIR" check-if-fork:"AltairForkEpoch"`
	SyncCommitteeSize                    uint64 `yaml:"SYNC_COMMITTEE_SIZE" check-if-fork:"AltairForkEpoch"`
	EpochsPerSyncCommitteePeriod         uint64 `yaml:"EPOCHS_PER_SYNC_COMMITTEE_PERIOD" check-if-fork:"AltairForkEpoch"`
	MinSyncCommitteeParticipants         uint64 `yaml:"MIN_SYNC_COMMITTEE_PARTICIPANTS" check-if-fork:"AltairForkEpoch"`
	UpdateTimeout                        uint64 `yaml:"UPDATE_TIMEOUT" check-if-fork:"AltairForkEpoch"`

	// Bellatrix
	InactivityPenaltyQuotientBellatrix      uint64 `yaml:"INACTIVITY_PENALTY_QUOTIENT_BELLATRIX" check-if-fork:"BellatrixForkEpoch"`
	MinSlashingPenaltyQuotientBellatrix     uint64 `yaml:"MIN_SLASHING_PENALTY_QUOTIENT_BELLATRIX" check-if-fork:"BellatrixForkEpoch"`
	ProportionalSlashingMultiplierBellatrix uint64 `yaml:"PROPORTIONAL_SLASHING_MULTIPLIER_BELLATRIX" check-if-fork:"BellatrixForkEpoch"`
	MaxBytesPerTransaction                  uint64 `yaml:"MAX_BYTES_PER_TRANSACTION" check-if-fork:"BellatrixForkEpoch"`
	MaxTransactionsPerPayload               uint64 `yaml:"MAX_TRANSACTIONS_PER_PAYLOAD" check-if-fork:"BellatrixForkEpoch"`
	BytesPerLogsBloom                       uint64 `yaml:"BYTES_PER_LOGS_BLOOM" check-if-fork:"BellatrixForkEpoch"`
	MaxExtraDataBytes                       uint64 `yaml:"MAX_EXTRA_DATA_BYTES" check-if-fork:"BellatrixForkEpoch"`

	// Capella
	MaxBlsToExecutionChanges         uint64 `yaml:"MAX_BLS_TO_EXECUTION_CHANGES" check-if-fork:"CapellaForkEpoch"`
	MaxWithdrawalsPerPayload         uint64 `yaml:"MAX_WITHDRAWALS_PER_PAYLOAD" check-if-fork:"CapellaForkEpoch"`
	MaxValidatorsPerWithdrawalsSweep uint64 `yaml:"MAX_VALIDATORS_PER_WITHDRAWALS_SWEEP" check-if-fork:"CapellaForkEpoch"`

	// Deneb
	MaxBlobCommitmentsPerBlock       uint64 `yaml:"MAX_BLOB_COMMITMENTS_PER_BLOCK" check-if-fork:"DenebForkEpoch"`
	KzgCommitmentInclusionProofDepth uint64 `yaml:"KZG_COMMITMENT_INCLUSION_PROOF_DEPTH" check-if-fork:"DenebForkEpoch"`
	FieldElementsPerBlob             uint64 `yaml:"FIELD_ELEMENTS_PER_BLOB" check-if-fork:"DenebForkEpoch"`

	// Electra
	MinActivationBalance                  uint64 `yaml:"MIN_ACTIVATION_BALANCE" check-if-fork:"ElectraForkEpoch"`
	MaxEffectiveBalanceElectra            uint64 `yaml:"MAX_EFFECTIVE_BALANCE_ELECTRA" check-if-fork:"ElectraForkEpoch"`
	MinSlashingPenaltyQuotientElectra     uint64 `yaml:"MIN_SLASHING_PENALTY_QUOTIENT_ELECTRA" check-if-fork:"ElectraForkEpoch"`
	WhistleblowerRewardQuotientElectra    uint64 `yaml:"WHISTLEBLOWER_REWARD_QUOTIENT_ELECTRA" check-if-fork:"ElectraForkEpoch"`
	PendingDepositsLimit                  uint64 `yaml:"PENDING_DEPOSITS_LIMIT" check-if-fork:"ElectraForkEpoch"`
	PendingPartialWithdrawalsLimit        uint64 `yaml:"PENDING_PARTIAL_WITHDRAWALS_LIMIT" check-if-fork:"ElectraForkEpoch"`
	PendingConsolidationsLimit            uint64 `yaml:"PENDING_CONSOLIDATIONS_LIMIT" check-if-fork:"ElectraForkEpoch"`
	MaxAttesterSlashingsElectra           uint64 `yaml:"MAX_ATTESTER_SLASHINGS_ELECTRA" check-if-fork:"ElectraForkEpoch"`
	MaxAttestationsElectra                uint64 `yaml:"MAX_ATTESTATIONS_ELECTRA" check-if-fork:"ElectraForkEpoch"`
	MaxDepositRequestsPerPayload          uint64 `yaml:"MAX_DEPOSIT_REQUESTS_PER_PAYLOAD" check-if-fork:"ElectraForkEpoch"`
	MaxWithdrawalRequestsPerPayload       uint64 `yaml:"MAX_WITHDRAWAL_REQUESTS_PER_PAYLOAD" check-if-fork:"ElectraForkEpoch"`
	MaxConsolidationRequestsPerPayload    uint64 `yaml:"MAX_CONSOLIDATION_REQUESTS_PER_PAYLOAD" check-if-fork:"ElectraForkEpoch"`
	MaxPendingPartialsPerWithdrawalsSweep uint64 `yaml:"MAX_PENDING_PARTIALS_PER_WITHDRAWALS_SWEEP" check-if-fork:"ElectraForkEpoch"`
	MaxPendingDepositsPerEpoch            uint64 `yaml:"MAX_PENDING_DEPOSITS_PER_EPOCH" check-if-fork:"ElectraForkEpoch"`

	// Fulu
	KzgCommitmentsInclusionProofDepth uint64  `yaml:"KZG_COMMITMENTS_INCLUSION_PROOF_DEPTH" check-if-fork:"FuluForkEpoch"`
	FieldElementsPerCell              uint64  `yaml:"FIELD_ELEMENTS_PER_CELL" check-if-fork:"FuluForkEpoch"`
	FieldElementsPerExtBlob           uint64  `yaml:"FIELD_ELEMENTS_PER_EXT_BLOB" check-if-fork:"FuluForkEpoch"`
	CellsPerExtBlob                   uint64  `yaml:"CELLS_PER_EXT_BLOB" check-if-fork:"FuluForkEpoch"`
	NumberOfColumns                   *uint64 `yaml:"NUMBER_OF_COLUMNS" check-if-fork:"FuluForkEpoch"`
}

type ChainState

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

func (*ChainState) CurrentEpoch

func (cs *ChainState) CurrentEpoch() phase0.Epoch

func (*ChainState) CurrentSlot

func (cs *ChainState) CurrentSlot() phase0.Slot

func (*ChainState) EpochOfSlot

func (cs *ChainState) EpochOfSlot(slot phase0.Slot) phase0.Epoch

func (*ChainState) EpochStartSlot

func (cs *ChainState) EpochStartSlot(epoch phase0.Epoch) phase0.Slot

func (*ChainState) EpochToSlot

func (cs *ChainState) EpochToSlot(epoch phase0.Epoch) phase0.Slot

func (*ChainState) EpochToTime

func (cs *ChainState) EpochToTime(epoch phase0.Epoch) time.Time

func (*ChainState) GetActivationExitChurnLimit added in v1.15.0

func (cs *ChainState) GetActivationExitChurnLimit(totalActiveBalance uint64) uint64

func (*ChainState) GetBalanceChurnLimit added in v1.15.0

func (cs *ChainState) GetBalanceChurnLimit(totalActiveBalance uint64) uint64

func (*ChainState) GetFinalizedCheckpoint

func (cs *ChainState) GetFinalizedCheckpoint() (phase0.Epoch, phase0.Root)

func (*ChainState) GetFinalizedSlot

func (cs *ChainState) GetFinalizedSlot() phase0.Slot

func (*ChainState) GetForkDigest added in v1.18.0

func (cs *ChainState) GetForkDigest(forkVersion phase0.Version, blobParams *BlobScheduleEntry) phase0.ForkDigest

func (*ChainState) GetForkDigestForEpoch added in v1.18.0

func (cs *ChainState) GetForkDigestForEpoch(epoch phase0.Epoch) phase0.ForkDigest

func (*ChainState) GetForkVersionAtEpoch added in v1.18.0

func (cs *ChainState) GetForkVersionAtEpoch(epoch phase0.Epoch) phase0.Version

func (*ChainState) GetGenesis

func (cs *ChainState) GetGenesis() *v1.Genesis

func (*ChainState) GetJustifiedCheckpoint

func (cs *ChainState) GetJustifiedCheckpoint() (phase0.Epoch, phase0.Root)

func (*ChainState) GetSpecs

func (cs *ChainState) GetSpecs() *ChainSpec

func (*ChainState) GetValidatorChurnLimit

func (cs *ChainState) GetValidatorChurnLimit(validatorCount uint64) uint64

func (*ChainState) SlotToSlotIndex

func (cs *ChainState) SlotToSlotIndex(slot phase0.Slot) phase0.Slot

func (*ChainState) SlotToTime

func (cs *ChainState) SlotToTime(slot phase0.Slot) time.Time

func (*ChainState) TimeToSlot

func (cs *ChainState) TimeToSlot(timestamp time.Time) phase0.Slot

type Client

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

func (*Client) ForceUpdateNodeMetadata added in v1.17.0

func (client *Client) ForceUpdateNodeMetadata(ctx context.Context) error

ForceUpdateNodeMetadata forces an immediate update of node metadata including ENRs, bypassing the normal epoch-based update schedule

func (*Client) GetClientType

func (client *Client) GetClientType() ClientType

func (*Client) GetContext

func (client *Client) GetContext() context.Context

func (*Client) GetEndpointConfig

func (client *Client) GetEndpointConfig() *ClientConfig

func (*Client) GetFinalityCheckpoint

func (client *Client) GetFinalityCheckpoint() (finalitedEpoch phase0.Epoch, finalizedRoot phase0.Root, justifiedEpoch phase0.Epoch, justifiedRoot phase0.Root)

func (*Client) GetIndex

func (client *Client) GetIndex() uint16

func (*Client) GetLastClientError

func (client *Client) GetLastClientError() error

func (*Client) GetLastError

func (client *Client) GetLastError() error

func (*Client) GetLastEventTime

func (client *Client) GetLastEventTime() time.Time

func (*Client) GetLastHead

func (client *Client) GetLastHead() (phase0.Slot, phase0.Root)

func (*Client) GetName

func (client *Client) GetName() string

func (*Client) GetNodeIdentity added in v1.11.2

func (client *Client) GetNodeIdentity() *rpc.NodeIdentity

func (*Client) GetNodePeers

func (client *Client) GetNodePeers() []*v1.Peer

func (*Client) GetPool

func (client *Client) GetPool() *Pool

func (*Client) GetRPCClient

func (client *Client) GetRPCClient() *rpc.BeaconClient

func (*Client) GetSpecWarnings added in v1.19.0

func (client *Client) GetSpecWarnings() []string

func (*Client) GetSpecs added in v1.19.2

func (client *Client) GetSpecs() map[string]interface{}

func (*Client) GetStatus

func (client *Client) GetStatus() ClientStatus

func (*Client) GetVersion

func (client *Client) GetVersion() string

func (*Client) SubscribeBlockEvent

func (client *Client) SubscribeBlockEvent(capacity int, blocking bool) *utils.Subscription[*v1.BlockEvent]

func (*Client) SubscribeFinalizedEvent

func (client *Client) SubscribeFinalizedEvent(capacity int) *utils.Subscription[*v1.Finality]

func (*Client) SubscribeHeadEvent

func (client *Client) SubscribeHeadEvent(capacity int, blocking bool) *utils.Subscription[*v1.HeadEvent]

type ClientConfig

type ClientConfig struct {
	URL        string
	Name       string
	Headers    map[string]string
	SshConfig  *sshtunnel.SshConfig
	DisableSSZ bool
}

type ClientStatus

type ClientStatus uint8
var (
	ClientStatusOnline        ClientStatus = 1
	ClientStatusOffline       ClientStatus = 2
	ClientStatusSynchronizing ClientStatus = 3
	ClientStatusOptimistic    ClientStatus = 4
)

func (ClientStatus) String

func (s ClientStatus) String() string

type ClientType

type ClientType int8
var (
	AnyClient        ClientType
	UnknownClient    ClientType = -1
	LighthouseClient ClientType = 1
	LodestarClient   ClientType = 2
	NimbusClient     ClientType = 3
	PrysmClient      ClientType = 4
	TekuClient       ClientType = 5
	GrandineClient   ClientType = 6
	CaplinClient     ClientType = 7
)

func ParseClientType

func ParseClientType(name string) ClientType

func (ClientType) String

func (clientType ClientType) String() string

type ForkVersion

type ForkVersion struct {
	Epoch           uint64
	CurrentVersion  []byte
	PreviousVersion []byte
}

type Pool

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

func NewPool

func NewPool(ctx context.Context, logger logrus.FieldLogger) *Pool

func (*Pool) AddEndpoint

func (pool *Pool) AddEndpoint(endpoint *ClientConfig) (*Client, error)

func (*Pool) AwaitReadyEndpoint

func (pool *Pool) AwaitReadyEndpoint(ctx context.Context, clientType ClientType) *Client

func (*Pool) GetAllEndpoints

func (pool *Pool) GetAllEndpoints() []*Client

func (*Pool) GetChainState

func (pool *Pool) GetChainState() *ChainState

func (*Pool) GetReadyEndpoint

func (pool *Pool) GetReadyEndpoint(clientType ClientType) *Client

func (*Pool) SubscribeFinalizedEvent

func (pool *Pool) SubscribeFinalizedEvent(capacity int) *utils.Subscription[*v1.Finality]

func (*Pool) SubscribeWallclockEpochEvent

func (pool *Pool) SubscribeWallclockEpochEvent(capacity int) *utils.Subscription[*ethwallclock.Epoch]

func (*Pool) SubscribeWallclockSlotEvent

func (pool *Pool) SubscribeWallclockSlotEvent(capacity int) *utils.Subscription[*ethwallclock.Slot]

type SpecMismatch added in v1.19.3

type SpecMismatch struct {
	Name     string
	Severity string
}

Directories

Path Synopsis
rpc

Jump to

Keyboard shortcuts

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