[ANN] Sygnature

Sygnature is a wallet project focused on threshold signing (ROAST).

Instead of keeping one private key on one machine, it lets a group of participants create and use a shared ROAST/FROST signing key. The goal is to make multisigs of massive scale feel closer to a normal wallet workflow.

The wallet has a coordinator-based ROAST flow. Participants import or create client configs, connect to the coordinator, run DKG to generate a shared group public key, and then use that key to derive the wallet address. Each participant keeps their own secret share locally, and signing requires the configured threshold of participants to cooperate.

It also supports normal, single-signature wallets.

For transactions, Sygnature builds a proposal that can be reviewed by peers before signing. The proposal shows the destination, amount, selected inputs, outputs including change, fee, unsigned transaction hex, Taproot signing details, message hashes, group key, creator, and expiry. Once enough participants approve and contribute signing shares, the client assembles the final Schnorr signature and broadcasts the transaction to the network.

The current work has been heavily focused on making the web and desktop clients reliable with the ROAST coordinator. I tested the app on Linux, Web, and OSX. It works well but there are still some bugs and UX is rough around the edges. I will publish the source code and host the web app soon ™.

Project is in active developement, but the direction is a practical threshold wallet for Peercoin that keeps the user-facing flow understandable while using the FROST/ROAST signing underneath.

________________________

Future prospects

I want to implement this “room” model for ROAST coordination. A user would create a room, become its admin, and invite other participants through a signed room descriptor and invite link. Links would look like this: app://join-room?room_id=room_123&server=wss://signal.example.com

The admin’s client app could act as the default ROAST coordinator, with WebRTC used for peer to peer communication. This design would avoid relying on a server which would host the ROAST coordinator.

Each room could contain ROAST wallets across multiple networks, such as Peercoin, Bitcoin, Litecoin, and other UTXO chains which support Schnorr signatures. It could also support Ethereum-style smart-contract accounts. The broader idea is something like a shared wallet for assets such as USDC, but using ROAST threshold signing. This builds on the cross-chain transaction experiments I demonstrated last year in my `coinlibplayground2` repo.

At this point this is very close to my idea of a “Network Wallet”. Then it will be time to think about seamless cross-chain swaps without the need to wrap coins, oracles, DLC marketplace, the lot. :vulcan_salute:

___________________________________

Some screenshots:

6 Likes

Update.

I started the entire project from scratch at some point as Iroh (more on that later) released v1.0 and someone made a Dart wrapper for it. That made me drop the entire stack I already made.

Now the app is fully p2p. App to app. No servers.

Iroh

Iroh is a peer-to-peer networking layer that lets devices connect using a cryptographic identity instead of relying on fixed IP addresses. Like peercoin address, but it is works like an IP address. It automatically figures out how to reach the other device, tries to establish a direct connection through NATs and firewalls, and falls back to a relay when direct connectivity is not possible. Once connected, the two peers communicate over an encrypted QUIC connection, while Iroh handles most of the messy networking details such as discovery, path changes, and reconnecting.

The coordinator used to be a server, and now it is in the app itself.

                       Iroh / QUIC
Signer A  ---------------------------------+
Signer B  ---------------------------------+--> Coordinator
Signer C  ---------------------------------+       |- room and session state
                                                  |- event distribution
                                                  `- DKG/ROAST coordination

ROAST workflow

  1. Someone creates a ROAST group and decides how many people can sign and how
    many signatures are needed to spend.
  2. Each signer shares the public key from their device with the group creator.
    It is only used to identify them.
  3. The creator adds those public keys and makes a separate invite for each
    signer. An invite only works for the person it was made for.
  4. Each signer pastes their invite into Sygnature and joins over an encrypted
    p2p Iroh connection.
  5. Once everyone is in, the signers approve DKG. This creates the shared wallet
    address, while every signer keeps their own private share on their device.
  6. The shared Taproot address can now receive Peercoin like any other wallet.
  7. When someone wants to spend, Sygnature asks the other signers to review and
    approve the transaction. As soon as enough people approve, the transaction
    is signed and sent to the Peercoin network through ElectrumX.

So far it works on linux and macos and I don’t believe there will be issues with Windows build.


2 Likes

Would it be possible to use this Iroh technology in the reference client, so a user doesn’t have to expose their IP address while minting? It could be a way to anonymize minters, so their physical location is not publicly revealed. That is one thing I never liked about minting, how everyone can see the location where you are minting from by looking at your IP address.

It won’t hide your IP. In the end this works over the regular internet (IPs), it just makes it nice to traverse all the networks in between and establish a direct connection.

I know in Bitcoin they have support for using Tor. Peercoin might have that too.

Smol weekend update, Sygnature works on android now as well.

2of3 ROAST groups tested working.

2 Likes

Damn dude, you’re slaying!

Killing It GIFs | Tenor

This is sick. When will it be released?

When ready (™)

I guess I can make alfa testing public. Maybe by the end of the week?

I started open sourcing it. As of rework / rewrite most of the logic was extracted into noosphere library. And that lib is open source as of yesterday.

2 Likes

Sygnature is now open source (BSD-3).

Alpha software — use at your own risk. Breaking changes, including changes
to storage formats and protocols, are possible at any time. Backward
compatibility and data preservation are not guaranteed. The software is
provided without warranty of any kind. Do not use it for funds you cannot
afford to lose, and keep secure backups of your recovery material.

in Releases you can find compiled binaries.


Contributions are welcome.

Pls test :slight_smile:

1 Like

We’re up to the 3rd alpha build now