Vladimir Komendantskiy
bc245f2e67
added a Step for each module
2018-07-20 12:51:06 +01:00
Vladimir Komendantskiy
099fbc999e
made Step depend on DistAlgorithm instead of base types
2018-07-20 12:47:19 +01:00
Vladimir Komendantskiy
ccd1a98c42
optimized function arguments and added a typedef for Simulation Step
2018-07-20 12:44:41 +01:00
Vladimir Komendantskiy
65b3097238
message queue refactoring WIP
2018-07-20 12:43:15 +01:00
Andreas Fackler
7820d5572a
Merge pull request #146 from poanetwork/afck-key-shares
...
Separate keys and key shares.
2018-07-19 10:24:10 +02:00
Andreas Fackler
466104bce6
Extend *honey_badger module docs.
2018-07-18 16:46:46 +02:00
Andreas Fackler
15cc6ffddd
Separate keys and key shares.
2018-07-18 14:44:35 +02:00
Vladimir Komendantskiy
4b88759844
review comments
2018-07-17 18:27:28 +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
72f7b1c06d
Merge branch 'master' into afck-dhb-votes
2018-07-14 08:20:02 +01:00
Vladimir Komendantskiy
db9191768b
review comments
2018-07-13 22:53:44 +01:00
Vladimir Komendantskiy
d7a2808774
Merge branch 'master' into vk-api-refactor66
2018-07-13 13:53:21 +01: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
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
0ba06fdb76
added step output in DistAlgorithm
2018-07-12 14:54:05 +01: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
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
Peter van Nostrand
6783ece9b0
Added faulty node logging to algorithms.
2018-07-09 13:45:11 -04:00
Andreas Fackler
93ca149757
Apply rustfmt and expand HB doc comment.
2018-07-05 11:47:19 +02:00
c0gent
2408e012fe
Add type to `HoneyBadgerBuilder`.
2018-07-05 11:47:19 +02:00
Andreas Fackler
1a3016d94d
Add Honey Badger builder.
2018-07-05 11:47:19 +02:00
Andreas Fackler
0f92010fe4
Add a max_future_epochs option to Honey Badger.
...
This delays handling of messages from epochs that are too far ahead.
2018-07-05 11:47:19 +02:00
Andreas Fackler
515bd14a23
Restart Honey Badger when DKG starts for joining validator.
...
That way the user can be sure that if they forward all `Target::All`
messages after the first batch mentioning a joining validator, they
don't miss any messages relevant for that joining node.
2018-07-02 14:14:19 +02:00
Andreas Fackler
bbc27e8a66
Update terminology: "observers" and "validators"
2018-07-02 14:14:19 +02:00
Andreas Fackler
7a0b397233
Add node transaction messages to Dynamic HB.
2018-07-02 14:14:19 +02:00
Andreas Fackler
2b4f77f11c
Avoid redundant key computations.
2018-06-27 14:47:05 +02:00
Andreas Fackler
fd8e7a5900
Add DynamicHoneyBadger.
2018-06-26 15:13:04 +02:00
Andreas Fackler
aaec3d4074
Simplify observer/peer-specific code.
...
Extract some methods to make the branches more readable.
2018-06-26 14:50:06 +02:00
Andreas Fackler
2db67df325
Rename is_full_node to is_peer.
2018-06-26 10:57:44 +02:00
Andreas Fackler
2a5f9f1bfe
Allow observer nodes in all algorithms.
...
This allows nodes to join the network without sending any messages
themselves. They can't give any input and just observe the outcome.
Closes #81
2018-06-26 09:17:12 +02:00
Andreas Fackler
b3b3994ec1
Merge pull request #82 from poanetwork/vk-test-decryption-shares
...
An adversary sending faulty decryption shares
2018-06-26 09:06:33 +02:00
Vladimir Komendantskiy
11ec39879b
created an adversary to test against faulty decryption shares
2018-06-25 19:22:08 +01:00
Andreas Fackler
062b35ab3a
Make SyncKeyGen NodeUid-aware.
...
This allows the caller to address nodes by ID instead of by index.
Also contains a few other minor changes that will be needed for
`DynamicHoneyBadger`.
2018-06-25 13:07:31 +02:00
Vladimir Komendantskiy
4c2e92e63d
removed the obsolete Bls12 type parameters
2018-06-22 10:17:11 +01:00
Vladimir Komendantskiy
5778cedb1c
removed the unneeded pending_verification
2018-06-22 10:12:38 +01:00
Vladimir Komendantskiy
f2893c5f54
Revert "removed the unneeded pending_verification and added clone-less shares in messages"
...
This reverts commit 10c442af475ca764badede674715142a1fd06fdb.
2018-06-22 10:12:38 +01:00
Vladimir Komendantskiy
b7a0d64924
removed the unneeded pending_verification and added clone-less shares in messages
2018-06-22 10:12:38 +01:00
Vladimir Komendantskiy
69b42d5032
added verification of decryption shares as soon as they can be verified
2018-06-22 10:12:38 +01:00
Vladimir Komendantskiy
5b0d331a69
review comments
2018-06-22 10:12:38 +01:00
Vladimir Komendantskiy
5811ead460
derived instance fixes after serde option removal
2018-06-22 10:12:38 +01:00
Vladimir Komendantskiy
af03158e00
tries to decrypt and output a batch on epoch update from already received messages
2018-06-22 10:12:38 +01:00
Vladimir Komendantskiy
c7f4994e3a
threshold encryption of proposals in HoneyBadger
2018-06-22 10:12:38 +01:00
Andreas Fackler
83f8d61402
Support serde by default.
...
This removes the `serialization-serde` feature, since serde is already
used internally and therefore a dependency anyway.
2018-06-20 10:21:52 +02:00
Andreas Fackler
66f396e01c
Remove more NodeUid trait bounds.
...
Use a `BTreeMap` instead of `HashMap` in `NetworkInfo`. The number of
nodes can't grow very large anyway.
2018-06-18 16:37:07 +02:00
Andreas Fackler
3f707a8e12
Return proposer info from HoneyBadger.
...
Also, consistently name generic arguments, and remove some unused trait
bounds.
2018-06-18 16:19:54 +02:00
Vladimir Komendantskiy
5008d11ada
Revert "the set of node indices of common coin shares is now computed only once"
...
This reverts commit e9808efc61
.
2018-06-14 10:05:05 +01:00
Vladimir Komendantskiy
e9808efc61
the set of node indices of common coin shares is now computed only once
2018-06-13 22:05:11 +01:00
Vladimir Komendantskiy
d5794cb5fe
extended the common coin nonce with a global UID and the top-level epoch
2018-06-13 15:18:27 +01:00