Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

One Round DKG #589

Merged
merged 58 commits into from
Aug 16, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
58 commits
Select commit Hold shift + click to select a range
dcc26ec
Upstream GBP, divisor, circuit abstraction, and EC gadgets from FCMP++
kayabaNerve Jul 22, 2024
db31809
Initial eVRF implementation
kayabaNerve Jul 22, 2024
49a1831
Add the openings of the PCs to the eVRF as necessary
kayabaNerve Jul 22, 2024
772d033
Add implementation of secq256k1
kayabaNerve Jul 22, 2024
b847296
Make DKG Encryption a bit more flexible
kayabaNerve Jul 23, 2024
b6e6880
Make NUM_BITS an argument for the field macro
kayabaNerve Jul 23, 2024
b710303
Have the eVRF take a Zeroizing private key
kayabaNerve Jul 23, 2024
7710da4
Initial eVRF-based DKG
kayabaNerve Jul 24, 2024
fa31f26
Add embedwards25519 curve
kayabaNerve Jul 24, 2024
96175e1
Inline the eVRF into the DKG library
kayabaNerve Jul 25, 2024
05c26d7
Add documentation to the eVRF-based DKG
kayabaNerve Jul 25, 2024
eca82f3
Add paragraph claiming robustness
kayabaNerve Jul 25, 2024
00dc308
Update to the new eVRF proof
kayabaNerve Jul 25, 2024
ef68885
Finish routing the eVRF functionality
kayabaNerve Jul 25, 2024
4bd0d71
Add initial eVRF DKG test
kayabaNerve Jul 27, 2024
31ac0ac
Improve eVRF DKG
kayabaNerve Jul 28, 2024
c960d6b
Start using a proper error for the eVRF DKG
kayabaNerve Jul 28, 2024
f93bd42
Resolve various TODOs
kayabaNerve Jul 28, 2024
681010f
Ban zero ECDH keys, document non-zero requirements
kayabaNerve Jul 28, 2024
a6775d7
Implement eVRF traits, all the way up to the DKG, for secp256k1/ed25519
kayabaNerve Jul 28, 2024
c5cc0dc
Add Ristretto eVRF trait impls
kayabaNerve Jul 28, 2024
65efbf4
Support participating multiple times in the eVRF DKG
kayabaNerve Jul 29, 2024
fb7e966
Only participate once per key, not once per key share
kayabaNerve Jul 31, 2024
12f74e1
Rewrite processor key-gen around the eVRF DKG
kayabaNerve Aug 1, 2024
2f564c2
Finish routing the new key gen in the processor
kayabaNerve Aug 1, 2024
d3f0378
Deduplicate and better document in processor key_gen
kayabaNerve Aug 1, 2024
b5bf70b
Update serai-processor tests to the new key gen
kayabaNerve Aug 2, 2024
9e716c0
Correct amount of yx coefficients, get processor key gen test to pass
kayabaNerve Aug 2, 2024
fc51c9b
Add embedded elliptic curve keys to Substrate
kayabaNerve Aug 3, 2024
5ed3559
Update processor key gen tests to the eVRF DKG
kayabaNerve Aug 3, 2024
58a435d
Have set_keys take signature_participants, not removed_participants
kayabaNerve Aug 4, 2024
54eefbd
Update the coordinator binary for the new DKG
kayabaNerve Aug 4, 2024
1b76133
Add sensible Debug to key_gen::[Processor, Coordinator]Message
kayabaNerve Aug 5, 2024
f08faea
Have the DKG explicitly declare how to interpolate its shares
kayabaNerve Aug 5, 2024
9e8e134
Replace Interpolation::None with Interpolation::Constant
kayabaNerve Aug 5, 2024
e74c8f3
Get coordinator tests to pass
kayabaNerve Aug 5, 2024
2ae2883
Update spec to the new DKG
kayabaNerve Aug 5, 2024
89fc88b
Get clippy to pass across the repo
kayabaNerve Aug 6, 2024
b8912e4
cargo machete
kayabaNerve Aug 6, 2024
8de696f
Add an extra sleep to ensure expected ordering of `Participation`s
kayabaNerve Aug 6, 2024
3042697
Update orchestration
kayabaNerve Aug 6, 2024
d943e03
Remove bad panic in coordinator
kayabaNerve Aug 6, 2024
8c50a31
Improve documentation on functions
kayabaNerve Aug 6, 2024
c790efa
Update TX size limit
kayabaNerve Aug 6, 2024
f27fb9b
Correct error in the Processor spec document
kayabaNerve Aug 6, 2024
ec62930
Update a few comments in the validator-sets pallet
kayabaNerve Aug 6, 2024
e9d09ef
Send/Recv Participation one at a time
kayabaNerve Aug 6, 2024
dbf32d5
Correct ThresholdKeys serialization in modular-frost test
kayabaNerve Aug 6, 2024
01de73e
Updating existing TX size limit test for the new DKG parameters
kayabaNerve Aug 6, 2024
470b5f7
Increase time allowed for the DKG on the GH CI
kayabaNerve Aug 6, 2024
756db82
Correct construction of signature_participants in serai-client tests
kayabaNerve Aug 12, 2024
0fe7360
Further contextualize DkgConfirmer by ValidatorSet
kayabaNerve Aug 14, 2024
843396f
Add necessary calls to set_embedded_elliptic_curve_key in coordinator…
kayabaNerve Aug 15, 2024
5f1fcff
Correct shimmed setting of a secq256k1 key
kayabaNerve Aug 15, 2024
e098369
Merge branch 'develop' into one-round-dkg
kayabaNerve Aug 15, 2024
6bc746e
cargo fmt
kayabaNerve Aug 15, 2024
35c54da
Don't use `[0; 32]` for the embedded keys in the coordinator rotation…
kayabaNerve Aug 15, 2024
1f093cf
Big-endian secq256k1 scalars
kayabaNerve Aug 15, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions .github/workflows/crypto-tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,10 @@ jobs:
-p multiexp \
-p schnorr-signatures \
-p dleq \
-p generalized-bulletproofs \
-p generalized-bulletproofs-circuit-abstraction \
-p ec-divisors \
-p generalized-bulletproofs-ec-gadgets \
-p dkg \
-p modular-frost \
-p frost-schnorrkel
120 changes: 115 additions & 5 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

