c0gent
ac39de66a8
Make refinements to SyncKeyGen error and fault handling.
2018-08-09 15:44:36 -04:00
DrPeterVanNostrand
8ab58d35d4
Added error handling for mlock errors in threshold_crypto crate.
2018-08-09 15:44:36 -04:00
Andreas Fackler
8cc60698db
Move matches from EpochState to SubsetState.
2018-08-09 16:04:09 +02:00
Andreas Fackler
e9b960d020
Fix and clean up the HoneyBadger impl.
...
* Remove unnecessary recursive method calls.
* Add `handle_message` (without the trait).
* Fix a bug where `handle_message_content` would create an `EpochState`
with the wrong number.
2018-08-09 16:04:09 +02:00
Andreas Fackler
5cc7b54c06
Split up the broadcast module.
...
Also, rename broadcast and agreement messages to just `Message`.
2018-08-08 15:46:43 +02:00
Andreas Fackler
b017311e49
Split out individual epochs from Honey Badger.
2018-08-06 10:50:30 -07:00
Andreas Fackler
46a8728792
Split out Threshold Decryption from Honey Badger.
2018-08-06 10:50:30 -07:00
c0gent
697ba6f0a8
Add common supertraits and rename related type parameters.
...
* Add the `Contribution`, `NodeUidT`, and `Message` supertraits.
* Rename type parameters:
* `Tx` -> `T` or `C`
* `NodeUid` -> `N`
2018-08-02 14:52:12 -07:00
c0gent
f66dbdf3a1
Reorganize `dynamic_honey_badger` and `agreement` modules slightly.
...
* Move `CoinState` and `Agreement` definitions from `agreement/mod.rs`
to `.../agreement.rs`.
* Move `DynamicHoneyBadger` definition from `dynamic_honey_badger/mod.rs`
to `.../dynamic_honey_badger.rs`.
2018-08-02 13:01:57 -07:00
Andreas Fackler
dd31758bdf
Extract SBV broadcast from agreement.
2018-08-02 12:55:17 +02:00
Andreas Fackler
572fa7b028
Merge pull request #180 from c0gent/c0gent-crypto-pub
...
Re-export `crypto`.
2018-08-01 19:18:48 +02:00
c0gent
affa0eee37
Re-export `crypto`.
2018-08-01 09:56:36 -07:00
Andreas Fackler
d19afc2634
Change the QHB criterion for moving on to the next epoch.
...
`QueueingHoneyBadger` now waits after an output, and only makes its
proposal for the next epoch when:
* there are pending transactions in the queue,
* there are pending key generation or vote messages, or
* _f + 1_ other validators have already made their proposal.
This rule should work well for small networks: With 1 - 3 nodes, it will
produce a new batch whenever at least one of them has transactions to
contribute. In larger networks, it prevents an adversary controlling _f_
nodes from producing lots of empty epochs.
An exception is made for a currently joining validator: We will commit
up to _(N + 1)² + 1_ key generation messages for them, which is the
maximum number a correct node will send.
2018-08-01 18:52:32 +02:00
Andreas Fackler
5591f5ebd0
Split honey_badger into submodules.
2018-08-01 09:56:18 +02:00
Andreas Fackler
7c66ef06ee
Merge pull request #172 from poanetwork/vk-crypto-crate
...
crypto module moved into its own crate
2018-07-31 22:26:19 +02:00
Vladimir Komendantskiy
062b7150e1
Merge pull request #173 from poanetwork/afck-hb-clear-cs
...
Fix removal of terminated CS instances in HB.
2018-07-31 15:15:54 +01:00
Vladimir Komendantskiy
6753c12b7c
formatting
2018-07-31 12:15:05 +01:00
Vladimir Komendantskiy
77ed1d50d4
separated crypto module into its own crate
2018-07-31 12:15:05 +01:00
Andreas Fackler
47c00016be
Remove protobuf support.
2018-07-31 11:58:44 +02:00
Andreas Fackler
c448e057f8
Rename BinValues to BoolSet.
2018-07-31 09:42:30 +02:00
Andreas Fackler
4159acf8cd
Represent BinValues as a u8.
2018-07-31 09:39:51 +02:00
c0gent
847a79793e
Replace `chain_error` with `failure`
...
Changes:
* Remove `error_chain` and convert errors to `failure` types.
* Add variants for each possible error generation point.
2018-07-30 15:14:19 -07:00
Andreas Fackler
8346085fb9
Fix removal of terminated CS instances in HB.
2018-07-30 15:02:20 +02:00
Andreas Fackler
78ab9742a9
Avoid heap allocation in BinValues::into_iter.
2018-07-30 13:08:17 +02:00
Andreas Fackler
8beab3d2b4
Log duplicate agreement messages as faults.
2018-07-30 12:04:28 +02:00
Andreas Fackler
3b65f0cead
Fix agreement bugs, and refactor a few fields.
...
* Don't drop `Term` messages from previous epochs. They are still
relevant for all future epochs.
* Restructure some fields to avoid unnecessary iteration and counting.
* Simplify the fields related to the common coin.
* Reorder the methods, so that the message handlers are all in one
place.
* Handle the case where the coin value arrives before the required
number of `Conf` messages.
2018-07-30 11:44:55 +02:00
Vladimir Komendantskiy
6efe6037f2
removed duplicated insertion
2018-07-27 08:24:19 +01:00
Vladimir Komendantskiy
638cde3d71
avoid cloning of Agreement::received_term
2018-07-26 17:55:21 +01:00
Andreas Fackler
08d6abf6b4
Make sure Term messages are handled as BVal, Aux, Conf.
2018-07-26 14:19:01 +02:00
Vladimir Komendantskiy
35edde9007
Merge pull request #167 from poanetwork/afck-queue-fields
...
Fix bin_values change handling in agreement.
2018-07-26 09:30:03 +01:00
Andreas Fackler
cc28f8ecfe
Merge pull request #162 from poanetwork/vk-broadcast-example
...
Updated the Broadcast doc example to the latest API
2018-07-26 10:17:56 +02:00
Andreas Fackler
4bff2849f9
Fix bin_values change handling in agreement.
...
* Call `on_bin_values_changed` even if there is only one value.
* Handle the case _f = 0_ correctly: `count_bval` can be equal to both
_f + 1_ and _2 f + 1_.
2018-07-26 09:34:34 +02:00
Andreas Fackler
27898168e2
Merge pull request #163 from poanetwork/afck-queue-fields
...
Remove queue fields from Agreement, CommonCoin, Broadcast and CommonSubset.
2018-07-26 08:43:07 +02:00
Andreas Fackler
8d449eceb5
Merge pull request #159 from poanetwork/afck-into-fr
...
Accept more types in threshold crypto API.
2018-07-26 08:31:54 +02:00
Vladimir Komendantskiy
fc074d50e5
removed expect and unnecessary message cloning, added comments
2018-07-25 16:53:15 +01:00
Andreas Fackler
72ff36f2b9
Fix data shard count in Broadcast.
2018-07-25 10:46:39 +02:00
Andreas Fackler
2b904e3490
Make sure QHB always inputs a new batch after output.
2018-07-24 14:46:48 +02:00
Andreas Fackler
9d0f1b3d15
Remove output and message queue from CommonSubset.
2018-07-24 13:12:06 +02:00
Andreas Fackler
990899327e
Remove output and message queue from Broadcast.
2018-07-24 12:18:09 +02:00
Vladimir Komendantskiy
883201a9b9
checking the output immediately rather than at the end
2018-07-24 11:09:15 +01:00
Andreas Fackler
30c5805446
Remove output and message queue from CommonCoin.
2018-07-24 11:57:50 +02:00
Andreas Fackler
102fa0e01d
Remove output and message queue from Agreement.
2018-07-24 11:43:35 +02:00
Vladimir Komendantskiy
aefb812f2a
updated the Broadcast doc example to the latest API
2018-07-24 09:51:13 +01:00
Andreas Fackler
b89ad6bb5d
Rename: try_output_batches. Add CS multi output error.
2018-07-23 21:36:09 +02:00
Andreas Fackler
4327744976
Remove output and message queue from HoneyBadger.
2018-07-23 18:11:45 +02:00
Andreas Fackler
32e1afc24a
Add more arithmetic ops to Poly.
2018-07-23 15:56:45 +02:00
Andreas Fackler
984bb49fdc
Accept more types in threshold crypto API.
...
This removes some unnecessary allocation and conversion by accepting
more primitive types and references as the index in threshold decryption
and signing, and as the argument to a polynomial.
2018-07-23 15:56:45 +02:00
Andreas Fackler
9d43e8df59
Merge pull request #150 from poanetwork/vk-api-messages66
...
Outgoing message API refactoring
2018-07-23 15:43:25 +02:00
Andreas Fackler
432c865d4b
Handle initial QHB messages, fix DHB.
2018-07-21 11:30:43 +02:00
Andreas Fackler
e14eb5006a
Clarify synchrony requirements in SyncKeyGen.
2018-07-20 18:43:28 +02:00
Vladimir Komendantskiy
a9346fa2a1
removed an accidental unused import from a merge conflict
2018-07-20 12:58:07 +01:00
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
17339c322c
added a typedef for the Queueing HB propose result
2018-07-20 12:44:41 +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
d787173dd8
Rename DKG messages to Part and Ack.
2018-07-19 12:28:15 +02:00
Andreas Fackler
9159b42150
Add SyncKeyGen::into_network_info.
2018-07-19 12:18:01 +02:00
Andreas Fackler
c179ad1e18
Extend sync_key_gen documentation.
2018-07-19 11:32:32 +02: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
fb0e35deea
Improve DHB docs, address review comments.
2018-07-18 21:41:21 +02:00
Andreas Fackler
52a684eb7f
Add example code for `SyncKeyGen` to the docs.
2018-07-18 17:59:28 +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
Andreas Fackler
2d9b872484
Merge pull request #130 from poanetwork/vk-api-refactor66
...
Output API refactored
2018-07-18 14:10:39 +02:00
c0gent
8c1a111f13
Add `Copy` to `PublicKey` derived impls.
2018-07-17 15:38:50 -07:00
Vladimir Komendantskiy
4b88759844
review comments
2018-07-17 18:27:28 +01:00
Vladimir Komendantskiy
f704b481ad
Merge branch 'master' into vk-api-refactor66
2018-07-16 15:38:25 +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
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
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
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
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
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
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
a0da8b7385
Added extended example for broadcast api and other docstrings.
2018-07-13 13:27:49 +02: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
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
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
b41ada1809
Split the dynamic_honey_badger module.
2018-07-11 11:36:40 +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
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
Vladimir Komendantskiy
90e468ecf6
Merge pull request #101 from poanetwork/afck-docs
...
Add module-level Agreement, Coin and Subset documentation.
2018-07-05 17:39:09 +01:00
Andreas Fackler
c42f606644
Fix module docs. (Review comments.)
2018-07-05 17:51:55 +02:00
Andreas Fackler
3f53964ac4
Add max_future_epochs parameter to DynamicHoneyBadger.
2018-07-05 11:47:19 +02: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
f05e087492
Improve mod docs (review comments).
2018-07-05 11:45:30 +02:00
Andreas Fackler
2a30860bb0
Add agreement module-level docs.
2018-07-05 11:45:30 +02:00
Andreas Fackler
f22999a37f
Move the Subset docs to the module level.
2018-07-05 11:45:30 +02:00
Andreas Fackler
daab0eb564
Add coin docs, change parity computation.
...
This makes the signature parity computation take into account all bits,
not just the last one of each byte.
2018-07-05 11:45:30 +02:00
Marc Brinkmann
5e8b26cfc3
Implemented `Rand` for `SecretKey`.
2018-07-04 16:43:17 +02:00
Andreas Fackler
a4b691fd33
Improve dynamic HB doc comments.
2018-07-02 14:25:08 +02:00
Andreas Fackler
34385746c6
Add start_epoch option and DHB builder.
2018-07-02 14:14: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
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
Marc Brinkmann
a6c920e88e
Remove unused feature, allowing compilation on stable again.
...
There is no evidence that [optin_builtin_traits](https://doc.rust-lang.org/beta/unstable-book/language-features/optin-builtin-traits.html ) are used any longer (the keyword `auto` does not even show up in the codebase).
Removing this features allow compilation on stable Rust 1.27 and possible earlier versions.
2018-07-01 18:09:21 +02:00
Andreas Fackler
33eadc94ef
Apply code review comments; improve broadcast docs.
2018-06-28 21:46:51 +02:00
Andreas Fackler
824a23775d
Move broadcast docs to module-level.
...
Also replaces the word "good" with "correct".
2018-06-28 12:49:11 +02:00
Andreas Fackler
2b4f77f11c
Avoid redundant key computations.
2018-06-27 14:47:05 +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
a2c213d0aa
Replace convert_transaction with From.
2018-06-26 15:13:04 +02:00
Andreas Fackler
fd8e7a5900
Add DynamicHoneyBadger.
2018-06-26 15:13:04 +02:00
Andreas Fackler
f202ccfeb8
Compute is_peer on NetworkInfo creation.
2018-06-26 14:52:53 +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
7be2510e36
swapped False and True coins
2018-06-22 17:39:55 +01:00
Vladimir Komendantskiy
7a4fc37628
implemented an optimistic random common coin schedule
2018-06-22 10:39:55 +01: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
67dbada49f
Improve documentation.
2018-06-22 10:17:44 +02: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
Peter van Nostrand
73368b7a32
Fix formatting.
2018-06-21 13:06:48 -04:00
Peter van Nostrand
05da712c20
Added clear-on-drop secret-keys to 'NetworkInfo'.
2018-06-21 12:08:48 -04:00
Andreas Fackler
a47123c4dd
Improve Hash impl for Ciphertext.
...
This formulation makes it harder to forget updating the `Hash`
implementation if the `Ciphertext` type changes.
2018-06-20 22:09:43 +02:00
Andreas Fackler
1f27fa6891
Implement Hash for "public" cryptographic types.
...
This adds a `Hash` implementation for public keys, commitments,
ciphertexts and signatures — types that might make sense to be included
in special transactions. The `DynamicHoneyBadger` implementation will
require some of them.
2018-06-20 22:09:43 +02:00
Andreas Fackler
6484242afc
Simplify serde implementations, add Ciphertext.
2018-06-20 10:43:59 +02: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
c84c60d826
Rename crypto::keygen to crypto::poly.
2018-06-20 10:05:03 +02:00
Vladimir Komendantskiy
1436d85455
Merge pull request #63 from poanetwork/afck-hb-whose-batch
...
Return proposer info from HoneyBadger.
2018-06-19 09:53:52 +01: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
Andreas Fackler
3bf86453c3
Restructure crate-level docs, replace honest with correct.
2018-06-15 17:52:17 +02:00
Andreas Fackler
e392f4c3af
Add some crate-level documentation.
2018-06-14 17:44:43 +02:00
Vladimir Komendantskiy
3ed63a1507
formatting
2018-06-14 14:10:05 +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
994600bcf6
renamed a fn argument for readability
2018-06-14 12:43:18 +01:00
Vladimir Komendantskiy
3393052b4b
review comment coverage
2018-06-14 12:28:38 +01: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
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
f4b6c90c8c
added a queue of incoming common coin signature shares
2018-06-13 15:17:11 +01:00
Vladimir Komendantskiy
94049e8636
fixed propagation of common coin messages to the top level
2018-06-13 15:17:11 +01:00
Vladimir Komendantskiy
40eeee90fc
protobuf serialization
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
cf45a4e3cb
common coin implementation
2018-06-13 15:15:41 +01:00
Vladimir Komendantskiy
b6587a21e8
get_coin interface to Common Coin
2018-06-13 15:09:12 +01:00
Vladimir Komendantskiy
17dc9df78e
Common Coin module template; added keys in NetworkInfo
2018-06-13 15:09:12 +01:00
Andreas Fackler
6cc2302e61
Implement polynomials for distributed key generation.
2018-06-11 16:45:08 +02:00
Vladimir Komendantskiy
d1362ed500
Merge pull request #56 from poanetwork/vk-term-agreement
...
Added Term messages in Agreement and enabled early termination
2018-06-08 09:06:46 +01:00
Vladimir Komendantskiy
dc4475ba82
for each node, never count both Aux and Term messages
2018-06-07 20:29:51 +01:00
Vladimir Komendantskiy
35d5ad106a
added Term messages in Agreement and enabled early termination
2018-06-07 20:06:44 +01:00
Andreas Fackler
cf9521c565
Don't return an error on deserialization failure.
2018-05-31 16:32:54 +02:00
Andreas Fackler
fc599232aa
Add logging to simulation example.
2018-05-31 14:28:10 +02:00
Andreas Fackler
f970272d3e
Add bandwidth and CPU to the simulation.
2018-05-31 14:28:10 +02:00
Andreas Fackler
1fd7155e31
Remove unused CommonSubset error variants.
2018-05-31 09:37:00 +02:00
Andreas Fackler
9859002e1b
Don't panic on shards of unequal size.
2018-05-31 09:12:15 +02:00
Andreas Fackler
bb61d0c5ab
Ignore messages in Agreement after termination.
2018-05-30 17:33:24 +02:00
Andreas Fackler
f700ae82d0
Remove unused code from CommonSubset.
2018-05-30 15:50:16 +02:00
Andreas Fackler
c91fa13213
Make Broadcast handle large payloads.
2018-05-30 15:40:15 +02:00
Andreas Fackler
a0a8582f0b
Expand crypto tests.
2018-05-30 14:15:54 +02:00
Andreas Fackler
661bae6438
Implement threshold encryption.
2018-05-30 13:50:09 +02:00
Andreas Fackler
45a7c07106
Implement simple encryption.
2018-05-30 11:42:17 +02:00
Andreas Fackler
0017a2a7c0
Make public keys and signatures serializable.
2018-05-30 10:08:43 +02:00
Andreas Fackler
56ab6a5037
Simplify hash_g2.
2018-05-29 21:59:21 +02:00
Andreas Fackler
527b1c8c17
Use SHA256 and byteorder in hash_g2.
2018-05-29 17:59:50 +02:00
Andreas Fackler
d999792234
Implement threshold signatures.
2018-05-29 17:06:02 +02:00
Vladimir Komendantskiy
ede1c7d157
moved the own ID membership test to the NetworkInfo constructor
2018-05-29 14:58:17 +01:00
Vladimir Komendantskiy
98f5304d4c
top-level interface now requires providing a NetworkInfo parameter
2018-05-29 14:53:01 +01:00
Vladimir Komendantskiy
d09f3e26b4
introduced common shared network information
2018-05-29 14:53:01 +01:00
Vladimir Komendantskiy
2aac22f083
comment updates
2018-05-28 11:54:37 +01:00