Skip to content

Latest commit

 

History

History
137 lines (112 loc) · 6.13 KB

ROADMAP.rst

File metadata and controls

137 lines (112 loc) · 6.13 KB

Roadmap

The project is currently focusing on three milestones:

  • Bounded Badger: A more secure HoneyBadgerBFT that no longer requires unbounded buffers for protocol messages.
  • Test Network: HoneyBadgerBFT in action with a long-running test network.
  • Release 1.0: Towards a better and more stable HoneyBadgerBFT Python implementation.

An overview of each milestone is given below.

The main goal of this milestone is to implement a CHECKPOINT mechanism that will allow the HoneyBadgerBFT protocol to only require bounded storage. Please see amiller/honeybadgerbft#57 for a detailed description of the issue, its motivation, and benefits.

Overall, this should make HoneyBadgerBFT more secure, (e.g.: resilient to DoS attacks), and provide a way for nodes to catch up when they fall out of sync.

The completion of this milestone will involve the following implementations:

  • Tests that reproduce problems stemming from the unbounded-buffers approach (#17).
  • Threshold signature upon the finalization of a block of transactions ( #15).
  • Broadcasting and reception of CHECKPOINT messages along with a "message bounding" behavior (#16).
  • Message bounding of ABA (#22).
  • Recovery mechanism aka "speedybadger" (#18, #21, #33).
  • Garbage collection of "outdated" outgoing protocol messages (#19, #7).

To stay up-to-date with the issues the milestone comprises, see the milestone on Github at https://github.com/initc3/HoneyBadgerBFT-Python/milestone/3.

At a minimum this milestone wishes to have a long running test network deployed of approximately 10+ nodes.

The network will be administered by a trusted party to start with, and will consist of nodes running the Python implementation. In the near future, we would like to have an heteregenous network such that some nodes also run implementations written in other languages (e.g.: Go, Rust, Erlang, Haskell).

In order to support the delpoyment and operation of the test network, the following tasks are planned:

  • Persistence layer for transactions, blocks, and "system state" (#20, #21).
  • Update and fix the relevant legacy experiments, including benchmark tests (#23).
  • Provide authenticated communications, with persistent connections (#25, #26).
  • Setup minimal logging infrastructure to help monitoring and troubleshooting (#24).
  • Provide a basic dashboard to view the network's state and activity (#27, #35).

To stay up-to-date with the issues the milestone comprises, see the milestone on Github at https://github.com/initc3/HoneyBadgerBFT-Python/milestone/2.

Release planned to appear after the completion of the bounded badger and test network milestones.

This milestone aims to make the implementation of better quality by addressing most of the opened issues, meaning:

  • Resolving opened bugs (#31, #46).
  • Making sure the subprotocols are well tested (#34).
  • Implementing the proposed batch size to be floor(B/N) (#28).
  • Implementing a coin schedule for ABA (#38).
  • Properly handling redundant messages in ABA (#10).
  • Providing an overall good documentation of the project (#30, #43).
  • Implementing general best software engineering practices (#13, #14, #29, #32, #40, #41, #42, #44).

To stay up-to-date with the issues the milestone comprises, see the milestone on Github at https://github.com/initc3/HoneyBadgerBFT-Python/milestone/1.

For Future Milestones

Message Formats

Serialization/deserialization of messages using protocol buffers.

Distributed Key Generation

Dynamic addition and removal of nodes.