30 changes: 27 additions & 3 deletions Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -30,9 +30,16 @@ members = [
"crypto/ciphersuite",

"crypto/multiexp",

"crypto/schnorr",
"crypto/dleq",

"crypto/evrf/secq256k1",
"crypto/evrf/embedwards25519",
"crypto/evrf/generalized-bulletproofs",
"crypto/evrf/circuit-abstraction",
"crypto/evrf/divisors",
"crypto/evrf/ec-gadgets",

"crypto/dkg",
"crypto/frost",
"crypto/schnorrkel",
Expand Down Expand Up @@ -110,18 +117,32 @@ members = [
# to the extensive operations required for Bulletproofs
[profile.dev.package]
subtle = { opt-level = 3 }
curve25519-dalek = { opt-level = 3 }

ff = { opt-level = 3 }
group = { opt-level = 3 }

crypto-bigint = { opt-level = 3 }
secp256k1 = { opt-level = 3 }
curve25519-dalek = { opt-level = 3 }
dalek-ff-group = { opt-level = 3 }
minimal-ed448 = { opt-level = 3 }

multiexp = { opt-level = 3 }

monero-serai = { opt-level = 3 }
secq256k1 = { opt-level = 3 }
embedwards25519 = { opt-level = 3 }
generalized-bulletproofs = { opt-level = 3 }
generalized-bulletproofs-circuit-abstraction = { opt-level = 3 }
ec-divisors = { opt-level = 3 }
generalized-bulletproofs-ec-gadgets = { opt-level = 3 }

dkg = { opt-level = 3 }

monero-generators = { opt-level = 3 }
monero-borromean = { opt-level = 3 }
monero-bulletproofs = { opt-level = 3 }
monero-mlsag = { opt-level = 3 }
monero-clsag = { opt-level = 3 }

[profile.release]
panic = "unwind"
Expand Down Expand Up @@ -155,6 +176,9 @@ matches = { path = "patches/matches" }
option-ext = { path = "patches/option-ext" }
directories-next = { path = "patches/directories-next" }

# The official pasta_curves repo doesn't support Zeroize
pasta_curves = { git = "https://github.com/kayabaNerve/pasta_curves", rev = "a46b5be95cacbff54d06aad8d3bbcba42e05d616" }

[workspace.lints.clippy]
unwrap_or_default = "allow"
borrow_as_ptr = "deny"
Expand Down
1 change: 1 addition & 0 deletions coordinator/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ workspace = true
async-trait = { version = "0.1", default-features = false }

zeroize = { version = "^1.5", default-features = false, features = ["std"] }
bitvec = { version = "1", default-features = false, features = ["std"] }
rand_core = { version = "0.6", default-features = false, features = ["std"] }

blake2 = { version = "0.10", default-features = false, features = ["std"] }
Expand Down
Loading
Loading