privval

package
v0.26.4 Latest Latest
Warning

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

Go to latest
Published: Nov 27, 2018 License: Apache-2.0 Imports: 17 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var (
	ErrDialRetryMax       = errors.New("dialed maximum retries")
	ErrConnTimeout        = errors.New("remote signer timed out")
	ErrUnexpectedResponse = errors.New("received unexpected response")
)

Socket errors.

Functions

func RegisterRemoteSignerMsg added in v0.26.0

func RegisterRemoteSignerMsg(cdc *amino.Codec)

Types

type FilePV

type FilePV struct {
	Address       types.Address  `json:"address"`
	PubKey        crypto.PubKey  `json:"pub_key"`
	LastHeight    int64          `json:"last_height"`
	LastRound     int            `json:"last_round"`
	LastStep      int8           `json:"last_step"`
	LastSignature []byte         `json:"last_signature,omitempty"`
	LastSignBytes cmn.HexBytes   `json:"last_signbytes,omitempty"`
	PrivKey       crypto.PrivKey `json:"priv_key"`
	// contains filtered or unexported fields
}

FilePV implements PrivValidator using data persisted to disk to prevent double signing. NOTE: the directory containing the pv.filePath must already exist. It includes the LastSignature and LastSignBytes so we don't lose the signature if the process crashes after signing but before the resulting consensus message is processed.

func GenFilePV

func GenFilePV(filePath string) *FilePV

GenFilePV generates a new validator with randomly generated private key and sets the filePath, but does not call Save().

func LoadFilePV

func LoadFilePV(filePath string) *FilePV

LoadFilePV loads a FilePV from the filePath. The FilePV handles double signing prevention by persisting data to the filePath. If the filePath does not exist, the FilePV must be created manually and saved.

func LoadOrGenFilePV

func LoadOrGenFilePV(filePath string) *FilePV

LoadOrGenFilePV loads a FilePV from the given filePath or else generates a new one and saves it to the filePath.

func (*FilePV) GetAddress

func (pv *FilePV) GetAddress() types.Address

GetAddress returns the address of the validator. Implements PrivValidator.

func (*FilePV) GetPubKey

func (pv *FilePV) GetPubKey() crypto.PubKey

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

func (*FilePV) Reset

func (pv *FilePV) Reset()

Reset resets all fields in the FilePV. NOTE: Unsafe!

func (*FilePV) Save

func (pv *FilePV) Save()

Save persists the FilePV to disk.

func (*FilePV) SignHeartbeat

func (pv *FilePV) SignHeartbeat(chainID string, heartbeat *types.Heartbeat) error

SignHeartbeat signs a canonical representation of the heartbeat, along with the chainID. Implements PrivValidator.

func (*FilePV) SignProposal

func (pv *FilePV) SignProposal(chainID string, proposal *types.Proposal) error

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

func (*FilePV) SignVote

func (pv *FilePV) SignVote(chainID string, vote *types.Vote) error

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

func (*FilePV) String

func (pv *FilePV) String() string

String returns a string representation of the FilePV.

type IPCRemoteSigner added in v0.26.0

type IPCRemoteSigner struct {
	cmn.BaseService
	// contains filtered or unexported fields
}

IPCRemoteSigner is a RPC implementation of PrivValidator that listens on a unix socket.

func NewIPCRemoteSigner added in v0.26.0

func NewIPCRemoteSigner(
	logger log.Logger,
	chainID, socketAddr string,
	privVal types.PrivValidator,
) *IPCRemoteSigner

NewIPCRemoteSigner returns an instance of IPCRemoteSigner.

func (*IPCRemoteSigner) OnStart added in v0.26.0

func (rs *IPCRemoteSigner) OnStart() error

OnStart implements cmn.Service.

func (*IPCRemoteSigner) OnStop added in v0.26.0

func (rs *IPCRemoteSigner) OnStop()

OnStop implements cmn.Service.

type IPCRemoteSignerOption added in v0.26.0

type IPCRemoteSignerOption func(*IPCRemoteSigner)

IPCRemoteSignerOption sets an optional parameter on the IPCRemoteSigner.

