privval

package
v0.0.0-...-0fb7b88 Latest Latest
Warning

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

Go to latest
Published: Feb 13, 2021 License: Apache-2.0 Imports: 21 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var (
	// ErrMissingPubKey is thrown if there is no priv_validator_key.json
	// in the configuration directory and thus no pubkey is to be found.
	ErrMissingPubKey = errors.New("no pubkey found")

	// ErrNoSigner is thrown if the validator is currently ranked #2 or lower
	// and is therefore denied signing permissions.
	ErrNoSigner = errors.New("validator has no permission to sign votes/proposals")

	// ErrUninitialized is thrown if pairmint has not yet been initialized in
	// terms of missing a pairmint.toml and the pm-identity.key.
	ErrUninitialized = errors.New("pairmint is not initialized")

	// ErrTooManyMissedBlocks is thrown if pairmint exceeds the threshold of
	// too many missed blocks in a row.
	ErrTooManyMissedBlocks = errors.New("too many missed blocks in a row")

	// ErrCatchingUp is thrown if the validator is catching up with the
	// global blockchain state.
	ErrCatchingUp = errors.New("validator is catching up")

	// ErrNoCommitSigs is thrown if the validators /commit endpoint is
	// not available and no commitsigs can be retrieved.
	ErrNoCommitSigs = errors.New("couldn't get commitsigs from validator")

	// ErrWrongChainID is thrown if an incoming request is for a different
	// chainid than the one specified in the pairmint.toml file.
	ErrWrongChainID = errors.New("wrong chainid")
)

Functions

This section is empty.

Types

type PairmintFilePV

type PairmintFilePV struct {
	// Logger is the logger used to log pairmint messages.
	Logger *log.Logger

	// Config is the node's configuration from the pairmint.toml file.
	Config *config.Config

	// MissedInARow is the counter used to count missed blocks in a row.
	MissedInARow int

	// CounterUnlocked is the toggle used for allowing the node to count
	// missed blocks in a row.
	CounterUnlocked bool

	// FilePV is Tendermint's file-based signer.
	FilePV *privval.FilePV

	// CurrentHeight keeps track of the current height based on the
	// messages pairmint receives from the validator. It is used to keep
	// track of which height the commitsigs were retrieved at.
	CurrentHeight int64
}

PairmintFilePV is a wrapper for Tendermint's FilePV. Implements the Pairminter and PrivValidator interfaces.

func NewPairmintFilePV

func NewPairmintFilePV() *PairmintFilePV

NewPairmintFilePV returns a new instance of PairmintFilePV.

func (*PairmintFilePV) GetPubKey

func (p *PairmintFilePV) GetPubKey() (tmcrypto.PubKey, error)

GetPubKey returns the public key of the validator. Implements the PrivValidator interface.

func (*PairmintFilePV) HandleMessage

func (p *PairmintFilePV) HandleMessage(msg *privvalproto.Message, pubkey tmcrypto.PubKey, rwc *connection.ReadWriteConn) error

HandleMessage handles all incoming messages from Tendermint.

func (*PairmintFilePV) Missed

func (p *PairmintFilePV) Missed() error

Missed implements the Pairminter interface.

func (*PairmintFilePV) Reset

func (p *PairmintFilePV) Reset()

Reset implements the Pairminter interface.

func (*PairmintFilePV) Run

func (p *PairmintFilePV) Run(rwc *connection.ReadWriteConn, pubkey tmcrypto.PubKey, sigCh chan os.Signal)

Run runs the routine for the file-based signer.

func (*PairmintFilePV) SignProposal

func (p *PairmintFilePV) SignProposal(chainID string, proposal *tmproto.Proposal) error

SignProposal signs a canonical representation of the proposal, along with the chainID. Implements the PrivValidator interface.

func (*PairmintFilePV) SignVote

func (p *PairmintFilePV) SignVote(chainID string, vote *tmproto.Vote) error

SignVote signs a canonical representation of the vote, along with the chainID. Implements the PrivValidator interface.

func (*PairmintFilePV) Update

func (p *PairmintFilePV) Update()

Update implements the Pairminter interface.

type Pairminter

type Pairminter interface {
	// Missed increments the internal counter for missed blocks in a
	// row. Once the threshold of too many missed blocks in a row is
	// exceeded, it throws an error.
	Missed() error

	// Reset resets the counter for missed blocks in a row.
	Reset()

	// Update performs a rank update, moving all backup nodes up one
	// rank and the current signer to the last rank.
	Update()
}

Pairminter defines the functionality of a validator that monitors the blockchain for missed blocks in a row and keeps their rank up to date.

Jump to

Keyboard shortcuts

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