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.


Main configuration of the consensus. We refer to the documentation Section 3.4 for a discussion of some of these parameters and their significance.

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

A container keeping items indexed by NodeIndex.

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.


Signable data together with a valid partial multisignature.

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


Data type that we want to order.

The source of data items that consensus should order.

The source of finalization of the units that consensus produces.

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.


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

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.