Inspiration

We were willing to learn more about MPC (multi party computation).

What it does

It allows people to generate multisig addresses where signatures are combined offline. Transactions from that address appear as regular P2PKH transactions, leading to smaller transactions (thus less fees), and better privacy, as no single participant public key is exposed on-chain.

How we built it

We used a rust crate called multi-party-ecdsa as base. We took their examples and added bitcoin address derivation and transaction signing on top of it. For the TUI we used a crate called ratatui, and some help from deepseek to generate code faster.

Challenges we ran into

multi-party-ecdsa examples are very unstable. They often will crash and signing sessions fail, which slowed us down. Also, fixing the ratatui code that deepseek generated took us a while. Another issue is that we needed to know what the public key of the resulting MPC private key was upfront, so we could derive the address and send fund to it. Our workaround was to sign a dummy message using the key, retrieve the signature and recover the public key from the signature itself.

Accomplishments that we're proud of

We managed to perform an E2E test, generating the keys, deriving the addresses and successfully broadcasting a transaction in signet, which contains a custom OP_RETURN as a proof: https://mempool.space/signet/tx/35e24cc19a3119517851ee97e0b824b95717019a6f2ade89044ccbdf04a9cda7

What we learned

We learned a bit about MPC, how the distributed key generation works and how it can be used on Bitcoin. We also learned that ratatui is a very nice tool for

What's next for BoomerSig

  • Make the server more reliable.
  • Print the actual signed transaction in the TUI itself and not to an external file
  • Possibly broadcast the transaction
  • Encrypt local shares and backup shares files
  • Make communication with the server use https
  • Clean up files

Built With

Share this project:

Updates