Documentation ¶
Overview ¶
Here we implement the Asynchronous Common Subset algorithm from the HBBFT paper:
> Miller, A., Xia, Y., Croman, K., Shi, E., and Song, D. (2016). The Honey Badger of > BFT Protocols. In Proceedings of the 2016 ACM SIGSAC Conference on Computer > and Communications Security, CCS ’16, page 31–42, New York, NY, USA. > Association for Computing Machinery.
The HBBFT paper presents the algorithm as follows:
> Let {RBC_i}_N refer to N instances of the reliable broadcast protocol, > where P_i is the sender of RBC_i. Let {BA_i}_N refer to N instances > of the binary byzantine agreement protocol. > • upon receiving input v_i, input v_i to RBC_i > • upon delivery of v_j from RBC_j, if input has not yet been > provided to BA_j, then provide input 1 to BA_j. > • upon delivery of value 1 from at least N − f instances of BA, > provide input 0 to each instance of BA that has not yet been > provided input. > • once all instances of BA have completed, let C ⊂ [1..N] be the > indexes of each BA that delivered 1. Wait for the output v_j for > each RBC_j such that j ∈ C. Finally output ∪_{j∈C} v_j.
TODO: Erasure coding in RBC.
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type ACS ¶
func New ¶
func New(nodeIDs []gpa.NodeID, me gpa.NodeID, f int, ccCreateFun func(node gpa.NodeID, round int) gpa.GPA, log *logger.Logger) ACS
> Let {RBC_i}_N refer to N instances of the reliable broadcast protocol, > where P_i is the sender of RBC_i. Let {BA_i}_N refer to N instances > of the binary byzantine agreement protocol.