Crate aleph_bft[][src]

Expand description

Implements the Aleph BFT Consensus protocol as a “finality gadget”. The [Member] struct requires access to a network layer, a cryptographic primitive, and a data provider that gives appropriate access to the set of available data that we need to make consensus on.

Modules

Reliable MultiCast - a primitive for Reliable Broadcast protocol.

Structs

Main configuration of the consensus. We refer to the documentation https://cardinal-cryptography.github.io/AlephBFT/aleph_bft_api.html Section 3.4 for a discussion of some of these parameters and their significance.

Keybox wrapper which implements MultiKeychain such that a partial multisignature is a list of signatures and a partial multisignature is considered complete if it contains more than 2N/3 signatures.

Configuration of several parameters related to delaying various tasks.

A pair consistsing of signable data and a NodeIndex.

Signable data together with a complete multisignature.

NetworkData is the opaque format for all data that a committee member needs to send to other nodes.

Node count. Right now it doubles as node weight in many places in the code, in the future we might need a new type for that.

The index of a node

Error type returned when a verification of a signature fails.

A correctly signed object of type T.

A pair consisting of an instance of the Signable trait and an (arbitrary) signature.

Enums

Signable data together with a valid partial multisignature.

A recipient of a message, either a specific node or everyone.

Traits

Data type that we want to order.

The source of data items that consensus should order.

A hasher, used for creating identifiers for blocks or units.

Indicates that an implementor has been assigned some index.

Abstraction of the signing data and verifying signatures.

Extends KeyBox with multisigning functionalities.

Network represents an interface for sending and receiving NetworkData.

A type to which signatures can be aggregated.

Data which can be signed.

The type used as a signature.

An abstraction for an execution engine for Rust’s asynchronous tasks.

Functions

A default configuration of what the creators of this package see as optimal parameters.

Starts the consensus algorithm as an async task. It stops establishing consensus for new data items after reaching the threshold specified in Config::max_round or upon receiving a stop signal from exit. For a detailed description of the consensus implemented by run_session see docs for devs or the original paper.

Type Definitions

Type for sending a new ordered batch of data items.

An asynchronous round of the protocol.

The number of a session for which the consensus is run.

A set of signatures of a subset of nodes serving as a (partial) multisignature

A handle for waiting the task’s completion.