client

package
v1.0.0-alpha.22 Latest Latest
Warning

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

Go to latest
Published: Aug 16, 2020 License: GPL-3.0 Imports: 50 Imported by: 11

Documentation

Overview

Package client represents a gRPC polling-based implementation of an eth2 validator client.

Index

Constants

This section is empty.

Variables

View Source
var (
	// ValidatorStatusesGaugeVec used to track validator statuses by public key.
	ValidatorStatusesGaugeVec = promauto.NewGaugeVec(
		prometheus.GaugeOpts{
			Namespace: "validator",
			Name:      "statuses",
			Help:      "validator statuses: 0 UNKNOWN, 1 DEPOSITED, 2 PENDING, 3 ACTIVE, 4 EXITING, 5 SLASHING, 6 EXITED",
		},
		[]string{

			"pubkey",
		},
	)
	// ValidatorAggSuccessVec used to count successful aggregations.
	ValidatorAggSuccessVec = promauto.NewCounterVec(
		prometheus.CounterOpts{
			Namespace: "validator",
			Name:      "successful_aggregations",
		},
		[]string{

			"pubkey",
		},
	)
	// ValidatorAggFailVec used to count failed aggregations.
	ValidatorAggFailVec = promauto.NewCounterVec(
		prometheus.CounterOpts{
			Namespace: "validator",
			Name:      "failed_aggregations",
		},
		[]string{

			"pubkey",
		},
	)
	// ValidatorProposeSuccessVec used to count successful proposals.
	ValidatorProposeSuccessVec = promauto.NewCounterVec(
		prometheus.CounterOpts{
			Namespace: "validator",
			Name:      "successful_proposals",
		},
		[]string{

			"pubkey",
		},
	)
	// ValidatorProposeFailVec used to count failed proposals.
	ValidatorProposeFailVec = promauto.NewCounterVec(
		prometheus.CounterOpts{
			Namespace: "validator",
			Name:      "failed_proposals",
		},
		[]string{

			"pubkey",
		},
	)
	// ValidatorProposeFailVecSlasher used to count failed proposals by slashing protection.
	ValidatorProposeFailVecSlasher = promauto.NewCounterVec(
		prometheus.CounterOpts{
			Name: "validator_proposals_rejected_total",
			Help: "Count the block proposals rejected by slashing protection.",
		},
		[]string{

			"pubkey",
		},
	)
	// ValidatorBalancesGaugeVec used to keep track of validator balances by public key.
	ValidatorBalancesGaugeVec = promauto.NewGaugeVec(
		prometheus.GaugeOpts{
			Namespace: "validator",
			Name:      "balance",
			Help:      "current validator balance.",
		},
		[]string{

			"pubkey",
		},
	)
	// ValidatorAttestSuccessVec used to count successful attestations.
	ValidatorAttestSuccessVec = promauto.NewCounterVec(
		prometheus.CounterOpts{
			Namespace: "validator",
			Name:      "successful_attestations",
		},
		[]string{

			"pubkey",
		},
	)
	// ValidatorAttestFailVec used to count failed attestations.
	ValidatorAttestFailVec = promauto.NewCounterVec(
		prometheus.CounterOpts{
			Namespace: "validator",
			Name:      "failed_attestations",
		},
		[]string{

			"pubkey",
		},
	)
	// ValidatorAttestFailVecSlasher used to count failed attestations by slashing protection.
	ValidatorAttestFailVecSlasher = promauto.NewCounterVec(
		prometheus.CounterOpts{
			Name: "validator_attestations_rejected_total",
			Help: "Count the attestations rejected by slashing protection.",
		},
		[]string{

			"pubkey",
		},
	)
)

Functions

func ConstructDialOptions added in v1.0.0

func ConstructDialOptions(
	maxCallRecvMsgSize int,
	withCert string,
	grpcHeaders []string,
	grpcRetries uint,
	grpcRetryDelay time.Duration,
	extraOpts ...grpc.DialOption,
) []grpc.DialOption

ConstructDialOptions constructs a list of grpc dial options

Types

type Config

type Config struct {
	Endpoint                   string
	DataDir                    string
	CertFlag                   string
	GraffitiFlag               string
	ValidatingPubKeys          [][48]byte
	KeyManager                 keymanager.KeyManager
	KeyManagerV2               v2.IKeymanager
	LogValidatorBalances       bool
	EmitAccountMetrics         bool
	GrpcMaxCallRecvMsgSizeFlag int
	GrpcRetriesFlag            uint
	GrpcRetryDelay             time.Duration
	GrpcHeadersFlag            string
	Protector                  slashingprotection.Protector
	ValDB                      db.Database
	Validator                  Validator
}

