Inspired by Nick Farrow's Frostr, I've developed a Fedimint module for collaboratively signing Nostr events. If you're curious about the code, or playing around with the module, check it out below!
Instead of FROST though, this module implements ROAST, which is essentially just a wrapper on top of FROST to make it more robust. This means that even if there's malicious peers within the federation that withhold signing a note (which in FROST would stall the signing process), as long as at least a threshold number of peers do decide to sign, a valid Schnorr signature will be constructed.
For signing Nostr notes via a Fedimint, is this extra robustness necessary? Probably not. But it was fun to implement.
Here's an example note that I published with a regtest Fedimint
Fedimint is a pretty convenient development environment for implementing MPC protocols like ROAST. Because there's a consensus algorithm and communication channels between each of the peers, the data that needs to be exchanged between each of the peers (nonces, public keys, etc) can just be broadcasted via consensus. No need to worry about establishing connections with peers, worrying about ordering of messages, etc.

Use Cases

I think Fedimints being able to sign Nostr events is cool because it represents an "official" broadcast mechanism for the Fedimint, since all events are signed. Users can verify that the note originated from the federation since it is signed under a joint public key that the federation created during setup. Federations could use this to broadcast when they're upgrading their infrastructure, if there's new gateways available, etc.
Additionally, @benthecarman recently proposed NIP-87 which allows for broadcasting ecash mint registrations over Nostr. Clients can then use these registrations to discover Fedimints or Cashu mints that are trusted by their friends. We implemented these ecash mint registration events directly into ROASTr, so that Fedimints can create a registration announcement that is signed from the Federation's npub.
Here's an example regtest Federation announcement
Shout out to @benthecarman and @garyKrause_ for helping me with design and implementation.
It's interesting that Fedimints are finally getting to a level where they can boast of having some use cases.
Fedimint 🀝 Nostr
Imagine not being bullish on either
roastr brings a threshold multi-sig option to nostr by leveraging FROST/ROAST. (Fedimint's tech enables this because of the consensus mechanism of Fedimint coupled with FROSTs nonce management requirement.)
you can create a nostr account that requires 2of3 or 3of5 or 1of4 signatures to be valid. This means that a multi-person entity can have a quorum of signers for nostr events.
you can have a nostr account with friends. where you can "vote" on approving a note (or other stuff). Enterprises can have a board "vote" using nostr.
How do you save the backup?
Nothing fancy currently. The private key shares are persisted to a local config file, that file can just be backed up somewhere.
0 sats \ 1 reply \ @nym 30 Apr
Thanks. I know it will is still early and things are in development, but it will nice when there can be offline signing via QR codes or something similar.
That would be cool. Potentially possible once there's signing devices that support FROST