Skip to content

wallet: Multi-sig flow with descriptor wallets #21278

Closed
@laanwj

Description

It would be nice to have documentation on how to set up a basic M-of-N multisig between multiple people using descriptor wallets and PSBTs, as well as a signing flow.

E.g. (borrowed some steps from @jonasschnelli)

  • First phase: generate and exchange xpubs:
    • Every participant generates an xpub: most straightforward is to create a new wallet, I guess, but how to get the xpub to share for a specific BIP32 path?
    • Maybe wallet: listdescriptors uses normalized descriptor form #21277 helps here but it might be putting the cart before the horse: do we want the default non-multisig descriptors at all here? I don't think so.
    • Share it with the other participants.
  • Second phase: Every participant imports the following descriptors using importdescriptors:
    • Receiving (internal: false) addresses are wsh(sortedmulti(<M>,xpubA/0/*,xpubB/0/*,xpubC/0/*,…))
    • Change (internal: true) addresses are wsh(sortedmulti(<M>,xpubA/1/*,xpubB/1/*,xpubC/1/*,…))
  • Send funds to the resulting address (every participant should get the same addresses).
  • When making a sending transaction create one using walletcreatefundedpsbt (everyone can initiate this)
    • Send the resulting PSBT to other users
    • At least M users checks it with decodepsbt then (if ok) signs it with walletprocesspsbt
    • Collect the signed PSBTs with joinpsbts then broadcast the resulting transaction

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions