package
1.2.0
Repository: https://github.com/renproject/hyperdrive.git
Documentation: pkg.go.dev

# Functions

DefaultState returns a State with all values set to the default.
New Process initialised to the default state, starting in the first round.
NewInbox returns an inbox for one type of message.
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
Sign a message using an ECDSA private key.
Verify that the signature in a message is from the expected signatory.

# Constants

NilMessageType is invalid and must not be used.
PrecommitMessageType is used by messages that are precommitting for block hashes (or nil precommitting).
PrevoteMessageType is used by messages that are prevoting for block hashes (or nil prevoting).
ProposeMessageType is used by messages that propose blocks for consensus.
ResyncMessageType is used by messages that query others for previous messages.
Define all Steps.
Define all Steps.
Define all Steps.
Define all Steps.

# Variables

ErrBlockHashNotProvided is returned when querying the block hash for a message type that does not implement the function.

# Structs

An Inbox is storage container for one type message.
The LatestCommit can be attached to a proposal.
Precommit a block hash.
Prevote for a block hash.
A Process defines a state machine in the distributed replicated state machine.
Propose a block for committment.
Resync previous messages.
The State of a Process.

# Interfaces

A Blockchain defines a storage interface for Blocks that is based around Height.
A Broadcaster sends a Message to a either specific Process or as many Processes in the network as possible.
The Message interface defines the common behaviour of all messages that are broadcast throughout the network during consensus rounds.
An Observer is notified when note-worthy events happen for the first time.
A Proposer builds a `block.Block` for proposals.
A SaveRestorer defines a storage interface for the State.
A Scheduler determines which `id.Signatory` should be broadcasting proposals in at a given `block.Height` and `block.Round`.
A Timer determines the timeout duration at a given Step and `block.Round`.
A Validator validates a `block.Block` that has been proposed.

# Type aliases

Messages is a wrapper around the `[]Message` type.
MessageType distinguished between the three valid (and one invalid) messages types that are supported during consensus rounds.
NilReasons can be used to provide contextual information alongside an error upon validating blocks.
Precommits is a wrapper around the `[]Precommit` type.
Prevotes is a wrapper around the `[]Prevote` type.
Processes defines a wrapper type around the []Process type.
Proposes is a wrapper around the `[]Propose` type.
Resyncs is a wrapper around the `[]Resync` type.
Step in the consensus algorithm.