OpenViSTAI · Agents · Blockchain · Crypto
Menu
Developer Tools

Open TSS

Open TSS is a Rust library implementing multi-party threshold ECDSA protocols for generating secret shares and signing with them. It separates signing into message-independent offline work and online signing, while leaving protocol-message delivery to an external communication layer.

Independent OpenViST project profile, based on linked sources.

Open TSS — OpenViST project profile in Developer Tools.
OpenViST project illustration. See the linked sources for product details.
Understand the project

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.
Before you choose

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.

Source-based practical guide

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

  1. For each participant, initialize a KeyGenPhase with Parameters { threshold: 1, share_count: 3 } and the party IDs 1, 2, and 3.

  2. Call process_begin and use the returned SendingMessages variant to route messages: broadcast to all participants, peer-to-peer to the indicated recipient, or subset messages to the indicated parties.

  3. When a message arrives, pass its sender ID and message bytes to msg_handler; route any returned messages as in the previous step.

  4. Continue processing rounds until SendingMessages::KeyGenSuccessWithResult indicates 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.
Source-based practical guide

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

  1. Use the Open TSS signing protocol with the generated secret shares; the README identifies SignOffline and SignOnline as the signing phases.

  2. Perform the offline phase in advance because it is independent of the message to be signed.

  3. 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.
Evidence and transparency

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