Inspiration

Today, most Bitcoin multisignature solutions require lots of time, coordination, and money in order to securely facilitate a multisignature transaction. While users gain a degree of security and privacy using standard multisignature schemas, it can be a MONSTEROUS experience.

Our team knows we can enhance this process by introducing more privacy and reducing fees thanks to recent Bitcoin improvements and decentralized social media enhancements.

Presentation

Click here to see our project presentation.

What it does

Munstr (MuSig + Nostr) is a terminal based wallet that enables a group of signers to coordinate interactive signing sessions for k-of-k multisignature outputs.

This isn't your grandma's multisignature wallet.

Munstr uses MuSig, a technique that leverages the linear properties of Schnorr to do key and signature aggregation. This means outputs belong to a single aggregate public key. To anyone observing the blockchain, these transactions look like single key Pay-to-Taproot (P2TR) spends. Finally, the blockchain footprints for multisignature transactions are indistinguishable from that of single key (Taproot) spends!

It also uses Nostr, a decentralized protocol to facilitate a secure and encrypted method of transporting and digitally signing bitcoin transactions in a way that chain analysis cannot identify the nature and setup of the transaction data.

Everyone deserves easy, affordable, and private multisignature solutions, even monsters.

How we built it

There are three major components to Munstr.

Signer The signer is responsible for using private keys in a multisignature keyset to digitally sign transactions and generate nonces that are required by MuSig.

Nostr The Nostr decentralized network acts as a transport and communications layer for wallet data.

Coordinator Coordinators act as a mediator between digital signers and wallets. The coordinator facilitates digital signatures from each required (n-of-n) key signers and assists in assembling the aggregate signature and fully signed transaction.

Challenges we ran into

Schnorr and MuSig, regardless if it's MuSig 1 or 2 are still pretty tricky, and there are many details to account for. One example is a private key needs to be negated if it results in a public key with an odd y-coordinate. It can be easy to dismiss these details at first, but sooner or later there will be a price to pay for ignoring them. We are especially grateful for the good work done by Bitcoin Optech on their Schnorr Taproot workshop as it has been a tremendous resource for helping understand Schnorr and MuSig!

We also faced some reliability issues with Nostr relays. Given more time, we would have liked to run our own for this project.

Accomplishments that we're proud of

We're proud to have found a way to combine some of our favorite new technologies in Bitcoin and decentralized networks to create something that can offer users more privacy and save them money.

Through this project, our team learned a lot about how MuSig and Nostr work under the hood, and have a new appreciation for these amazing technologies!

What we learned

  • Cryptography is hard: We thought we knew this, but were reminded of it once again
  • You'll never have enough time during a hackathon! Dividing and conquering helps, and it's never too early to start on the presentation materials.
  • Focus on the core features, the rest can come later. We had lots of ideas we were really excited to incorporate, but had to timebox each of our mini milestones and leave behind anything that wasn't absolutely necessary.

What's next for Munstr

  • Upgrade to MuSig2
  • Richer options for transaction fee estimation
  • Allow users to connect to their own Bitcoin node, allowing for sovereign transaction lookup and broadcast
  • Support for BIP-32 (HD wallet) and BIP-39 (mnemonic seed phrase)
  • Hardware wallet integration (SeedSigner, Blockstream Jade)

nostr

  • Encrypted DM support
  • Custom relay servers
  • Custom PSBT event types

Built With

Share this project:

Updates