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
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
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
Peter van Nostrand
6783ece9b0
Added faulty node logging to algorithms.
2018-07-09 13:45:11 -04:00
Andreas Fackler
6248e4079f
Fix Subset for a single validator.
2018-07-09 11:38:56 +02:00
Andreas Fackler
6f7245f123
Prefer HB::builder over HBBuilder::new.
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
Marc Brinkmann
60450d2c90
Reformatted using nightly rustfmt instead of stable rustfmt.
2018-07-05 10:12:57 +02:00
Marc Brinkmann
5e8b26cfc3
Implemented `Rand` for `SecretKey`.
2018-07-04 16:43:17 +02:00
Andreas Fackler
34385746c6
Add start_epoch option and DHB builder.
2018-07-02 14:14:19 +02:00
Andreas Fackler
11149c5e66
Communicate change state in Dynamic HB, add module docs.
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
7a335c9771
Remove vote_counts field from dynamic HB.
2018-06-27 11:51:56 +02:00
Andreas Fackler
74fab61dd8
Fix Dynamic HB test.
2018-06-27 11:37:05 +02:00
Andreas Fackler
fd8e7a5900
Add DynamicHoneyBadger.
2018-06-26 15:13:04 +02:00
Andreas Fackler
78fdf63540
Merge pull request #83 from poanetwork/afck-observer
...
Allow observer nodes in all algorithms.
2018-06-26 15:12:46 +02:00
Vladimir Komendantskiy
6ce6899ca9
added output sequence verification in HoneyBadger test
2018-06-26 12:15:30 +01: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
1c9ca201d5
corrected a comment and removed a redundant mut
2018-06-25 21:18:25 +01: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
af03158e00
tries to decrypt and output a batch on epoch update from already received messages
2018-06-22 10:12:38 +01:00
Andreas Fackler
e11f183db2
Remove generic E: Engine from crypto.
2018-06-22 10:08:23 +02:00
Andreas Fackler
7eb487f329
Implement SyncKeyGen.
...
This is a _synchronous_ key generation algorithm. We will use it in
`DynamicHoneyBadger`, on top of `HoneyBadger` to satisfy the synchrony
requirements.
It can also be used independently e.g. on top of a blockchain.
2018-06-22 10:06:29 +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
f2a03f8f04
corrected the agreement test proposer ID
2018-06-14 13:45:58 +01:00
Vladimir Komendantskiy
82b4250f0d
added the broadcast proposer ID in the common coin nonce
2018-06-14 13:36:48 +01:00
Vladimir Komendantskiy
3393052b4b
review comment coverage
2018-06-14 12:28:38 +01:00
Vladimir Komendantskiy
b82ac64148
note in the broadcast example about the use of keys
2018-06-13 18:24:35 +01:00
Vladimir Komendantskiy
4dbef3968d
fixed early update of Agreement epoch
2018-06-13 15:18:27 +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
Vladimir Komendantskiy
e116c6c171
added tests for the common coin
2018-06-13 15:17:11 +01:00
Vladimir Komendantskiy
122f1fc6f1
updated the tests with key initialisation
2018-06-13 15:15:41 +01:00
Vladimir Komendantskiy
98f5304d4c
top-level interface now requires providing a NetworkInfo parameter
2018-05-29 14:53:01 +01:00
Vladimir Komendantskiy
938d2f5c16
added a note about the use of NetworkInfo in tests
2018-05-29 14:53:01 +01:00
Vladimir Komendantskiy
d09f3e26b4
introduced common shared network information
2018-05-29 14:53:01 +01:00
Andreas Fackler
9a0622f3f2
Update Rust, re-enable rustfmt.
2018-05-21 11:26:42 +02:00
Andreas Fackler
ab89dabde9
Add a few explaining comments.
2018-05-19 17:10:30 +02:00
Andreas Fackler
b8a2463d1c
Extend tests and fix CommonSubset.
...
Verify termination and more outputs.
`CommonSubset` now instantiates `Agreement` with the correct ID.
2018-05-19 15:56:49 +02:00
Vladimir Komendantskiy
962a618ffd
ported Common Subset tests to TestNetwork
2018-05-18 22:04:09 +01:00
Andreas Fackler
d5f9c4d40d
Fix Agreement and re-enable HoneyBadger test.
2018-05-17 17:38:45 +02:00
Andreas Fackler
500ec81b2f
Add a network simulation example.
2018-05-17 12:52:07 +02:00
Vladimir Komendantskiy
ca49f4041b
fixed the outdated code in Agreement test
2018-05-17 11:27:31 +01:00
Vladimir Komendantskiy
c8c8e1bb1f
added a latch for the decided value in Agreement to remember the output value
2018-05-17 10:43:56 +01:00