Instead of just the public key, the batches returned from
`DynamicHoneyBadger` and `QueueingHoneyBadger` now contain the full
`NetworkInfo`, so the user can use the validators' keys for signing and
encryption.
* Use inverse of `is_bft` function for checking in `average_higher`.
* Inline in `NetworkDimension`.
* Check more invariants when averaging network sizes.
* Added test that finds shrinking regression of `NetworkDimension`.
* Use bijection for shrinking of network dimensions.
* Fix types on dimensions.
* Hide `size` and `faulty` behind accessor methods.
* Make limits dependant on input size.
* Fixed clippy lints.
* Simplify averaging.
* Add support for RNG instantiation in proptests.
* Use `proptest` module strategy to create the rng for `net_dynamic_honey_badger`.
* Use seed generation instead of RNG instantiation in tests.
* Remove fixed RNG in `generate_map`.
* `VirtualNet` now supports setting the random generator through the builder.
* Add missing `time_limit` field to `::std::fmt::Debug` trait implementation on `NetBuilder`.
* Pass an instantiated random number generator through `NewNodeInfo` as a convenience.
* Make the random number generator of `DynamicHoneyBadgerBuilder` configurable, at the cost of now requiring mutability to call `build_first_node()`.
* Ensure RNGs are derive from passed in seed in `net_dynamic_hb` tests.
* Correct inappropriate use of `random::Random` instead of `Rng::gen` to generate dependent values in `binary_agreement`.
The original implementation used `rand::random()`, which will always use the `thread_rng`, ignoring the fact that an RNG has actually been passed in.
* Do not use `OsRng` but passed in RNG instead.
* Use reference/non-reference passing of rngs more in line with the `rand` crates conventions.
* Document `rng` field on `DynamicHoneyBadger`.
* Make `SyncKeyGen` work with the extend (`encrypt_with_rng`) API of `threshold_crypto`.
* Use passed-in random number generator in `HoneyBadger`.
* Create `SubRng` crate in new `util` module to replace `create_rng()`.
* Use an RNG seeded from the configure RNG when reinitializing `DynamicHoneyBadger`.
* Use the correct branch of `threshold_crypto` with support for passing RNGs.
* Disable beta, use `stable` channel.
* Pin to Rust 1.29 stable.
* Streamline clippy operation.
* Fix or disable remaining failing clippy lints.
* Use `$TRAVIS_RUST_VERSION` instead of `stable` to name toolchain.
* Added a default time limit to `NetBuilder`.
* Added environment-variable override via `HBBFT_NO_TIME_LIMIT`.
* Check for time limit exceeded when cranking.
* Fix typos and factual errors in API docs.
* Document time limit setting in tests `README.md`.
* Fixed bug in `average_higher`, due to wrong assumptions about operator precendence.
* Enable overflow checks in `--release` tests.
This will hardly impact test performance, as the heavy lifting is done in the threshold crypto crate. Rough benchmarks showed significant differences only when `overflow-checks` was enable for `[profile.release]` (instead of `[profile.bench]`), causing it to be applied to `threshold_crypto` as well.
* Added missing debug implementations for various test networking parts.
* Initial proptest parts added, including network dimensions.
* Use a test configuration for proptests.
* Tweaks and documentation.
* Improved documentation for `net_dynamic_hb` test.
* Added two missing `;`.
* Allow insane topology creation.
* Renamed `is_sane()` to `is_bft`, `halfway` to `average_higher` and improved comments per suggestions.
* Rename `NetworkTopology` -> `NetworkDimension`.
* Silence newly added clippy warning.
* Smoothed `README.md`.
* Remove workaround for beta/nightly again.
* Caved in to clippy and changed the bft condition.
Added a new adversary API, which changes how adversaries in tests can affect the network and nodes, restricting them to the capabilities listed in the HBBFT paper.
Added new virtual network implementation for tests.
Added `net::VirtualNet` as an upcoming replacement for the current networking implementation in the test, along with auxiliary functions. The new system allows easier manipulation through implemented adversaries, better reporting and should offer a more friendly API.
Documentation for the functionality can be found in `tests/README.md`.