Practical overview
When it fits
Use it when an application needs protocol-level threshold ECDSA key generation or signing and its developers can supply the message transport and application integration.
Who it is for
- Rust developers building wallet or custody systems that need threshold ECDSA key generation or signing.
- Teams integrating a multi-party signing protocol with their own participant communication and message-routing layer.
Documented uses
- Create ECDSA secret shares among multiple participants.
- Generate signatures using those shares through a multi-party signing protocol.
- Precompute message-independent offline signing work before the message is ready.
- Route broadcast, peer-to-peer and subset protocol messages between participants.
Requirements & limits
The repository is public and the library is licensed under GNU GPL v3.0.
- The documented current algorithm support is ECDSA; EdDSA and BLS are mentioned as future integrations, not current capabilities.
- The application must route protocol messages and pass received messages to the relevant phase handler.
- The README provides a key-generation flow and points to separate documentation for SignOffline and SignOnline.
Check current requirements in the official documentation. Source-based guidance does not mean OpenViST has run or independently tested this project.
Run the documented three-party ECDSA key-generation protocol
Create threshold ECDSA secret shares for three parties with threshold 1.
Before you start
- A Rust project that can use the Open TSS library; the repository documents Rust usage but does not specify dependency setup.
- Three parties identified as "1", "2", and "3".
- An external communication layer to route broadcast, peer-to-peer, or subset messages between participants.
Steps
For each participant, initialize a
KeyGenPhasewithParameters { threshold: 1, share_count: 3 }and the party IDs1,2, and3.Call
process_beginand use the returnedSendingMessagesvariant to route messages: broadcast to all participants, peer-to-peer to the indicated recipient, or subset messages to the indicated parties.When a message arrives, pass its sender ID and message bytes to
msg_handler; route any returned messages as in the previous step.Continue processing rounds until
SendingMessages::KeyGenSuccessWithResultindicates that key generation has completed.
Expected outcome
The protocol reports completion with a key-generation result containing secret-share output.
Guide limitations
- The repository leaves transport implementation and message delivery to the integrating application.
- The README does not provide a complete runnable program or dependency-installation steps.
- This recipe covers key generation only; signing is a separate protocol.
Plan message-independent offline work for threshold ECDSA signing
Prepare to use the documented offline and online signing phases, with offline work performed before the message is known.
Before you start
- Secret shares created by the key-generation protocol.
- An external communication layer for exchanging protocol messages among participants.
Steps
Use the Open TSS signing protocol with the generated secret shares; the README identifies
SignOfflineandSignOnlineas the signing phases.Perform the offline phase in advance because it is independent of the message to be signed.
For the online phase, pass the message and the offline-phase output; consult the ECDSA documentation for further protocol details.
Expected outcome
The documented workflow separates precomputable, message-independent work from the online phase that uses the message and offline output to generate a signature.
Guide limitations
- The README does not include detailed signing code or the full message-routing procedure for these phases.
- No signing result or performance outcome is verified here.
Sources & review
Source record details
- Source availability
- Active
- Sources checked
- 17 October 2026
- Original website title
- LatticeX-Foundation/opentss · Official homepage title · retained in its source language

