DKLs23 Lockness is a Rust library demonstrating the core protocol flow for threshold ECDSA signatures using the DKLs23 design, built for the Lockness ecosystem. It shows how multiple parties can jointly generate a key, pre-sign, and sign messages without any single party ever holding the full secret key.
Key features:
- Honest, readable protocol structure
- Multi-party key generation (MPC DKG)
- Pre-signing and signing helpers
- Curve-generic cryptography (works for any supported curve)
- Explicit boundaries for unimplemented cryptography (OT/MtA)
- Simulation tests for protocol correctness
Benchmark plots are saved in bench_results:
To regenerate them:
cargo bench --bench flows -- --noplot
python3 scripts/plot_benchmarks.py
- Key Generation: Each party creates a secret share, commits to it, then reveals it. All parties verify everyone was honest and compute a shared public key.
- Pre-signing: Each party samples a random nonce, commits, and reveals. (The real protocol would use advanced OT/MtA here; this MVP uses a mock.)
- Signing: Parties combine their shares and nonces to produce a valid ECDSA signature, without any single party ever knowing the full secret key.
- Simulation: The protocol is tested in-memory with multiple parties to ensure correctness.
- Keygen round 1: commitment broadcast
- Keygen round 2: decommitment and verification
- Presign nonce commitment/opening helpers
- Real ECDSA signing and verification helpers
- Simulation test: all parties agree on the same public key
| Component | Status |
|---|---|
| Key generation | Implemented |
| Presign commitment/open | Implemented |
| Signing helpers | Implemented |
| OT extension / MtA | Testing |
| Malicious checks | Not yet |
| Full threshold signing | Not yet |
cargo testThis MVP shows that the DKLs23 paper can be translated into a clean Lockness style Rust layout with typed protocol flow, curve-generic key material, and simulation-backed tests. It gives a starting point for the cryptographic work that is still ahead, while being explicit about what is implemented and what remains deferred.
