Commit Graph

548 Commits

Author SHA1 Message Date
c0gent 1ccced143a
Track `threshold_crypto` master. 2018-10-15 09:51:00 -07:00
Andreas Fackler 6df72d86cc Reorder: public imports come last. 2018-10-15 13:55:04 +02:00
Andreas Fackler 13b0b04943 Update crypto, add mock crypto for testing. 2018-10-15 13:55:04 +02:00
Vladimir Komendantskiy 3af821dc88
Merge pull request #267 from poanetwork/afck-contributions
Add missing Batch::contributions getter.
2018-10-15 11:41:47 +01:00
Andreas Fackler c5b1b8bc08 Add missing Batch::contributions getter. 2018-10-15 11:44:44 +02:00
Andreas Fackler 00e1674349 Move Message out of broadcast::broadcast. 2018-10-11 22:24:13 +02:00
Andreas Fackler 7345132066 Replace HexBytes with the hex_fmt crate. 2018-10-11 22:24:13 +02:00
Vladimir Komendantskiy b5acac439c
Merge pull request #265 from poanetwork/mbr-remove-push-from-queue
Remove push from queue
2018-10-11 16:11:34 +01:00
Marc Brinkmann bcb151e78d Added some `#[inline]` statements on `TransactionQueue` impl of `Vec`. 2018-10-11 15:44:44 +02:00
Marc Brinkmann 78dd3db474 Remove `push` from `TransactionQueue` trait. 2018-10-11 15:44:10 +02:00
Vladimir Komendantskiy 59444fcf7b Support a global RNG in transaction queue (#257)
* adds an RNG argument to the transaction queue

* minimal support of transaction queue RNG in tests

* added the TransactionQueue trait object

* review comments and streamlining of trait bounds

* removed the RNG from the transaction Q and placed it into QueueingHoneyBadger

* formatting fix
2018-10-11 15:33:03 +02:00
Andrew Gross 7dc92ed34e Minor README updates 2018-10-11 08:45:04 +02:00
Andreas Fackler 8d1361e6ae Split up messaging module. 2018-10-10 17:29:59 +02:00
Andreas Fackler 4cc35587c7 Add `NetworkInfo` to `Batch`.
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.
2018-10-10 16:38:41 +02:00
Vladimir Komendantskiy 326616e3b8 Fixed a condition for accepting HB messages in future epochs (#261)
* fixed a condition for accepting HB messages

* corrected the condition
2018-10-10 12:43:23 +02:00
Vladimir Komendantskiy af05c44659 Revert "Spam protection part 1: remote epoch tracking in HoneyBadger (#219)"
This reverts commit b649dc6268.
2018-10-10 11:31:50 +02:00
Andreas Fackler 7002dad54c Remove unused pairing import.
Also use the new `Iterator::flatten`.
2018-10-09 11:53:20 +02:00
c0gent 520083de2e Change license to MIT/Apache-2.0. 2018-10-04 23:32:14 -07:00
c0gent 9d3e264b4f Add `Sync` req. on boxed rngs. 2018-10-04 11:42:00 -07:00
Marc Brinkmann 4b00bda555 Make `DistAlgorithm` require `Send`.
Using `hbbft` in other software that is based on frameworks like [tokio](https://tokio.rs), being `Send` is often a requirement on shared data structures.
2018-10-04 17:52:57 +02:00
Marc Brinkmann 6f0b53436f
Fix test-case shrinking issues (#254)
* 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.
2018-10-04 15:52:24 +02:00
Vladimir Komendantskiy 79e5ef19fd
Merge pull request #250 from ErichDonGubler/subset-optimization-option
Make Subset optimization optional
2018-10-04 09:10:07 +01:00
Erich Gubler 2e188ca257 Add a few doc comments, make `SubsetHandler` and `SubsetHandleData` private. 2018-10-03 09:07:20 -06:00
Erich Gubler 13162a2e64 Fix #243: Make Subset optimization optional. 2018-10-03 09:07:20 -06:00
Marc Brinkmann 284b5088b3 Cleanup `handle_part` function. 2018-10-03 14:25:08 +02:00
Marc Brinkmann d2627272fe
Better proptest persistence through deterministic randomness. (#248)
* 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.
2018-10-02 16:24:51 +02:00
Andreas Fackler 1d05ad60fb Fix build failure if deadlinks is already installed. 2018-09-27 18:51:44 +02:00
Andreas Fackler 010f29f337 Run cargo-deadlinks in CI. 2018-09-26 08:44:55 -07:00
Marc Brinkmann f9030c7498 Remove leftover protobuf definitions. 2018-09-25 13:02:07 +02:00
Marc Brinkmann 5033213692
Mention Rust version in `README.md`, since the removal of itertools we now have a hard requirement of 1.29 or higher. (#241) 2018-09-25 10:04:34 +02:00
Andreas Fackler f743e4bc14 Update authors list. 2018-09-20 20:29:19 +02:00
Demi Marie Obenour 679f5784b9 Output Subset messages as received (#233)
* Outputing subset messages as received

This outputs subset messages as they are received.  All tests pass.

* Fix test suite, while still outputing results early

This fixes the test suite, while still outputting results early.

* Actually do the optimization

There is a testsuite failure in the `dynamic_honey_badger` tests.  Is
this a testsuite bug?

* Respond to code review

* Document the meaning of `None` in Subset::broadcast_results

* Fix adding Contributions and fault check

* Fix clippy

* Keep track of nodes that have sent us valid messages

Otherwise, we reject all nodes as faulty.

* Remove excessive debug logging

There is no need to log a quadratic amount of data.

* Re-add check that the observer’s values match

the rest of the nodes.  Also `panic!` if `Done` is ever not the last
value in a series of `SubsetOutput`s.

* Respond to review

* Rename field
2018-09-20 14:34:40 +02:00
Vladimir Komendantskiy 70fe9cd506
Merge pull request #240 from poanetwork/afck-itertools
Remove itertools dependency.
2018-09-20 11:30:27 +01:00
Andreas Fackler 058044959f Remove itertools dependency. 2018-09-20 11:38:02 +02:00
Marc Brinkmann f38b24de2d Change the time limit to five minutes for now, until the CI situation is resolved. 2018-09-17 20:09:16 +02:00
Marc Brinkmann 900ba76e90 Disable beta, use `stable` channel. (#235)
* 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.
2018-09-17 14:19:20 +01:00
Marc Brinkmann 422d8ef55b Add a test time limit. (#232)
* 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`.
2018-09-13 15:19:22 +01:00
Marc Brinkmann 23bc38bbeb Enable overflow-checks and fix a bug that slipped through during their absence. (#231)
* 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.
2018-09-13 12:03:12 +01:00
Marc Brinkmann 0266a4107c Network dimension strategy for property based tests. (#225)
* 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.
2018-09-11 18:11:04 +01:00
Vladimir Komendantskiy 3c8ea407a2
Merge pull request #227 from poanetwork/mbr-disable-clippy
Temporarily disable clippy.
2018-09-11 16:53:23 +01:00
Marc Brinkmann 0e3cc4501a Temporarily disable clippy. 2018-09-11 16:59:47 +02:00
Andrew Gross 6a727fd281
Merge pull request #224 from poanetwork/ag-README-testing
Update testing instructions
2018-09-05 22:12:36 -06:00
Andrew Gross d8277ed8de Update testing instructions 2018-09-05 16:15:10 -06:00
c0gent 56198e3e1f Add `--test-threads 1` for travis. 2018-09-04 08:38:49 -07:00
c0gent 8ac8bef66c Travis: Enable cpu-specific optimizations.
This is off by default so that binaries can be shared.
2018-09-04 08:38:49 -07:00
Marc Brinkmann 3b6dfcbfc1
Adversary traits (#223)
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.
2018-09-04 14:50:15 +02:00
Andreas Fackler 05b04bba39 Use Formatter debug helpers. 2018-09-03 23:30:17 +02:00
Vladimir Komendantskiy b649dc6268
Spam protection part 1: remote epoch tracking in HoneyBadger (#219)
* spam protection part 1: remote epoch tracking in HoneyBadger

* moved handling of EpochStarted out of EpochState

* allowed EpochStarted from observers

* removed an unnecessary function call

* updated formatting to beta

* removed an unnecessary variable
2018-09-03 11:29:03 +01:00
Marc Brinkmann fc3d578eea
Advance to Rust beta (#221)
Update Rust version to `beta` in CI, paving the way for 1.29 stable.
2018-08-31 15:57:10 +02:00
DrPeterVanNostrand fb606332f6 Pinned threshold_crypto to version 0.1.0. 2018-08-30 10:52:16 -07:00