"Sovereign Recovery" is what we call the ability to create a transaction outside of the Casa app using open-source, third-party tools.
This article details how to perform Sovereign Recovery for bitcoin assets held with Casa. Please see Sovereign Recovery instructions for ethereum if you need to recover ethereum based assets.
Finding your public keys
In Sovereign Recovery, you should operate on the assumption that the Casa Recovery Key is unavailable, meaning you have two of your three signing keys left. To complete a transaction, you need all three of your public keys, but only two of your private keys.
To sign, you will need both of your hardware devices. If you have a mobile key, you'll need to export the seed phrase from your Casa app . If you have a YubiKey as a hardware device you will need to use your Offline backup (seedphrase)
To find your public keys: You can pull your hardware wallet public keys directly from the devices themselves when you connect them to Electrum (see full instructions below). Know that all your public keys can also be accessed directly from Casa. To access them, just tap the key icon from your vault screen, then tap View Public Keys. We also provide the Casa Recovery Key public key in our Sovereign Recovery email, for added redundancy.
Don't forget to copy the derivation paths. When you view the public key for a specific account on a device, the current derivation path will be displayed beneath it. Derivation paths change every time you rotate a key and generate a new key set in Casa; it’s important that you use the current path, otherwise the wrong addresses will be generated by your recovery wallet software.
IMPORTANT: Your public keys are stored locally on your iOS or Android device. This means they can be accessed even if Casa’s infrastructure is unavailable, and even if your device does not have an active internet connection. To ensure you're able to log into your Casa app to access your public keys even if you’re offline, just be sure the "Clear Cache on Logout" option is DISABLED on your Settings tab. If Casa's system is down for maintenance, you may need to place your device into airplane mode to access Casa in this "offline" mode.
Recovering funds without using Casa software or servers
Install Sparrow 1.8.0 or later: https://www.sparrowwallet.com/download/
Additional instructions within this box for Linux users ONLY:
Install the appropriate libraries for your hardware wallets via the CLI:
If you use a Trezor:
Set hardware wallet udev rules:
- For Trezor - https://doc.satoshilabs.com/trezor-user/settingupchromeonlinux.html
- For Ledger - https://support.ledgerwallet.com/hc/en-us/articles/115005165269-Fix-connection-issues
- For Coldcard - https://raw.githubusercontent.com/Coldcard/ckcc-protocol/master/51-coinkite.rules
After setting the udev rules for the first time, reboot your computer.
Set up your vault:
- Run Sparrow. For testnet, run "Sparrow --network testnet"
- If you haven’t run Sparrow before, choose “Configure Server” and select a public Electrum server
- Create a new wallet and give it a name
- For Policy Type choose "Multi Signature"
- For Script Type choose “Nested Segwit”
- Slide the Cosigners options so that the M of N says “2 / 3
Note: If you’re using a Casa 5 key vault, select “3 / 5”
Now you'll have to configure each of the "Keystores" for each key in your vault.
For each hardware key:
- If it's a device with a USB cable, connect it to your computer and select "Connected Hardware Wallet." If it's an airgapped (QR code based) device, select the appropriate device from the "Airgapped Hardware Wallet" list.
- Plug in your hardware device if it isn’t already
- Click “Scan…”
- You should see Sparrow list the hardware device.
- Click “show derivation”
- The derivation path should display something like m/48'/0'/0'/1' - replace it with the derivation path from your recovery data, which will look something like: m/49/0/0
- Click “import custom derivation”
Then Keystore 4 and Keystore 5 will both be added as "xPub / Watch Only Wallet" using the Mobile and Casa Recovery public keys.
If signing with a mobile key:
If using the mobile key as one of your Casa keys (default setup, most people use this):
- Choose "New or Imported Software Wallet"
- Click “Mnemonic words” and click the dropdown to choose “Use 12 words”
- Enter the seed phrase that you exported from your Casa app
- Click "Create Keystore"
- Enter your unique derivation path found in your Sovereign Recovery email
- Click "Import Custom Derivation Key"
If NOT signing with a mobile key:
If using the mobile key as one of your Casa keys (default setup, most people use this):
- Choose "xPub / Watch Only Wallet"
- Paste the "Mobile Key" for the appropriate account from your recovery data
- Set the Derivation to match your other keystores: It will read something like “m/49/0/0” or "m/49/0/1", etc.
For the Casa Recovery Key:
- Choose "xPub / Watch Only Wallet"
- Paste the "Casa Recovery Public Key" for the appropriate account from your recovery data
- Set the Derivation to match your other keystores: It will read something like “m/49/0/0” or "m/49/0/1", etc.
Now save the wallet configuration.
- Click “Apply”
- Click “No Password”
Sparrow will now initialize your wallet and display all the transactions that have been received and sent by it. If your transactions don't show up after a minute or so, something went wrong during the process and Sparrow derived the wrong set of addresses.
To send your assets to a new wallet, click on the "send" tab and fill in the "pay to" field with an address owned by your new wallet. Click the "max" button to sweep all of the value out of the wallet, and slide the "fee" bar to an appropriate fee depending upon your urgency. If your wallet contains many UTXOs (over 100) then you may encounter memory issues with your hardware device trying to send them all in one transaction; instead try sending smaller numbers of UTXOs in multiple transactions.
Once you click "Create Transaction" you will see an additional verification screen with the transaction details. Don’t change any options on this screen, just click “Finalize Transaction for Signing.” Now you can plug in each hardware device (one at a time) and click “Sign” at which point you will be prompted to confirm the amount and destination address on the hardware device.
Upon completing the final signature, instead of a “Sign” button you will now see a "Broadcast Transaction" button. Click it and then copy the transaction ID into a block explorer to check that the transaction has propagated across the network.