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.
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.