Commit Graph

214 Commits

Author SHA1 Message Date
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