Crate finality_grandpa
source · [−]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
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 given CommitValidationResult
. 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 Definitions
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.