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
- 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)
jqfor 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:
2
Extract xpubs from each wallet
Use Extract the WPKH descriptor and get the xpub portion. With Repeat for participant_2 and participant_3.
listdescriptors to get the extended public key (xpub) from each wallet:jq: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: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
Alternative: Sequential Signing
Instead of parallel signing and combining, participants can sign sequentially:Multisig Descriptor Types
Native SegWit (Recommended)
- Most efficient (lowest fees)
- Best privacy
- Modern format
Nested SegWit (Legacy Compatibility)
- Compatible with older wallets
- Slightly higher fees than native SegWit
Legacy (Not Recommended)
- Highest fees
- No SegWit benefits
- Only use if absolutely necessary
Security Best Practices
Recovery and Backup
What to Backup
- Multisig descriptor (with checksum)
- All participant wallet seeds (12/24 word phrases)
- Derivation paths used for xpubs
Recovering a Multisig Wallet
To recover:- Restore participant wallets from seeds
- Recreate the multisig descriptor with same xpubs
- 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
- 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:- Keep one participant wallet completely offline
- Create PSBTs on online watch-only wallet
- Sign on offline device
- Combine signatures online
- Broadcast transaction
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