Asynchronously safe BFT consensus, implementation in Rust
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
src
.gitignore
.travis.yml
Cargo.toml
LICENSE
README.md

README.md

Rhododendron

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.