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
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
9d0f1b3d15
Remove output and message queue from CommonSubset.
2018-07-24 13:12:06 +02:00
Andreas Fackler
466104bce6
Extend *honey_badger module docs.
2018-07-18 16:46:46 +02:00
Peter van Nostrand
53a891380f
Replaced clear-on-drop with 'std::ptr::write_volatile'.
2018-07-13 20:58:30 -04: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
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
2a30860bb0
Add agreement module-level docs.
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
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
fd8e7a5900
Add DynamicHoneyBadger.
2018-06-26 15:13:04 +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
05da712c20
Added clear-on-drop secret-keys to 'NetworkInfo'.
2018-06-21 12:08:48 -04: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
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
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
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
Peter van Nostrand
19b982284b
Added error-chain error handling.
2018-05-20 07:51:33 -04: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
Andreas Fackler
4164af1702
Generalize TestNetwork and test HoneyBadger.
2018-05-16 16:21:30 +02:00
Andreas Fackler
b543b771a7
Rename util to fmt.
2018-05-15 08:31:13 +02:00
Andreas Fackler
e2c66e9a0a
Add optional serde support.
...
If the feature "serialization-serde" is specified, protocol messages
implement serde's `Serialize` and `Deserialize` traits.
Close #18
2018-05-14 18:32:59 +02:00
Andreas Fackler
e8838f1491
Make protobuf support optional.
...
Protobuf support is now only built if the feature
"serialization-protobuf" is enabled.
Close #19
2018-05-14 17:29:04 +02:00
Andreas Fackler
38cdd596a2
Start implementing the top-level Honey Badger algorithm.
...
This also contains a few fixes for the `common_subset` module:
* Rename `common_subset::Output` to `Message` to avoid confusing it
with the value that the algorithm outputs as a result.
* Implement dispatch of messages to the right instance within
`CommonSubset`, in a way that is transparent to the user.
2018-05-12 16:09:07 +02:00
Andreas Fackler
36183b1e27
Simplify the message types.
2018-05-10 17:52:12 +02:00
Vladimir Komendantskiy
51ef11b55c
fixed the count of matching AUX messages
2018-05-10 10:07:22 +01:00
Vladimir Komendantskiy
e0005a672b
removed the separate field in Agreement and corrected computation of estimated values
2018-05-10 10:07:22 +01:00
Vladimir Komendantskiy
394462c88b
changed code according to review comments
2018-05-10 10:07:22 +01:00
Andreas Fackler
eec3102cbf
Move node to examples, deduplicate code.
2018-05-05 17:54:29 +02:00
Andreas Fackler
6117e11a9e
applied rustfmt
2018-04-30 18:55:51 +03:00
Vladimir Komendantskiy
eef846550f
added the ACS algorithm with one clause not ready yet
2018-04-26 14:22:18 +01:00
Vladimir Komendantskiy
d9bc81fe5f
integration test of broadcast mostly ready; there is a thread termination issue however
2018-04-13 18:28:41 +01:00
Vladimir Komendantskiy
efdb4467c5
added broadcast integration test concept
2018-04-12 17:17:33 +01:00
Vladimir Komendantskiy
40575402c8
replaced AsRef constraint by more precise Hashable and corrected doc example
2018-04-11 17:57:30 +01:00
Vladimir Komendantskiy
1105d15995
created an abstract interface to streaming serialised IO
2018-04-11 13:21:50 +01:00
Vladimir Komendantskiy
fdb41d393f
renamed Task -> CodecIo and added debug logging for root hashes
2018-04-06 16:04:28 +01:00
Vladimir Komendantskiy
e9b0add188
removed redundant dependency on error_chain; corrected vector indices
2018-04-06 13:57:48 +01:00
Vladimir Komendantskiy
4cb80ee789
Introduced a local message delivery system as a solution to message broadcasts.
2018-04-05 13:09:46 +01:00
Vladimir Komendantskiy
6cbfbace1c
using the select_loop macro instead of explicit Select application
2018-04-04 12:49:11 +01:00
Vladimir Komendantskiy
186a855d2f
replaced lockable scoped channel variables with lock-free ones
2018-04-02 21:26:40 +01:00
Vladimir Komendantskiy
e01a80dfa7
introduced a Connection struct and a procedure to start the network
2018-04-01 22:29:12 +01:00
Vladimir Komendantskiy
d8c57280d3
decoder of broadcast value from Merkle tree leaves
2018-03-29 17:23:02 +01:00
Vladimir Komendantskiy
264b72011c
added example of intended use of Node and a draft of value encryption
2018-03-27 21:59:38 +01:00
Vladimir Komendantskiy
1cdec3c39b
broadcast algorithm drafted up to tree interpolation
2018-03-22 22:47:44 +00:00