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.
Structs§
- 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.
- Error resulting from multisignature being incomplete.
- 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
. - Struct that holds connections to offspring and parent components/tasks and enables a clean/synchronized shutdown
- 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.
- 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 Keychain 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§
- Creates a
Config
which wraps the passed arguments.time_to_reach_max_round
is a lower bound on the time needed to reach the maximum round expected by the user and is only used for verification. - Creates a
Config
, allowing the user to omit specifying thedelay_config
in which case it will be set to default, suggested by the creators of this package.time_to_reach_max_round
is a lower bound on the time needed to reach the maximum round expected by the user and is only used for verification. - Creates a
DelayConfig
with default parameters, suggested by the creators of this package. - 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 fromexit
. For a detailed description of the consensus implemented byrun_session
see docs for devs or the original paper.
Type Aliases§
- 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.