Collaborative wallet recovery
Table of contents
- Step 1: Download the Nunchuk app and log in using Guest mode
- Step 2: Make sure that you are on mainnet
- Step 3: Recover your key(s)
- Step 4: Recover your wallet
- Step 5: Cooperatively spend from the wallet
- Step 6: Clean up
A collaborative wallet is one where you manage bitcoin with other people. Each member of the wallet possesses one or more keys.
A collaborative wallet recovery requires the cooperation of several members of the wallet in order to create, sign and broadcast transactions. This is in contrast with personal wallet recovery where you can perform the recovery by yourself.
To recover a collaborative wallet, you will need:
- The seed phrase(s) for some or all of the members’ keys
- The wallet configuration file
- A way of exchanging files out-of-band, such as email, messaging apps or SD cards
The number of seed phrases you will need is equal to the number of signatures required to spend from the wallet. For example: for a 3-of-5 multisig wallet, you will need 3 seed phrases.
Seed phrases are backups for your keys. They are defined in BIP-0039.
The wallet configuration file contains important information on how your wallet is constructed. It is defined in BIP-0129.
For simplicity, this is a “clean slate” recovery. It assumes that the user has nothing other than the seed phrases and the wallet configuration file. It uses Guest mode, which does not require any accounts. It also assumes that there are no hardware keys that survive from the original setup. If there are hardware keys, simply pair the hardware keys with Nunchuk in step 3 (instead of recovering).
Any key that has a passphrase must be recovered using both the seed phrase and the passphrase.
This recovery guide uses the Nunchuk desktop app. The same process can be done using the Nunchuk mobile apps.
[IMPORTANT] Steps 1-4 and 6 should be carried out individually by each member that participates in the recovery process. Step 5 should be done together as a group.
Download the app from our website: https://nunchuk.io/#Download.
Log in as Guest.
Recover your keys one-by-one by entering the seed phrase for each key.
Each member should only recover their own key(s). An exception is when a member wants to transfer ownership of seed phrases and keys to another member (note that this also weakens the security of the collaborative wallet).
Recover your collaborative wallet by importing the wallet configuration file (.bsms). Remember to name the wallet before selecting a file to import.
After the import, you should see the wallet show up in the list of wallets. Select the wallet and wait for it to finish syncing.
If the wallet’s transaction history and balance are still not up-to-date after a while, try restarting the app.
Hurrah, you have recovered the wallet! You can now proceed to withdraw your bitcoin. This step must be done together as a group.
One member in the group should initiate a Send transaction, sign off on that transaction using his key(s), and export the transaction as a PSBT file.
PSBT stands for Partially-Signed Bitcoin Transaction. It is defined in BIP-0174.
The group then should form a chain: each member gets a PSBT file from a previous member (starting from the transaction creator), adds their signature to it, and then passes on the modified PSBT file to the next member, and so on. Once the PSBT has collected enough signatures, it can be broadcast by the last member.
For example, if there are 3 members A, B and C involved in the recovery, and 3 signatures are required, here is how the process works:
- A creates the Send transaction, signs it, and exports it as a file named A.psbt
- A passes A.psbt onto B
- B imports A.psbt, signs it, and exports it as a new file named A+B.psbt
- B passes on A+B.psbt onto C
- C imports A+B.psbt and signs it - the transaction now has 3 signatures from A, B and C
- C can now broadcast the transaction
The medium of file exchange could be email, messaging apps, or SD cards. An encrypted medium is recommended for better privacy.
When signing, all members should take care to make sure that all transaction data, such as destination address and transaction fee, are accurate. If you are unsure, try sending a small amount first.
To drain the entire wallet, tick the “Send all” box when creating the Send transaction.
When the number of signatures required is large, it might be faster to sign in parallel instead of sequentially. In that case, the transaction creator should send out an unsigned PSBT, collect the signed PSBTs from the individual members, import them into his own wallet, and finally does the broadcast himself.
(A) Create a Send transaction
Tick “Send all” if you want to drain the wallet
(B) Sign and export PSBT
(C) import PSBT
(D) Repeat (C)-(B) as many times as needed, then broadcast
To wipe all data used during the recovery process, each member should remove the wallet first, and then all of the keys.