Config for the validator service.

type FakeValidator added in v1.0.0

type FakeValidator struct {
	DoneCalled                       bool
	WaitForActivationCalled          bool
	WaitForChainStartCalled          bool
	WaitForSyncCalled                bool
	WaitForSyncedCalled              bool
	SlasherReadyCalled               bool
	NextSlotCalled                   bool
	CanonicalHeadSlotCalled          bool
	UpdateDutiesCalled               bool
	UpdateProtectionsCalled          bool
	RoleAtCalled                     bool
	AttestToBlockHeadCalled          bool
	ProposeBlockCalled               bool
	LogValidatorGainsAndLossesCalled bool
	SaveProtectionsCalled            bool
	SlotDeadlineCalled               bool
	ProposeBlockArg1                 uint64
	AttestToBlockHeadArg1            uint64
	RoleAtArg1                       uint64
	UpdateDutiesArg1                 uint64
	NextSlotRet                      <-chan uint64
	PublicKey                        string
	UpdateDutiesRet                  error
	RolesAtRet                       []ValidatorRole
	Balances                         map[[48]byte]uint64
	IndexToPubkeyMap                 map[uint64][48]byte
	PubkeyToIndexMap                 map[[48]byte]uint64
	PubkeysToStatusesMap             map[[48]byte]ethpb.ValidatorStatus
}

FakeValidator for mocking.

func (*FakeValidator) BalancesByPubkeys added in v1.0.0

func (fv *FakeValidator) BalancesByPubkeys(ctx context.Context) map[[48]byte]uint64

BalancesByPubkeys for mocking.

func (*FakeValidator) CanonicalHeadSlot added in v1.0.0

func (fv *FakeValidator) CanonicalHeadSlot(_ context.Context) (uint64, error)

CanonicalHeadSlot for mocking.

func (*FakeValidator) Done added in v1.0.0

func (fv *FakeValidator) Done()

Done for mocking.

func (*FakeValidator) IndicesToPubkeys added in v1.0.0

func (fv *FakeValidator) IndicesToPubkeys(ctx context.Context) map[uint64][48]byte

IndicesToPubkeys for mocking.

func (*FakeValidator) LogAttestationsSubmitted added in v1.0.0

func (fv *FakeValidator) LogAttestationsSubmitted()

LogAttestationsSubmitted for mocking.

func (*FakeValidator) LogValidatorGainsAndLosses added in v1.0.0

func (fv *FakeValidator) LogValidatorGainsAndLosses(_ context.Context, slot uint64) error

LogValidatorGainsAndLosses for mocking.

func (*FakeValidator) NextSlot added in v1.0.0

func (fv *FakeValidator) NextSlot() <-chan uint64

NextSlot for mocking.

func (*FakeValidator) ProposeBlock added in v1.0.0

func (fv *FakeValidator) ProposeBlock(_ context.Context, slot uint64, pubKey [48]byte)

ProposeBlock for mocking.

func (*FakeValidator) PubkeysToIndices added in v1.0.0

func (fv *FakeValidator) PubkeysToIndices(ctx context.Context) map[[48]byte]uint64

PubkeysToIndices for mocking.

func (*FakeValidator) PubkeysToStatuses added in v1.0.0

func (fv *FakeValidator) PubkeysToStatuses(ctx context.Context) map[[48]byte]ethpb.ValidatorStatus

PubkeysToStatuses for mocking.

func (*FakeValidator) RolesAt added in v1.0.0

func (fv *FakeValidator) RolesAt(_ context.Context, slot uint64) (map[[48]byte][]ValidatorRole, error)

RolesAt for mocking.

func (*FakeValidator) SaveProtections

func (fv *FakeValidator) SaveProtections(_ context.Context) error

SaveProtections for mocking.

func (*FakeValidator) SlasherReady added in v1.0.0

func (fv *FakeValidator) SlasherReady(_ context.Context) error

SlasherReady for mocking.

func (*FakeValidator) SlotDeadline added in v1.0.0

func (fv *FakeValidator) SlotDeadline(_ uint64) time.Time

SlotDeadline for mocking.

func (*FakeValidator) SubmitAggregateAndProof added in v1.0.0

func (fv *FakeValidator) SubmitAggregateAndProof(_ context.Context, slot uint64, pubKey [48]byte)

SubmitAggregateAndProof for mocking.

func (*FakeValidator) SubmitAttestation added in v1.0.0

func (fv *FakeValidator) SubmitAttestation(_ context.Context, slot uint64, pubKey [48]byte)

SubmitAttestation for mocking.