func IPCRemoteSignerConnDeadline added in v0.26.0

func IPCRemoteSignerConnDeadline(deadline time.Duration) IPCRemoteSignerOption

IPCRemoteSignerConnDeadline sets the read and write deadline for connections from external signing processes.

func IPCRemoteSignerConnRetries added in v0.26.0

func IPCRemoteSignerConnRetries(retries int) IPCRemoteSignerOption

IPCRemoteSignerConnRetries sets the amount of attempted retries to connect.

type IPCVal added in v0.26.0

type IPCVal struct {
	cmn.BaseService
	*RemoteSignerClient
	// contains filtered or unexported fields
}

IPCVal implements PrivValidator, it uses a unix socket to request signatures from an external process.

func NewIPCVal added in v0.26.0

func NewIPCVal(
	logger log.Logger,
	socketAddr string,
) *IPCVal

NewIPCVal returns an instance of IPCVal.

func (*IPCVal) OnStart added in v0.26.0

func (sc *IPCVal) OnStart() error

OnStart implements cmn.Service.

func (*IPCVal) OnStop added in v0.26.0

func (sc *IPCVal) OnStop()

OnStop implements cmn.Service.

type IPCValOption added in v0.26.0

type IPCValOption func(*IPCVal)

IPCValOption sets an optional parameter on the SocketPV.

func IPCValConnTimeout added in v0.26.0

func IPCValConnTimeout(timeout time.Duration) IPCValOption

IPCValConnTimeout sets the read and write timeout for connections from external signing processes.

func IPCValHeartbeat added in v0.26.0

func IPCValHeartbeat(period time.Duration) IPCValOption

IPCValHeartbeat sets the period on which to check the liveness of the connected Signer connections.

type PingRequest added in v0.26.0

type PingRequest struct {
}

PingRequest is a PrivValidatorSocket message to keep the connection alive.

type PingResponse added in v0.26.0

type PingResponse struct {
}

type PubKeyMsg

type PubKeyMsg struct {
	PubKey crypto.PubKey
}

PubKeyMsg is a PrivValidatorSocket message containing the public key.

type RemoteSigner

type RemoteSigner struct {
	cmn.BaseService
	// contains filtered or unexported fields
}

RemoteSigner implements PrivValidator by dialing to a socket.

func NewRemoteSigner

func NewRemoteSigner(
	logger log.Logger,
	chainID, socketAddr string,
	privVal types.PrivValidator,
	privKey ed25519.PrivKeyEd25519,
) *RemoteSigner

NewRemoteSigner returns an instance of RemoteSigner.

func (*RemoteSigner) OnStart

func (rs *RemoteSigner) OnStart() error

OnStart implements cmn.Service.

func (*RemoteSigner) OnStop

func (rs *RemoteSigner) OnStop()

OnStop implements cmn.Service.

type RemoteSignerClient added in v0.26.0

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

RemoteSignerClient implements PrivValidator, it uses a socket to request signatures from an external process.

func NewRemoteSignerClient added in v0.26.0

func NewRemoteSignerClient(
	conn net.Conn,
) *RemoteSignerClient

NewRemoteSignerClient returns an instance of RemoteSignerClient.

func (*RemoteSignerClient) GetAddress added in v0.26.0

func (sc *RemoteSignerClient) GetAddress() types.Address

GetAddress implements PrivValidator.

func (*RemoteSignerClient) GetPubKey added in v0.26.0

func (sc *RemoteSignerClient) GetPubKey() crypto.PubKey

GetPubKey implements PrivValidator.

func (*RemoteSignerClient) Ping added in v0.26.0

func (sc *RemoteSignerClient) Ping() error

Ping is used to check connection health.

func (*RemoteSignerClient) SignHeartbeat added in v0.26.0

func (sc *RemoteSignerClient) SignHeartbeat(
	chainID string,
	heartbeat *types.Heartbeat,
) error

SignHeartbeat implements PrivValidator.

func (*RemoteSignerClient) SignProposal added in v0.26.0

func (sc *RemoteSignerClient) SignProposal(
	chainID string,
	proposal *types.Proposal,
) error

