* converted the BA test to net framework
* fixed lints and corrected docs
* seeded the Rng and removed logging
* allowed pass by value of binary_agreement argument
* handling of input via proptest and doc correction
* Allow arbitrary validator set changes in DHB.
This replaces `NodeChange` with a full list of IDs and public keys,
instead of just a single to-be-added or to-be-removed node, to allow
completely replacing the set of validators by any arbitrary new set in a
single key generation step.
* Address review comments: added_nodes, comments.
* Fix MessageScheduler::First.
Make sure every node eventually gets to handle its messages.
This includes a threshold signature in each batch that can be used as a
pseudorandom value.
Also moves `EncryptionSchedule` from `threshold_decrypt` to
`honey_badger`.
* issue286: make `ThresholdSign` and `ThresholdDecryption` APIs consistent
This gives both methods a `set_message(payload)` and a `sign()` method. If `sign` is called prior to
`set_message` or if was already called, then an empty step is returned. Otherwise share messages are
sent out to peers and `try_output` is called.
* Incorporating feedback from review of pull request #316
* Fixing the stack overflow and responding to further feedback
* Updates module documentation to reflect the API change from #286
* adds a new constructor to `ThresholdSign` and `ThresholdDecryption`
The `new_with_<payloadname>` function allows setting payload on construction
instead of as a separate call.
This merges the four maps into a single map, each entry of which tracks
the progress of both the `Broadcast` and the `BinaryAgreement`
subalgorithm for an individual proposer. Two advantages:
* A slight optimization, because the `Broadcast` instance is dropped as
soon as it is not needed anymore.
* The static guarantee that certain impossible situations (inserting a
broadcast value twice) cannot happen.
The module is also split up into smaller files.
Improve the broadcast documentation.
* Reorganize the explanation, separate algorithm from justification.
* Some of the message numbers were wrong.
* Use `[i]` for indices, even in pseudocode.
Since `Broadcast` operates on a `Vec<u8>` anyway, let's not make it
generic in a serializable value. This removes the TODO.
The `data_shard_num` field is also removed; it was redundant now.