mirror of
https://gitlab.com/pulsechaincom/prysm-pulse.git
synced 2025-01-12 04:30:04 +00:00
df8da80db8
* send proposer data to config * wip implementation with file and url based config import * improving logic on get validator index * fix function * optimizing function for map and address bug * fixing log * update cache if it doesn't exist * updating flags * initial unit test scaffold * fixing validator to call rpc call, removed temporary dependency * adding the API calls for the runner * fixing broken build * fixing deepsource * fixing interface * fixing fatal * fixing more deepsource issues * adding test placeholders * updating proposer config to add validation * changing how if statement throws error * removing unneeded validation, validating in a different way * wip improving tests * more unit test work * fixing unit test * fixing unit tests and edge cases * adding unit tests and adjusting how the config is created * fixing bazel builds * fixing proto generation * fixing imports * fixing unit tests * Update cmd/validator/flags/flags.go Co-authored-by: Raul Jordan <raul@prysmaticlabs.com> * updating flags based on comments, fixing unit tests * fixing bazel * removing unneeded function * fixing unit tests * refactors and unit test fixes based on comments * fixing bazel build * refactor the cache out fo the fee recipient function * adding usecase for multiple fee recipient * refactor burn name * Update validator/client/validator.go Co-authored-by: Raul Jordan <raul@prysmaticlabs.com> * Update validator/client/validator.go Co-authored-by: Raul Jordan <raul@prysmaticlabs.com> * Update validator/client/validator.go Co-authored-by: Raul Jordan <raul@prysmaticlabs.com> * fixing bug with validator index based on code review * edited flag descriptions to better communicate usage * fixing manual reference to flag name * fixing code review comments * fixing linting * Update validator/client/validator.go Co-authored-by: Raul Jordan <raul@prysmaticlabs.com> * addressing comments and renaming functions * fixing linting * Update cmd/validator/flags/flags.go * Update cmd/validator/flags/flags.go * Update cmd/validator/flags/flags.go * improving comments Co-authored-by: Raul Jordan <raul@prysmaticlabs.com>
62 lines
2.8 KiB
Go
62 lines
2.8 KiB
Go
package iface
|
|
|
|
import (
|
|
"context"
|
|
"errors"
|
|
"time"
|
|
|
|
types "github.com/prysmaticlabs/eth2-types"
|
|
fieldparams "github.com/prysmaticlabs/prysm/config/fieldparams"
|
|
"github.com/prysmaticlabs/prysm/validator/keymanager"
|
|
)
|
|
|
|
// ErrConnectionIssue represents a connection problem.
|
|
var ErrConnectionIssue = errors.New("could not connect")
|
|
|
|
// ValidatorRole defines the validator role.
|
|
type ValidatorRole int8
|
|
|
|
const (
|
|
// RoleUnknown means that the role of the validator cannot be determined.
|
|
RoleUnknown ValidatorRole = iota
|
|
// RoleAttester means that the validator should submit an attestation.
|
|
RoleAttester
|
|
// RoleProposer means that the validator should propose a block.
|
|
RoleProposer
|
|
// RoleAggregator means that the validator should submit an aggregation and proof.
|
|
RoleAggregator
|
|
// RoleSyncCommittee means that the validator should submit a sync committee message.
|
|
RoleSyncCommittee
|
|
// RoleSyncCommitteeAggregator means the valiator should aggregate sync committee messages and submit a sync committee contribution.
|
|
RoleSyncCommitteeAggregator
|
|
)
|
|
|
|
// Validator interface defines the primary methods of a validator client.
|
|
type Validator interface {
|
|
Done()
|
|
WaitForChainStart(ctx context.Context) error
|
|
WaitForSync(ctx context.Context) error
|
|
WaitForActivation(ctx context.Context, accountsChangedChan chan [][fieldparams.BLSPubkeyLength]byte) error
|
|
CanonicalHeadSlot(ctx context.Context) (types.Slot, error)
|
|
NextSlot() <-chan types.Slot
|
|
SlotDeadline(slot types.Slot) time.Time
|
|
LogValidatorGainsAndLosses(ctx context.Context, slot types.Slot) error
|
|
UpdateDuties(ctx context.Context, slot types.Slot) error
|
|
RolesAt(ctx context.Context, slot types.Slot) (map[[fieldparams.BLSPubkeyLength]byte][]ValidatorRole, error) // validator pubKey -> roles
|
|
SubmitAttestation(ctx context.Context, slot types.Slot, pubKey [fieldparams.BLSPubkeyLength]byte)
|
|
ProposeBlock(ctx context.Context, slot types.Slot, pubKey [fieldparams.BLSPubkeyLength]byte)
|
|
SubmitAggregateAndProof(ctx context.Context, slot types.Slot, pubKey [fieldparams.BLSPubkeyLength]byte)
|
|
SubmitSyncCommitteeMessage(ctx context.Context, slot types.Slot, pubKey [fieldparams.BLSPubkeyLength]byte)
|
|
SubmitSignedContributionAndProof(ctx context.Context, slot types.Slot, pubKey [fieldparams.BLSPubkeyLength]byte)
|
|
LogAttestationsSubmitted()
|
|
LogNextDutyTimeLeft(slot types.Slot) error
|
|
UpdateDomainDataCaches(ctx context.Context, slot types.Slot)
|
|
WaitForKeymanagerInitialization(ctx context.Context) error
|
|
AllValidatorsAreExited(ctx context.Context) (bool, error)
|
|
Keymanager() (keymanager.IKeymanager, error)
|
|
ReceiveBlocks(ctx context.Context, connectionErrorChannel chan<- error)
|
|
HandleKeyReload(ctx context.Context, newKeys [][fieldparams.BLSPubkeyLength]byte) (bool, error)
|
|
CheckDoppelGanger(ctx context.Context) error
|
|
UpdateFeeRecipient(ctx context.Context, km keymanager.IKeymanager) error
|
|
}
|