Expand description
Threshold Signing Scheme for EdDSA in Rust. Table of Contents
§Introduction
This is a high-performance threshold EdDSA/Schnorr signing protocol based on the paper Simple Three-Round Multiparty Schnorr Signing with Full Simulatability.
This is a production-ready, audited implementation and has undergone a comprehensive security audit by HashCloak.
§Features
- Distributed Key Generation (DKG)
- Distributed Signature Generation (DSG)
- Key refresh
- Quorum Change: dynamically change the participant set by adding or removing parties
§Installing, Testing, Benchmarks
§Building
cargo build§Running Tests
cargo test§Examples
Under examples/ directory there are examples on how to perform keygen, sign and refresh.
Running the examples:
cargo run --example keygen --features "eddsa test-support"
cargo run --example sign --features "eddsa test-support"
cargo run --example refresh --features "eddsa test-support"§Implementation Details
- This library provides Distributed Key Generation generic over any elliptic curve group that implements the
Grouptrait from theelliptic-curvecrate. - We currently support threshold Schnorr signing with random nonce over curve25519 and Bitcoin Taproot Schnorr over the secp256k1 curve.
Not in scope:
- This library contains only the cryptographic protocol and does not provide any networking functions.
- The parties in the protocol do not authenticate themselves and do not establish e2e secure channels
§Feature Flags
| Feature | Default? | Description |
|---|---|---|
eddsa | ✓ | Enables signing over curve25519 with edd25519-dalek signing objects compatibility |
taproot | Enables Bitcoin Taproot Schnorr signing over secp256k1 | |
serde | Make messages, state and session structures serializable | |
keyshare-session-id | Enable field final_session_id in Keyshare structure and use it to calculate session-id for DSG | |
test-support | Enable internal helpers and fixtures required by the bundled examples |
§Security
If you discover a vulnerability, please follow the instructions in SECURITY.
§Security Audit
HashCloak has performed a security audit in April, 2025 on the following commit:
146d4a57a82c62cf8d24fbd6b713d9bfc7cd534c
and the report is available here: security audit
§Contributing
Please refer to CONTRIBUTING.
§Reach out to us
Don’t hesitate to contact us if you need any assistance.
info@silencelaboratories.com
security@silencelaboratories.com
Happy signing!
Re-exports§
pub use curve25519_dalek;pub use elliptic_curve::group;
Modules§
- common
- Common utility functions and types
- derive
- keygen
- The
keygenmodule contains the key generation protocol - quorum_
change - sign
- The
signmodule contains the signing protocol