Setting Up Multisig Wallets with Bitcoin Core
How to create and manage multisignature wallets using Bitcoin Core RPC. Covers key generation, address creation, spending from multisig, and operational best practices.
What is Multisig?
A multisignature (multisig) address requires M of N keys to authorize a transaction. For example, a 2-of-3 multisig requires any 2 of 3 designated keys to sign.
Multisig serves two primary purposes: security (no single compromised key can move funds) and shared control (multiple parties must agree to spend). Common configurations include 2-of-3 (single user with redundant backup), 2-of-2 (two-party escrow or joint account), and 3-of-5 (organizational treasury).
Bitcoin natively supports multisig through P2SH (Pay-to-Script-Hash) and P2WSH (Pay-to-Witness-Script-Hash) script types.
Creating a Multisig Address
There are two ways to create multisig addresses in Bitcoin Core:
createmultisig is the standalone utility — it takes the required signature count and an array of public keys, returning the address and redeem script. This works without any wallet.
addmultisigaddress does the same but also imports the address into your wallet, enabling automatic tracking of received funds and participation in signing.
For descriptor wallets, you can import multisig configurations using importdescriptors with multi() or sortedmulti() descriptor expressions. sortedmulti() is preferred because the key ordering is deterministic regardless of the order you provide them.
Spending from Multisig
Spending from a multisig address requires collecting enough signatures from the designated key holders. The PSBT workflow is the standard approach:
1. Create the PSBT with walletcreatefundedpsbt, specifying the multisig UTXO as input.
2. Distribute the PSBT to each signer. Each signer processes it with walletprocesspsbt on their own node, adding their signature.
3. Collect the partially signed PSBTs from each signer and merge them with combinepsbt.
4. Once enough signatures are collected (M of N), finalize with finalizepsbt and broadcast the resulting transaction.
This workflow supports geographically distributed signers, hardware wallets, and air-gapped signing machines.
Operational Best Practices
Key generation — generate each key on a separate device. Never create all keys on the same machine, as this defeats the security purpose of multisig.
Backup the redeem script — without the redeem script, you cannot spend from the multisig address even if you have all the private keys. Store it alongside (but separately from) your key backups.
Test before funding — always send a small test amount to your multisig address and practice the full spending workflow before depositing significant funds.
Key rotation — plan for key compromise. Use N > M+1 (for example, 3-of-5 instead of 3-of-4) so you can rotate a compromised key without moving funds under emergency conditions.
Document everything — record which key belongs to which device/person, the derivation paths used, and the exact descriptor expression. Multisig recovery without documentation is extremely difficult.