Commit Graph

690 Commits

Author SHA1 Message Date
Vladimir Komendantskiy a887d82e6b
Merge pull request #138 from poanetwork/afck-builder-change
Add a `JoinPlan` to facilitate joining a running DHB network.
2018-07-16 15:36:35 +01:00
Vladimir Komendantskiy c779d33dd1 Merge branch 'master' into vk-api-refactor66 2018-07-16 15:16:19 +01:00
Andreas Fackler 1f8373ef93 Add a `JoinPlan` to facilitate joining a running DHB network.
With that, a node can join a running network as an observer in any epoch
where key generation starts.
2018-07-16 16:03:36 +02:00
Andreas Fackler 4b35a8666a
Merge pull request #140 from poanetwork/clear-secret-key-set
Clear 'SecretKeySet' on drop.
2018-07-16 16:01:21 +02:00
Peter van Nostrand a86f6666b5 Clear 'Poly' and 'BivarPoly' coeffs on drop. 2018-07-16 09:38:27 -04:00
Vladimir Komendantskiy 9979e790aa added must_use to tests and removed Clone from FaultLog 2018-07-16 14:31:21 +01:00
Vladimir Komendantskiy 22195c4b93 Merge branch 'master' into vk-api-refactor66 2018-07-16 14:20:50 +01:00
Vladimir Komendantskiy c6a0090859 removed cloning of FaultLog 2018-07-16 12:33:00 +01:00
Vladimir Komendantskiy 5f858396aa
Merge pull request #137 from poanetwork/afck-dhb-votes
Fix DHB test with 1 validator; purge key gen msgs.
2018-07-16 12:31:54 +01:00
Andreas Fackler e73b78c773
Merge pull request #133 from poanetwork/mbr-travis-ci-stable
Tweak CI, now runs stable.
2018-07-16 10:10:17 +02:00
Marc Brinkmann 3e19b01f1f Tweak CI, now runs stable.
The following changes have been made to the Travis CI:

* The cache timeout has been increased, before builds would spend three minutes trying to cache something before giving up.
* The toolchain for building and testing has been switched to stable. A nightly version is still used to run `clippy` and `rustfmt`; however in both cases the toolchain binaries are used instead of compiling them from scratch.
* The `cargo check` pass has been removed; it simply tested whether or not the crate compiled against stable before compiling again against release. As there very, very few bugs that will cause a mismatch here (differences will be in execution), a trade-off was made in favor of compiling only once.
2018-07-16 09:34:28 +02:00
Andreas Fackler 55ad2eae44 Fix DHB test with 1 validator; purge key gen msgs.
This adds a bit of special handling to make sure messages don't stay in
the queue forever in the `dynamic_honey_badger` tests, even if there is
only one validator: the problem was that the single validator is always
ready for input, so it never processed incoming messages. However, to
add the new validator, it needs to process the joining node's key
generation messages.

`DynamicHoneyBadger` now also removes committed key generation messages
from the queue, to avoid committing duplicates.
2018-07-15 12:12:27 +02:00
Andreas Fackler 01ad256363
Merge pull request #127 from poanetwork/afck-dhb-votes
Minor fixes and simplifications.
2018-07-15 11:24:00 +02:00
Andreas Fackler 78d628452a
Merge pull request #136 from poanetwork/remove-protoc-from-ci
Removed protoc installation from CI setup.
2018-07-15 10:59:06 +02:00
Andreas Fackler 70e8fedb15
Merge pull request #126 from poanetwork/remove-clear-on-drop
Replaced clear-on-drop with 'std::ptr::write_volatile'.
2018-07-15 10:44:59 +02:00
Peter van Nostrand 04f654ff31 Removed protoc installation from CI setup. 2018-07-14 07:46:15 -04:00
Vladimir Komendantskiy 72f7b1c06d
Merge branch 'master' into afck-dhb-votes 2018-07-14 08:20:02 +01:00
Peter van Nostrand 53a891380f Replaced clear-on-drop with 'std::ptr::write_volatile'. 2018-07-13 20:58:30 -04:00
Vladimir Komendantskiy 993a164ca9 ignored the failing doc test 2018-07-13 23:27:31 +01:00
Vladimir Komendantskiy db9191768b review comments 2018-07-13 22:53:44 +01:00
Vladimir Komendantskiy 03153cf788 Merge branch 'master' into vk-api-refactor66 2018-07-13 22:18:01 +01:00
Nick Sanders b30d272394
Merge pull request #134 from c0gent/c0gent-hydrabadger-dyn_hb
Add QueueingHoneyBadger::dyn_hb.
2018-07-13 10:38:13 -07:00
c0gent 28da78c709
Add QueueingHoneyBadger::dyn_hb.
Needed to retrieve netinfo.
2018-07-13 08:31:03 -07:00
Vladimir Komendantskiy d7a2808774
Merge branch 'master' into vk-api-refactor66 2018-07-13 13:53:21 +01:00
Vladimir Komendantskiy c12bb58ac0
Merge pull request #112 from poanetwork/mbr--random-adversary-model
Implement a random adversary
2018-07-13 13:51:06 +01:00
Marc Brinkmann 591b546402 Removed unnecessary `Hash` where clause. 2018-07-13 13:27:49 +02:00
Marc Brinkmann 5336fbe707 Added `RandomAdversary` and the necessary auxiliary functions.
Random adversaries are created for `broadcast` and `honey_badger`.  Random value generation was added for all type-dependencies of these algorithms, causing the `Rand` trait to be implement for a large portion of the codebase.

