[−][src]Module hbbft::honey_badger
Honey Badger
Honey Badger allows a network of N nodes with at most f faulty ones, where 3 f < N, to input "contributions" - any kind of data -, and to agree on a sequence of batches of contributions. The protocol proceeds in epochs, starting at number 0, and outputs one batch in each epoch. It never terminates: It handles a continuous stream of incoming contributions and keeps producing new batches from them. All correct nodes will output the same batch for each epoch. Each validator proposes one contribution per epoch, and every batch will contain the contributions of at least N - f validators.
How it works
In every epoch, every validator encrypts their contribution and proposes it to the others.
A Subset
instance determines which proposals are accepted and will be part of the new
batch. Using threshold encryption, the nodes collaboratively decrypt all accepted
contributions. Invalid contributions (that e.g. cannot be deserialized) are discarded - their
proposers must be faulty -, and the remaining ones are output as the new batch. The next epoch
begins as soon as the validators propose new contributions again.
So it is essentially an endlessly repeating Subset
, but with the proposed values
encrypted. The encryption makes it harder for an attacker to try and censor a particular value
by influencing the set of proposals that make it into the subset, because they don't
know the decrypted values before the subset is determined.
Structs
Batch | A batch of contributions the algorithm has output. |
HoneyBadger | An instance of the Honey Badger Byzantine fault tolerant consensus algorithm. |
HoneyBadgerBuilder | A Honey Badger builder, to configure the parameters and create new instances of |
Message | A message sent to or received from another node's Honey Badger instance. |
Params | Parameters controlling Honey Badger's behavior and performance. |
Enums
EncryptionSchedule | How frequently Threshold Encryption should be used. |
Error | Honey badger error variants. |
FaultKind | Faults detectable from receiving honey badger messages |
MessageContent | The content of a |
SubsetHandlingStrategy | A flag used when constructing an |
Type Definitions
FaultLog | The type of fault log whose entries are |
Result | The result of |
Step | A |