Crate finality_grandpa[][src]

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

round

Logic for a single round of GRANDPA.

vote_graph

Maintains the vote-graph of the blockchain.

voter

A voter in GRANDPA. This transitions between rounds and casts votes.

voter_set

Implementation of a VoterSet, representing the complete set of voters and their weights in the context of a round of the protocol.

Structs

CatchUp

A catch-up message, which is an aggregate of prevotes and precommits necessary to complete a round.

Commit

A commit message which is an aggregate of precommits.

CommitValidationResult

Struct returned from validate_commit function with information about the validation result.

CompactCommit

A commit message with compact representation of authentication data.

Equivocation

An equivocation (double-vote) in a given round.

HistoricalVotes

Historical votes seen in a round.

Precommit

A precommit for a block and its ancestors.

Prevote

A prevote for a block and its ancestors.

PrimaryPropose

A primary proposed block, this is a broadcast of the last round's estimate.

SignedMessage

A signed message.

SignedPrecommit

A signed precommit message.

SignedPrevote

A signed prevote message.

Enums

Error

Top-level error type used by this crate.

Message

A protocol message or vote.

Traits

BlockNumberOps

Arithmetic necessary for a block number.

Chain

Chain context necessary for implementation of the finality gadget.

Functions

process_commit_validation_result

Runs the callback with the appropriate CommitProcessingOutcome based on the given CommitValidationResult. Outcome is bad if ghost is undefined, good otherwise.

validate_commit

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

MultiAuthData

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.