Additionally, `MessageWithSender` turned into an actual struct, making it much easier to handle. Tuple-like construction is still available through `MessageWithSender::new()`.
2018-07-13 13:27:49 +02:00
Marc Brinkmann 510c4478d4 Ensure the adversary is playing fair and give a more helpful error message if they are not. 2018-07-13 13:27:49 +02:00
Marc Brinkmann a0da8b7385 Added extended example for broadcast api and other docstrings. 2018-07-13 13:27:49 +02:00
Vladimir Komendantskiy 97e0505d11
Merge pull request #132 from poanetwork/mbr-fix-new-clippy-lints
Fix clippy lints.
2018-07-13 10:34:07 +01:00
Marc Brinkmann 0e6a8aa272 Fix clippy lints.
Extra lints have been added in the latest version of clippy; this fixes four instances of two of the new lints.
2018-07-13 10:52:44 +02:00
Vladimir Komendantskiy 92f0602dd7 formatting omission fix 2018-07-12 22:25:44 +01:00
Vladimir Komendantskiy 7fb1017bb1 changed Step::output to Vec but that didn't fix the dynamic HB test 2018-07-12 21:23:52 +01:00
Andreas Fackler 3f3ac7be13 Minor fixes and simplifications.
* Clear outdated key gen messages from the buffer.
* Process output after proposing, to make `HoneyBadger` work with a
  single validator.
* Print an error if threshold decryption fails.
* Verify decryption shares with the correct ciphertext.
* Insert all ciphertexts from an epoch at once; otherwise contributions
  can be omitted from a batch.
* Remove `BoolWithFaultLog`: It's easier to return a tuple, and it's
  used only in one place now.
* Avoid redundant signature verification in `VoteCounter`.
* Fix the tests for `QueueingHoneyBadger`.
* Use fewer network sizes to speed up tests a bit.
2018-07-12 17:54:27 +02:00
Vladimir Komendantskiy 1254d40147 fixed a starvation issue in Agreement when num_faulty=0 2018-07-12 15:12:06 +01:00
Vladimir Komendantskiy 0ba06fdb76 added step output in DistAlgorithm 2018-07-12 14:54:05 +01:00
Andreas Fackler 3bf32832bc
Merge pull request #124 from poanetwork/afck-dhb-votes
Extract vote counter from DHB.
2018-07-12 10:40:51 +02:00
Andreas Fackler bfab919c76 Add FaultLog::is_empty. 2018-07-12 09:54:26 +02:00
Andreas Fackler bed019b166 Report faults from VoteCounter. 2018-07-12 09:54:26 +02:00
Andreas Fackler 313fe1da75 Extract vote counter from DHB. 2018-07-12 09:54:26 +02:00
Andreas Fackler 0e39bfed40
Merge pull request #125 from c0gent/c0gent-arc
Make `*HoneyBadger` types thread safe.
2018-07-12 09:41:44 +02:00
c0gent f0ed2e6e12 Make `*HoneyBadger` types thread safe.
Replaces `Rc` with `Arc`. This allows usage from different threads
which will be necessary for use with Parity.
2018-07-11 16:28:41 -07:00
Andreas Fackler c31e01fa28
Merge pull request #123 from poanetwork/afck-dhb-votes
Split the dynamic_honey_badger module.
2018-07-11 15:39:09 +02:00
Andreas Fackler b41ada1809 Split the dynamic_honey_badger module. 2018-07-11 11:36:40 +02:00
Andreas Fackler 6194c0e461
Merge pull request #117 from poanetwork/afck-queue
Separate queue from Honey Badger.
2018-07-11 11:03:59 +02:00
Andreas Fackler ca2dd2327e Add back InvalidNodeTransactionSignature fault.
This was accidentally removed due to a merge conflict.
2018-07-10 17:29:58 +02:00
Andreas Fackler c1b4381753 Separate queue from Honey Badger.
This makes Honey Badger a bit more complicated but a lot more flexible:
It is now unaware of transactions and basically just runs one Subset
instance per epoch.

That way, users can use any kind of external queue, control throttling
and prioritization.
2018-07-10 17:29:58 +02:00
Andreas Fackler b546c16a5e
Merge pull request #111 from andogro/ag-example-information
Add documentation and screenshot for network simulation
2018-07-10 16:11:56 +02:00
Andrew Gross 95dce9eee3 Text updates (review comments) 2018-07-10 07:32:27 -06:00
Andreas Fackler eb22d84db9
Merge pull request #99 from poanetwork/report-faulty-nodes
Added logging for faulty nodes
2018-07-10 12:26:40 +02:00