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.