Expand description
Finality gadget for blockchains.
https://github.com/w3f/consensus/blob/master/pdf/grandpa.pdf
Consensus proceeds in rounds. Each round, voters will cast a prevote and precommit message.
Votes on blocks are then applied to the blockchain, being recursively applied to
blocks before them. A DAG is superimposed over the blockchain with the vote_graph
logic.
Equivocation detection and vote-set management is done in the round
module.
The work for actually casting votes is done in the voter
module.
Modules§
- Logic for a single round of GRANDPA.
- Maintains the vote-graph of the blockchain.
- A voter in GRANDPA. This transitions between rounds and casts votes.
- Implementation of a
VoterSet
, representing the complete set of voters and their weights in the context of a round of the protocol.
Structs§
- A catch-up message, which is an aggregate of prevotes and precommits necessary to complete a round.
- A commit message which is an aggregate of precommits.
- Struct returned from
validate_commit
function with information about the validation result. - A commit message with compact representation of authentication data.
- An equivocation (double-vote) in a given round.
- Historical votes seen in a round.
- A precommit for a block and its ancestors.
- A prevote for a block and its ancestors.
- A primary proposed block, this is a broadcast of the last round’s estimate.
- A signed message.
- A signed precommit message.
- A signed prevote message.
Enums§
- Top-level error type used by this crate.
- A protocol message or vote.
Traits§
- Arithmetic necessary for a block number.
- Chain context necessary for implementation of the finality gadget.
Functions§
- Runs the callback with the appropriate
CommitProcessingOutcome
based on the givenCommitValidationResult
. Outcome is bad if ghost is undefined, good otherwise. - Validates a GRANDPA commit message and returns the ghost calculated using the precommits in the commit message and using the commit target as a base.
Type Aliases§
- Authentication data for a set of many messages, currently a set of precommit signatures but in the future could be optimized with BLS signature aggregation.