SignProposal implements PrivValidator.

func (*RemoteSignerClient) SignVote added in v0.26.0

func (sc *RemoteSignerClient) SignVote(chainID string, vote *types.Vote) error

SignVote implements PrivValidator.

type RemoteSignerError added in v0.26.0

type RemoteSignerError struct {
	// TODO(ismail): create an enum of known errors
	Code        int
	Description string
}

RemoteSignerError allows (remote) validators to include meaningful error descriptions in their reply.

func (*RemoteSignerError) Error added in v0.26.0

func (e *RemoteSignerError) Error() string

type RemoteSignerMsg added in v0.26.0

type RemoteSignerMsg interface{}

RemoteSignerMsg is sent between RemoteSigner and the RemoteSigner client.

type RemoteSignerOption

type RemoteSignerOption func(*RemoteSigner)

RemoteSignerOption sets an optional parameter on the RemoteSigner.

func RemoteSignerConnDeadline

func RemoteSignerConnDeadline(deadline time.Duration) RemoteSignerOption

RemoteSignerConnDeadline sets the read and write deadline for connections from external signing processes.

func RemoteSignerConnRetries

func RemoteSignerConnRetries(retries int) RemoteSignerOption

RemoteSignerConnRetries sets the amount of attempted retries to connect.

type SignHeartbeatRequest added in v0.26.0

type SignHeartbeatRequest struct {
	Heartbeat *types.Heartbeat
}

SignHeartbeatRequest is a PrivValidatorSocket message containing a Heartbeat.

type SignProposalRequest added in v0.26.0

type SignProposalRequest struct {
	Proposal *types.Proposal
}

SignProposalRequest is a PrivValidatorSocket message containing a Proposal.

type SignVoteRequest added in v0.26.0

type SignVoteRequest struct {
	Vote *types.Vote
}

SignVoteRequest is a PrivValidatorSocket message containing a vote.

type SignedHeartbeatResponse added in v0.26.0

type SignedHeartbeatResponse struct {
	Heartbeat *types.Heartbeat
	Error     *RemoteSignerError
}

type SignedProposalResponse added in v0.26.0

type SignedProposalResponse struct {
	Proposal *types.Proposal
	Error    *RemoteSignerError
}

type SignedVoteResponse added in v0.26.0

type SignedVoteResponse struct {
	Vote  *types.Vote
	Error *RemoteSignerError
}

SignedVoteResponse is a PrivValidatorSocket message containing a signed vote along with a potenial error message.

type TCPVal added in v0.26.0

type TCPVal struct {
	cmn.BaseService
	*RemoteSignerClient
	// contains filtered or unexported fields
}

TCPVal implements PrivValidator, it uses a socket to request signatures from an external process.

func NewTCPVal added in v0.26.0

func NewTCPVal(
	logger log.Logger,
	socketAddr string,
	privKey ed25519.PrivKeyEd25519,
) *TCPVal

NewTCPVal returns an instance of TCPVal.

func (*TCPVal) OnStart added in v0.26.0

func (sc *TCPVal) OnStart() error

OnStart implements cmn.Service.

func (*TCPVal) OnStop added in v0.26.0

func (sc *TCPVal) OnStop()

OnStop implements cmn.Service.

type TCPValOption added in v0.26.0

type TCPValOption func(*TCPVal)

TCPValOption sets an optional parameter on the SocketPV.

func TCPValAcceptDeadline added in v0.26.0

func TCPValAcceptDeadline(deadline time.Duration) TCPValOption

TCPValAcceptDeadline sets the deadline for the TCPVal listener. A zero time value disables the deadline.

func TCPValConnTimeout added in v0.26.0

func TCPValConnTimeout(timeout time.Duration) TCPValOption

TCPValConnTimeout sets the read and write timeout for connections from external signing processes.

func TCPValHeartbeat added in v0.26.0

func TCPValHeartbeat(period time.Duration) TCPValOption

TCPValHeartbeat sets the period on which to check the liveness of the connected Signer connections.

Jump to

Keyboard shortcuts

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