|
| 1 | +******* |
| 2 | +Roadmap |
| 3 | +******* |
| 4 | +The project is currently focusing on three milestones: |
| 5 | + |
| 6 | +* `Bounded Badger`_: A more secure HoneyBadgerBFT that no longer requires |
| 7 | + unbounded buffers for protocol messages. |
| 8 | +* `Test Network`_: HoneyBadgerBFT in action with a long-running test network. |
| 9 | +* `Release 1.0`_: Towards a better and more stable HoneyBadgerBFT Python |
| 10 | + implementation. |
| 11 | + |
| 12 | +An overview of each milestone is given below. |
| 13 | + |
| 14 | + |
| 15 | +`Bounded Badger`_ |
| 16 | +================= |
| 17 | +The main goal of this milestone is to implement a CHECKPOINT mechanism that |
| 18 | +will allow the HoneyBadgerBFT protocol to only require bounded storage. Please |
| 19 | +see `amiller/honeybadgerbft#57`_ for a detailed description of the issue, its |
| 20 | +motivation, and benefits. |
| 21 | + |
| 22 | +Overall, this should make HoneyBadgerBFT more secure, (e.g.: resilient to DoS |
| 23 | +attacks), and provide a way for nodes to catch up when they fall out of sync. |
| 24 | + |
| 25 | +The completion of this milestone will involve the following implementations: |
| 26 | + |
| 27 | +* Tests that reproduce problems stemming from the unbounded-buffers approach |
| 28 | + (`#17`_). |
| 29 | +* Threshold signature upon the finalization of a block of transactions ( |
| 30 | + `#15`_). |
| 31 | +* Broadcasting and reception of CHECKPOINT messages along with a "message |
| 32 | + bounding" behavior (`#16`_). |
| 33 | +* Message bounding of ABA (`#22`_). |
| 34 | +* Recovery mechanism aka "speedybadger" (`#18`_, `#21`_, `#33`_). |
| 35 | +* Garbage collection of "outdated" outgoing protocol messages (`#19`_, `#7`_). |
| 36 | + |
| 37 | +To stay up-to-date with the issues the milestone comprises, see the milestone |
| 38 | +on Github at https://github.com/initc3/HoneyBadgerBFT-Python/milestone/3. |
| 39 | + |
| 40 | + |
| 41 | +`Test Network`_ |
| 42 | +=============== |
| 43 | +At a minimum this milestone wishes to have a long running test network |
| 44 | +deployed of approximately 10+ nodes. |
| 45 | + |
| 46 | +The network will be administered by a trusted party to start with, and |
| 47 | +will consist of nodes running the Python implementation. In the near future, |
| 48 | +we would like to have an heteregenous network such that some nodes also run |
| 49 | +implementations written in other languages (e.g.: Go, Rust, Erlang, Haskell). |
| 50 | + |
| 51 | +In order to support the delpoyment and operation of the test network, the |
| 52 | +following tasks are planned: |
| 53 | + |
| 54 | +* Persistence layer for transactions, blocks, and "system state" (`#20`_, |
| 55 | + `#21`_). |
| 56 | +* Update and fix the relevant legacy experiments, including benchmark tests |
| 57 | + (`#23`_). |
| 58 | +* Provide authenticated communications, with persistent connections (`#25`_, |
| 59 | + `#26`_). |
| 60 | +* Setup minimal logging infrastructure to help monitoring and troubleshooting |
| 61 | + (`#24`_). |
| 62 | +* Provide a basic dashboard to view the network's state and activity (`#27`_, |
| 63 | + `#35`_). |
| 64 | + |
| 65 | +To stay up-to-date with the issues the milestone comprises, see the milestone |
| 66 | +on Github at https://github.com/initc3/HoneyBadgerBFT-Python/milestone/2. |
| 67 | + |
| 68 | + |
| 69 | +`Release 1.0`_ |
| 70 | +============== |
| 71 | +Release planned to appear after the completion of the bounded badger and |
| 72 | +test network milestones. |
| 73 | + |
| 74 | +This milestone aims to make the implementation of better quality by addressing |
| 75 | +most of the opened issues, meaning: |
| 76 | + |
| 77 | +* Resolving opened bugs (`#31`_, `#46`_). |
| 78 | +* Making sure the subprotocols are well tested (`#34`_). |
| 79 | +* Implementing the proposed batch size to be floor(B/N) (`#28`_). |
| 80 | +* Implementing a coin schedule for ABA (`#38`_). |
| 81 | +* Properly handling redundant messages in ABA (`#10`_). |
| 82 | +* Providing an overall good documentation of the project (`#30`_, `#43`_). |
| 83 | +* Implementing general best software engineering practices (`#13`_, `#14`_, |
| 84 | + `#29`_, `#32`_, `#40`_, `#41`_, `#42`_, `#44`_). |
| 85 | + |
| 86 | +To stay up-to-date with the issues the milestone comprises, see the milestone |
| 87 | +on Github at https://github.com/initc3/HoneyBadgerBFT-Python/milestone/1. |
| 88 | + |
| 89 | + |
| 90 | +For Future Milestones |
| 91 | +===================== |
| 92 | + |
| 93 | +Message Formats |
| 94 | +--------------- |
| 95 | +Serialization/deserialization of messages using protocol buffers. |
| 96 | + |
| 97 | +Distributed Key Generation |
| 98 | +-------------------------- |
| 99 | +Dynamic addition and removal of nodes. |
| 100 | + |
| 101 | + |
| 102 | +.. _Bounded Badger: https://github.com/initc3/HoneyBadgerBFT-Python/milestone/3 |
| 103 | +.. _Test Network: https://github.com/initc3/HoneyBadgerBFT-Python/milestone/2 |
| 104 | +.. _Release 1.0: https://github.com/initc3/HoneyBadgerBFT-Python/milestone/1 |
| 105 | +.. _amiller/honeybadgerbft#57: https://github.com/amiller/HoneyBadgerBFT/issues/57 |
| 106 | +.. _#7: https://github.com/initc3/HoneyBadgerBFT-Python/issues/7 |
| 107 | +.. _#10: https://github.com/initc3/HoneyBadgerBFT-Python/issues/10 |
| 108 | +.. _#13: https://github.com/initc3/HoneyBadgerBFT-Python/issues/13 |
| 109 | +.. _#14: https://github.com/initc3/HoneyBadgerBFT-Python/issues/14 |
| 110 | +.. _#15: https://github.com/initc3/HoneyBadgerBFT-Python/issues/15 |
| 111 | +.. _#16: https://github.com/initc3/HoneyBadgerBFT-Python/issues/16 |
| 112 | +.. _#17: https://github.com/initc3/HoneyBadgerBFT-Python/issues/17 |
| 113 | +.. _#18: https://github.com/initc3/HoneyBadgerBFT-Python/issues/18 |
| 114 | +.. _#19: https://github.com/initc3/HoneyBadgerBFT-Python/issues/19 |
| 115 | +.. _#20: https://github.com/initc3/HoneyBadgerBFT-Python/issues/20 |
| 116 | +.. _#21: https://github.com/initc3/HoneyBadgerBFT-Python/issues/21 |
| 117 | +.. _#22: https://github.com/initc3/HoneyBadgerBFT-Python/issues/22 |
| 118 | +.. _#23: https://github.com/initc3/HoneyBadgerBFT-Python/issues/23 |
| 119 | +.. _#24: https://github.com/initc3/HoneyBadgerBFT-Python/issues/24 |
| 120 | +.. _#25: https://github.com/initc3/HoneyBadgerBFT-Python/issues/25 |
| 121 | +.. _#26: https://github.com/initc3/HoneyBadgerBFT-Python/issues/26 |
| 122 | +.. _#27: https://github.com/initc3/HoneyBadgerBFT-Python/issues/27 |
| 123 | +.. _#28: https://github.com/initc3/HoneyBadgerBFT-Python/issues/28 |
| 124 | +.. _#29: https://github.com/initc3/HoneyBadgerBFT-Python/issues/29 |
| 125 | +.. _#30: https://github.com/initc3/HoneyBadgerBFT-Python/issues/30 |
| 126 | +.. _#31: https://github.com/initc3/HoneyBadgerBFT-Python/issues/31 |
| 127 | +.. _#32: https://github.com/initc3/HoneyBadgerBFT-Python/issues/32 |
| 128 | +.. _#33: https://github.com/initc3/HoneyBadgerBFT-Python/issues/33 |
| 129 | +.. _#34: https://github.com/initc3/HoneyBadgerBFT-Python/issues/34 |
| 130 | +.. _#35: https://github.com/initc3/HoneyBadgerBFT-Python/issues/35 |
| 131 | +.. _#38: https://github.com/initc3/HoneyBadgerBFT-Python/issues/38 |
| 132 | +.. _#40: https://github.com/initc3/HoneyBadgerBFT-Python/issues/40 |
| 133 | +.. _#41: https://github.com/initc3/HoneyBadgerBFT-Python/issues/41 |
| 134 | +.. _#42: https://github.com/initc3/HoneyBadgerBFT-Python/issues/42 |
| 135 | +.. _#43: https://github.com/initc3/HoneyBadgerBFT-Python/issues/43 |
| 136 | +.. _#44: https://github.com/initc3/HoneyBadgerBFT-Python/issues/44 |
| 137 | +.. _#46: https://github.com/initc3/HoneyBadgerBFT-Python/issues/46 |
0 commit comments