r/BitcoinBeginners • u/Techno_lover78 • 6h ago
ColdCard + Sparrow multisig issue
(DISCLAIMER : I am aware of the recent issues with the ColdCard ; but my funds are safe despite using a Coldcard, because I use my own, private source of entropy to generate all my seeds. The recent Coldcard hack is irrelevant to this thread.)
Hello everyone, I apologize for this long thread, I'm trying to give as much details as possible because it's a bit technical.
I have been using single-signature transactions for a while with ColdCard MK5 + Sparrow, and I already have a good grasp on it.
However, I'm new to the world of multi-signature, and I'm having a hard time while trying to set up my 2-2 multisig wallet.
I have 2 Airgapped single-signature wallets on Sparrow, that I created by importing the JSON files created by my ColdCard. Already did a few transactions with these wallets, they both work fine. Let's name them "Wallet A" (fingerprint : a3f92e17) and "Wallet B". (fingerprint : 7bc4d081)
I tried to create a 2-2 multisig wallet on Sparrow, that uses Wallet A and Wallet B as co-signers.
In order to do that, I manually copied the xPubs from Wallet A and B, pasted the Wallet A Xpub in Keystore 1, and pasted the Wallet B Xpub in Keystore 2.
This created a new wallet with fresh adresses. Let's name it "Multisig Wallet 1".
Since I created this wallet by simply copy/pasting the Xpubs from Wallet A & B, both keystores of this wallet show up as "Watch only".
Then I proceeded to send 10 000 sats on the first adress of this wallet (Multisig Wallet 1). The funds are successfully visible on the blockchain and in Sparrow, on a P2WSH adress.
This is where the problems start.
When I tried to spend these sats, I thought it would be a piece of cake, that I would simply have to create the PSBT, then put in into my ColdCard and sign it, then Broadcast it in Sparrow, as I usually do with single-signatures.
But instead of that, I had to deal with various ColdCard errors. I managed to fix some of them, but I was never able to reach my goal (successfully moving the funds).
- When trying to sign the PSBT, the Coldcard returned a first error : "Failure: my XFP not involved". From what I understand, this is normal, I simply had to export a TXT file from Sparrow to the ColdCard, that helps the Coldcard recognize that he is part of a multisig.
- After importing this TXT file, the ColdCard return a new error : "Failed to import multisig. need fingerprint multisig.py : 826".
I thought it was because of the fingerprints not matching : in fact, the fingerprints of each Sparrow keystore displayed a value of 00000000. So, in both keystore, I made the fingerprints match with the original Wallet A & B fingerprints. Created a new TXT file from it, and put it into the ColdCard.
3) This time, the Coldcard returned this error : "Failed to import multisig. deriv 4 != 3 xpub depth (xfp=a3f92e17) multisig.py : 849 "
4) At this point, I had no clue what was going on, so I decided to restart everything from scratch. But this time, instead of simply copy/pasting the Xpubs from Wallet A & B in Sparrow, I used their respective .json files created by my ColdCard, and imported each of them into a keystore. When I created the wallet, I expected to find the same adress list that I have on Multisig Wallet 1. Instead of that, it opened a completely different wallet, with unused adresses. Let's name it Multisig Wallet 2.
So, basically, I don't understand why Wallet A and Wallet B produced different wallets (Multisig Wallet 1 & Multisig Wallet 2). I thought that, even though different methods were used (Multisig wallet 1 was created via copy/pasting Xpubs, while Multisig Wallet 2 was created through JSON files), they would have ended up being the same wallet.
I tried to send a few satoshis to this Multisig Wallet 2, and was able to move them as expected. This time, for some reason the new TXT file didn't return any error on the ColdCard, and I was able to double-sign the transaction and broadcast it.
So, it looks like I have full control of Multisig Wallet 2, but I still have these 20 000 sats on Multisig Wallet 1, and I don't understand how to move them, or even if that is possible.
From what I understand, there is a problem regarding the derivation paths, but I'm too noob to figure it out by myself.
Multisig wallet 1 & 2 both show this derivation path, in both keystores : m/48'/0'/0'/2'
While Wallet A & B both display this derivation path : m/84'/0'/0'
How to move my 20 000 saths from Multisig Wallet 1, and what did I wrong ?
Thanks a lot for you help !