func (*FakeValidator) UpdateDomainDataCaches added in v1.0.0

func (fv *FakeValidator) UpdateDomainDataCaches(context.Context, uint64)

UpdateDomainDataCaches for mocking.

func (*FakeValidator) UpdateDuties added in v1.0.0

func (fv *FakeValidator) UpdateDuties(_ context.Context, slot uint64) error

UpdateDuties for mocking.

func (*FakeValidator) UpdateProtections added in v1.0.0

func (fv *FakeValidator) UpdateProtections(_ context.Context, slot uint64) error

UpdateProtections for mocking.

func (*FakeValidator) WaitForActivation added in v1.0.0

func (fv *FakeValidator) WaitForActivation(_ context.Context) error

WaitForActivation for mocking.

func (*FakeValidator) WaitForChainStart added in v1.0.0

func (fv *FakeValidator) WaitForChainStart(_ context.Context) error

WaitForChainStart for mocking.

func (*FakeValidator) WaitForSync added in v1.0.0

func (fv *FakeValidator) WaitForSync(_ context.Context) error

WaitForSync for mocking.

func (*FakeValidator) WaitForSynced

func (fv *FakeValidator) WaitForSynced(_ context.Context) error

WaitForSynced for mocking.

type Validator

type Validator interface {
	Done()
	WaitForChainStart(ctx context.Context) error
	WaitForSync(ctx context.Context) error
	WaitForSynced(ctx context.Context) error
	WaitForActivation(ctx context.Context) error
	SlasherReady(ctx context.Context) error
	CanonicalHeadSlot(ctx context.Context) (uint64, error)
	NextSlot() <-chan uint64
	SlotDeadline(slot uint64) time.Time
	LogValidatorGainsAndLosses(ctx context.Context, slot uint64) error
	UpdateDuties(ctx context.Context, slot uint64) error
	UpdateProtections(ctx context.Context, slot uint64) error
	RolesAt(ctx context.Context, slot uint64) (map[[48]byte][]ValidatorRole, error) // validator pubKey -> roles
	SubmitAttestation(ctx context.Context, slot uint64, pubKey [48]byte)
	ProposeBlock(ctx context.Context, slot uint64, pubKey [48]byte)
	SubmitAggregateAndProof(ctx context.Context, slot uint64, pubKey [48]byte)
	LogAttestationsSubmitted()
	SaveProtections(ctx context.Context) error
	UpdateDomainDataCaches(ctx context.Context, slot uint64)
	BalancesByPubkeys(ctx context.Context) map[[48]byte]uint64
	IndicesToPubkeys(ctx context.Context) map[uint64][48]byte
	PubkeysToIndices(ctx context.Context) map[[48]byte]uint64
	PubkeysToStatuses(ctx context.Context) map[[48]byte]ethpb.ValidatorStatus
}

Validator interface defines the primary methods of a validator client.

type ValidatorRole added in v1.0.0

type ValidatorRole int8

ValidatorRole defines the validator role.

type ValidatorService

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

ValidatorService represents a service to manage the validator client routine.

func NewValidatorService

func NewValidatorService(ctx context.Context, cfg *Config) (*ValidatorService, error)

NewValidatorService creates a new validator service for the service registry.

func (*ValidatorService) Start

func (v *ValidatorService) Start()

Start the validator service. Launches the main go routine for the validator client.

func (*ValidatorService) Status

func (v *ValidatorService) Status() error

Status ...

WIP - not done.

func (*ValidatorService) Stop

func (v *ValidatorService) Stop() error

Stop the validator service.

func (*ValidatorService) ValidatorBalances

func (v *ValidatorService) ValidatorBalances(ctx context.Context) map[[48]byte]uint64

ValidatorBalances returns the validator balances mapping keyed by public keys.

func (*ValidatorService) ValidatorIndicesToPubkeys

func (v *ValidatorService) ValidatorIndicesToPubkeys(ctx context.Context) map[uint64][48]byte

ValidatorIndicesToPubkeys returns the validator indices mapping keyed by public keys.

func (*ValidatorService) ValidatorPubkeysToIndices

func (v *ValidatorService) ValidatorPubkeysToIndices(ctx context.Context) map[[48]byte]uint64

ValidatorPubkeysToIndices returns the validator public keys mapping keyed by indices.

func (*ValidatorService) ValidatorPubkeysToStatuses

func (v *ValidatorService) ValidatorPubkeysToStatuses(ctx context.Context) map[[48]byte]ethpb.ValidatorStatus

ValidatorPubkeysToStatuses returns the validator statuses mapping keyed by public keys.

Jump to

Keyboard shortcuts

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