[][src]Crate finality_grandpa

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

bitfield

Bitfields and tools for handling equivocations.

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

Maintains the VoterSet of the blockchain.

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

threshold

Get the threshold weight given the total voting weight.

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.