Skip to main content
Multi-signature (multisig) wallets require multiple signatures to authorize a transaction. This provides enhanced security by distributing control among multiple parties or devices.

What is Multisig?

A multisig wallet uses an M-of-N scheme where:
  • N is the total number of public keys
  • M is the minimum number of signatures required
Common configurations:
  • 2-of-3: Requires 2 signatures from 3 possible keys
  • 2-of-2: Requires both parties to sign
  • 3-of-5: Requires 3 signatures from 5 possible keys

Prerequisites

This guide uses:
  • Bitcoin Core with descriptor wallet support
  • Signet network for testing (use mainnet for production)
  • jq for JSON processing (optional but helpful)

Creating a 2-of-3 Multisig Wallet

1

Create participant wallets

Create three separate descriptor wallets, one for each participant:
These wallets contain private keys and should only be used for signing multisig transactions. Don’t use them directly for receiving funds to avoid address reuse.
2

Extract xpubs from each wallet

Use listdescriptors to get the extended public key (xpub) from each wallet:
Extract the WPKH descriptor and get the xpub portion. With jq:
Repeat for participant_2 and participant_3.
3

Create the multisig descriptor

Combine the xpubs into a sorted multisig descriptor:
  • wsh - Witness Script Hash (native SegWit)
  • sortedmulti(2,...) - 2-of-3 multisig with BIP 67 key sorting
  • <0;1> - Multipath for external/internal (change) addresses
4

Add checksum to descriptor

Calculate and append the descriptor checksum:
5

Create watch-only multisig wallet

Create a wallet with private keys disabled:
Import the multisig descriptor:
6

Verify wallet creation

Check wallet info:
The wallet should show "private_keys_enabled": false.

Funding the Multisig Wallet

Generate a receiving address from the multisig wallet:
On signet, get test coins from the faucet:
Or visit https://signetfaucet.com Verify balance:

Creating a Multisig Transaction

1

Create unsigned PSBT

Use the multisig wallet to create a funded PSBT:
2

Analyze the PSBT

Check what signatures are needed:
This shows missing signatures and estimated fees.
3

Sign with first participant

4

Sign with second participant

For a 2-of-3 multisig, you only need 2 signatures. The third participant doesn’t need to sign.
5

Combine the signatures

6

Finalize and broadcast

Returns the transaction ID if successful.

Alternative: Sequential Signing

Instead of parallel signing and combining, participants can sign sequentially:

Multisig Descriptor Types

  • Most efficient (lowest fees)
  • Best privacy
  • Modern format

Nested SegWit (Legacy Compatibility)

  • Compatible with older wallets
  • Slightly higher fees than native SegWit
  • Highest fees
  • No SegWit benefits
  • Only use if absolutely necessary

Security Best Practices

Critical Security Measures:
  • Store participant wallets on different devices
  • Never store all private keys in one location
  • Use hardware wallets for production multisig
  • Back up all xpubs and the multisig descriptor
  • Test with small amounts on signet first
  • Verify all transaction details before signing

Recovery and Backup

What to Backup

  1. Multisig descriptor (with checksum)
  2. All participant wallet seeds (12/24 word phrases)
  3. Derivation paths used for xpubs

Recovering a Multisig Wallet

To recover:
  1. Restore participant wallets from seeds
  2. Recreate the multisig descriptor with same xpubs
  3. Import descriptor into a new watch-only wallet

Using sortedmulti vs multisig

sortedmulti (Recommended):
  • Implements BIP 67 key sorting
  • Order of xpubs doesn’t matter
  • All participants get same addresses
  • Easier wallet recovery
multisig:
  • Keys stay in specified order
  • All participants must use exact same order
  • Error-prone for recovery

Combining with Offline Signing

For maximum security, combine multisig with offline signing:
  1. Keep one participant wallet completely offline
  2. Create PSBTs on online watch-only wallet
  3. Sign on offline device
  4. Combine signatures online
  5. Broadcast transaction
See Offline Signing for details.

Troubleshooting

”Insufficient funds” Error

Ensure coins have at least 1 confirmation:

“Missing signatures” After Combining

Verify you have enough signatures for M-of-N:

“Could not sign transaction” Error

Check that the participant wallet has the correct private key:

Next Steps

PSBT

Deep dive into Partially Signed Bitcoin Transactions

Offline Signing

Combine multisig with air-gapped security