/HoneyBadgerBFT-Python

The Honey Badger of BFT Protocols

Primary LanguagePythonOtherNOASSERTION

HoneyBadgerBFT

The Honey Badger of BFT Protocols.

Travis branch Codecov branch

HoneyBadgerBFT is a leaderless and completely asynchronous BFT consensus protocols. This makes it a good fit for blockchains deployed over wide area networks or when adversarial conditions are expected. HoneyBadger nodes can even stay hidden behind anonymizing relays like Tor, and the purely-asynchronous protocol will make progress at whatever rate the network supports.

This repository contains a Python implementation of the HoneyBadgerBFT protocol. It is still a prototype, and is not approved for production use. It is intended to serve as a useful reference and alternative implementations for other projects.

Development Activities

Since its initial implementation, the project has gone through a substantial refactoring, and is currently under active development.

At the moment, the following three milestones are being focused on:

A roadmap of the project can be found in ROADMAP.rst.

Contributing

Contributions are welcomed! To quickly get setup for development:

  1. Fork the repository and clone your fork. (See the Github Guide Forking Projects if needed.)

  2. Install Docker. (For Linux, see Manage Docker as a non-root user to run docker without sudo.)

  3. Install docker-compose.

  4. Run the tests (the first time will take longer as the image will be built):

    $ docker-compose run --rm honeybadger

    The tests should pass, and you should also see a small code coverage report output to the terminal.

If the above went all well, you should be setup for developing HoneyBadgerBFT-Python!

License

This is released under the CRAPL academic license. See ./CRAPL-LICENSE.txt Other licenses may be issued at the authors' discretion.