Skip to content

Add DKLs23 key generation protocol example#21

Closed
sridhar-panigrahi wants to merge 1 commit intoLFDT-Lockness:mfrom
sridhar-panigrahi:feat/dkls23-keygen-example
Closed

Add DKLs23 key generation protocol example#21
sridhar-panigrahi wants to merge 1 commit intoLFDT-Lockness:mfrom
sridhar-panigrahi:feat/dkls23-keygen-example

Conversation

@sridhar-panigrahi
Copy link
Copy Markdown

This adds a complete
implementation of the DKLs23 n-of-n distributed key generation protocol
as an example, alongside the existing random-generation-protocol.

The protocol follows Section 5 of eprint 2023/765 — three rounds of
commit, decommit, and Schnorr proof-of-knowledge under a joint random
challenge. It uses generic-ec for curve-generic EC arithmetic and
generic-ec-zkp for Schnorr proofs, showing how round-based handles a
real cryptographic protocol with reliable broadcast, domain-separated
hashing via udigest, and constant-time verification.

Tested with round_based::sim (both sync and async) across secp256k1 and
secp256r1 — all tests verify public key agreement and secret share
reconstruction.

This is groundwork toward a full DKLs23 threshold ECDSA implementation
in the Lockness ecosystem. Happy to adjust anything based on your
feedback.

Implements the n-of-n Distributed Key Generation protocol from
"Threshold ECDSA from ECDSA Assumptions: The Multiparty Case"
(Doerner, Kondi, Lee, Shelat, IEEE S&P 2023, eprint 2023/765)
as a round-based example protocol.

The 3-round protocol follows the paper's DKG specification:
  Round 1: commit to public share + Schnorr nonce via domain-separated hash
  Round 2: decommit and verify all commitments
  Round 3: Schnorr proof-of-knowledge under joint random challenge (rid = XOR)

Uses generic-ec for curve-generic EC arithmetic and generic-ec-zkp for
Schnorr proofs, demonstrating how round-based can host real cryptographic
protocols beyond toy examples.

Tested with round_based::sim (sync + async) across secp256k1 and secp256r1,
verifying public key agreement and secret share reconstruction.

Signed-off-by: Shridhar Panigrahi <sridharpanigrahi2006@gmail.com>
@sridhar-panigrahi
Copy link
Copy Markdown
Author

@maurges , @survived , please let me know your thoughts on this !

@survived
Copy link
Copy Markdown
Contributor

survived commented Apr 13, 2026

Hello @sridhar-panigrahi, what you submit should be a separate crate, not an "example" in round-based. Note that in contribution guidelines we ask all contributors to contact us before doing any work. It's usually a good reflex to talk to the maintainers before engaging into any development, at least to make sure your views are aligned.

Assuming that you did it in anticipation of mentorship program, this is a protocol that is supposed to be developed during the program, after having discussed a plan with us, in a incremental way with regular feedback, and not submitted in one commit as an example to round-based crate.

@survived survived closed this Apr 13, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants