mirror of https://github.com/poanetwork/hbbft.git
Header reorganization and spacing considerations
This commit is contained in:
parent
5855c4ffe7
commit
307c94ca95
28
README.md
28
README.md
|
@ -1,27 +1,27 @@
|
|||
# Honey Badger Byzantine Fault Tolerant (BFT) consensus algorithm
|
||||
|
||||
[![Build Status](https://travis-ci.com/poanetwork/hbbft.svg?branch=master)](https://travis-ci.com/poanetwork/hbbft)
|
||||
[![Gitter](https://badges.gitter.im/poanetwork/hbbft.svg)](https://gitter.im/poanetwork/hbbft?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge)
|
||||
|
||||
# Honey Badger Byzantine Fault Tolerant (BFT) consensus algorithm
|
||||
|
||||
Welcome to a [Rust ](https://www.rust-lang.org/en-US/)library of the Honey Badger Byzantine Fault Tolerant (BFT) consensus algorithm. The research and protocols for this algorithm are explained in detail in "[The Honey Badger of BFT Protocols](https://eprint.iacr.org/2016/199.pdf)" by Miller et al.
|
||||
Welcome to a [Rust](https://www.rust-lang.org/en-US/) library of the Honey Badger Byzantine Fault Tolerant (BFT) consensus algorithm. The research and protocols for this algorithm are explained in detail in "[The Honey Badger of BFT Protocols](https://eprint.iacr.org/2016/199.pdf)" by Miller et al.
|
||||
|
||||
This documentation is designed for Rust developers looking to use a resilient consensus algorithm on a distributed network. Following is an overview of HoneyBadger BFT and basic instructions for getting started.
|
||||
|
||||
**Note:** This library is a work in progress and parts of the algorithm are still in development.
|
||||
|
||||
# What is Honey Badger?
|
||||
## What is Honey Badger?
|
||||
The Honey Badger consensus algorithm allows nodes in a distributed, potentially asynchronous environment (decentralized databases and blockchains) to achieve agreement on transactions. The agreement process does not require a leader node, tolerates corrupted nodes, and makes progress in adverse network conditions.
|
||||
|
||||
Honey Badger is **Byzantine Fault Tolerant**. The protocol can reach consensus with a number of failed nodes f (including complete takeover by an attacker), as long as the total number N of nodes is greater than 3 * f.
|
||||
|
||||
Honey Badger is **asynchronous**. It does not make timing assumptions about message delivery. An adversary can control network scheduling and delay messages without impacting consensus.
|
||||
|
||||
# How does it work?
|
||||
## How does it work?
|
||||
Honey Badger is a modular library composed of several independent algorithms. To reach consensus, Honey Badger proceeds in epochs. In each epoch, participating nodes broadcast a set of encrypted data transactions to one another and agree on the contents of those transactions.
|
||||
|
||||
In an optimal networking environment, output includes data sent from each node. In an adverse environment, the output is an agreed upon subset of data. Either way, the resulting output contains a batch of transactions which is guaranteed to be consistent across all nodes.
|
||||
|
||||
## Algorithms
|
||||
### Algorithms
|
||||
|
||||
All algorithms in the protocol are modular and usable. Encryption to provide censorship resistance is currently in process for the top level Honey Badger algorithm.
|
||||
|
||||
|
@ -36,7 +36,7 @@ All algorithms in the protocol are modular and usable. Encryption to provide cen
|
|||
- [x] **[Coin](https://github.com/poanetwork/hbbft/blob/master/src/common_coin.rs):** A pseudorandom binary value used by the Binary Agreement protocol.
|
||||
|
||||
|
||||
## Current TODOs
|
||||
### Current TODOs
|
||||
|
||||
- [ ] Honey Badger encryption
|
||||
|
||||
|
@ -44,20 +44,20 @@ All algorithms in the protocol are modular and usable. Encryption to provide cen
|
|||
|
||||
- [ ] Networking example to detail Honey Badger implementation
|
||||
|
||||
# Getting Started
|
||||
## Getting Started
|
||||
|
||||
This Rust library requires a distributed network environment to function. Details on network requirements will be published in the [Rust package registry](https://crates.io/) once core algorithms are complete.
|
||||
|
||||
**Note: Additional examples are currently in progress.**
|
||||
|
||||
|
||||
## Build
|
||||
### Build
|
||||
|
||||
```
|
||||
$ cargo build [--release]
|
||||
```
|
||||
|
||||
## Example Network Simulation
|
||||
### Example Network Simulation
|
||||
|
||||
An example is included to run a simulation of a network using serialization-serde ([https://serde.rs/](https://serde.rs/)) to efficiently serialize and deserialize Rust data structures.
|
||||
|
||||
|
@ -65,17 +65,17 @@ An example is included to run a simulation of a network using serialization-serd
|
|||
$ cargo run --example simulation --features=serialization-serde -- -h
|
||||
```
|
||||
|
||||
# Contributing
|
||||
## Contributing
|
||||
|
||||
Please look at [current issues](https://github.com/poanetwork/hbbft/issues) and read [CONTRIBUTING.md](CONTRIBUTING.md) for contribution and pull request protocol.
|
||||
|
||||
# License
|
||||
## License
|
||||
|
||||
[![License: LGPL v3]([https://img.shields.io/badge/License-LGPL%20v3-blue.svg](https://img.shields.io/badge/License-LGPL%20v3-blue.svg))]([https://www.gnu.org/licenses/lgpl-3.0](https://www.gnu.org/licenses/lgpl-3.0))
|
||||
|
||||
This project is licensed under the GNU Lesser General Public License v3.0. See the [LICENSE](LICENSE) file for details.
|
||||
|
||||
# References
|
||||
## References
|
||||
|
||||
* [The Honey Badger of BFT Protocols](https://eprint.iacr.org/2016/199.pdf)
|
||||
|
||||
|
@ -83,6 +83,6 @@ This project is licensed under the GNU Lesser General Public License v3.0. See t
|
|||
|
||||
* Other language implementations
|
||||
|
||||
* [Go ](https://github.com/anthdm/hbbft)
|
||||
* [Go](https://github.com/anthdm/hbbft)
|
||||
|
||||
* [Erlang](https://github.com/helium/erlang-hbbft)
|
||||
|
|
Loading…
Reference in New Issue