Skip to main content

Crate multi_party_schnorr

Crate multi_party_schnorr 

Source
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 Group trait from the elliptic-curve crate.
  • 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

FeatureDefault?Description
eddsaEnables signing over curve25519 with edd25519-dalek signing objects compatibility
taprootEnables Bitcoin Taproot Schnorr signing over secp256k1
serdeMake messages, state and session structures serializable
keyshare-session-idEnable field final_session_id in Keyshare structure and use it to calculate session-id for DSG
test-supportEnable 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 keygen module contains the key generation protocol
quorum_change
sign
The sign module contains the signing protocol

Constants§

VERSION