Crate aleph_bft

source ·
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 the delay_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 from exit. For a detailed description of the consensus implemented by run_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.