Asynchronously safe BFT consensus, implementation in Rust
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Type Name Latest commit message Commit time
Failed to load latest commit information.


Futures-based BFT in Rust. Mostly works, but not ready for production.

Most of the work is done with the agree function:

pub fn agree<C: Context, I, O>(context: C, nodes: usize, max_faulty: usize, input: I, output: O)
	-> Agreement<C, I, O>
    // ...

There are three parts to invoking agree:

  • A Context, encapsulating value type to be agreed upon, as well as generation, evaluation, and signatures on values.
  • An input stream of messages from other nodes.
  • An output sink of messages which will reach all other honest nodes.

This yields an Agreement which can be run on an event loop to completion.