0

The Setup

I purchased a genuine ColdCard, verified its authenticity, set it up, backed up my key and all that good stuff. I then wanted to transfer some BTC from an exchange but I was being paranoid and did not want to even connect a MicroSD from my computer to my ColdCard so in order to get the address to send my BTC to, I did the following from the ColdCard:

Advanced -> Address Explorer and then I picked the first address that showed up out of the 4 options. This first and second address both began with 1 which I now think means it is a "Legacy" type address (but I didn't know that at the time). The addresses I picked (the first option) also use the derivation path of m/0/0, m/0/1, m/0/2, etc. so I think this means they are BIP 32 addresses.

Now I do have a watch-only wallet that I created in Electrum by just importing the raw addresses from my ColdCard via QR codes so I can see the transactions that came to my ColdCard. However, I am now trying to move them out to another address and I'm struggling...

The Problem

The issue is that when I export my Electrum wallet from ColdCard, even when I select the "Legacy" option, the addresses is shows start with derivation paths m/44'0'/0'/0/0, m/44'0'/0'/0/1, m/44'0'/0'/0/2 (so I think these are BIP 44 addresses).

As I mentioned above, I want to spend these funds / transfer them out to a different wallet but I now appear to be stuck...

Since my exported "Electrum" wallet from the ColdCard doesn't include the BIP 32 addresses, I cannot see my transactions sent to those BIP 32 addresses in that wallet so I also cannot create an unsigned transaction (AFAIK) for those funds.

I tried creating an unsigned transaction from my watch-only wallet in Electrum and I can create one and export it as a PSBT (at least it looks like one... I am not sure how to independently validate it). Unfortunately, when I import that PSBT into the ColdCard and use the "Ready to Sign!" option, it fails to sign it with the following error:

Failure
We require subpaths to be specified in the PSBT

How do I spend funds that were sent to my ColdCard via BIP 32 addresses? Do I need to load my private key into Electrum (and thus not be air-gapped) or is there some other reasonable option? This has been quite frustrating and I'm kicking myself for not exporting the Electrum Skeleton Wallet first...

My ColdCard firmware is 3.1.9

2 Answers 2

0

First off: No, please do not enter your seed/private key into electrum.

You've sent your funds to legacy addresses. Your funds will be recoverable although it may require some more diving to do. This article mentions the exact scenario - with warning on the exact thing you did. Hopefully this helps.

7
  • Yes, thank you that does describe the situation I'm in I think but it doesn't seem to describe how to correct it.
    – BearsEars
    Commented Mar 1, 2022 at 23:48
  • Also, I'd obviously prefer to not expose my private key to my computer but if I did import it into Electrum, would that allow me to see the funds sent to these addresses and sign transactions to send them out elsewhere?
    – BearsEars
    Commented Mar 2, 2022 at 0:05
  • of course if you export your priv key, you should be able to control the funds but your issue is perhaps the derivation path that you need to find out. I would suggest contact the coinkite support telling them your situation and asking for the next steps(I think you just need to find out what the derivation path for that address is, the one where you sent sats - and then connect your coldcard with that)
    – t480625
    Commented Mar 2, 2022 at 0:09
  • I actually have an email out to their support already. I know the exact set of addresses I sent to and the derivation paths (i.e. m/0/0, m/0/1, etc)
    – BearsEars
    Commented Mar 2, 2022 at 0:24
  • 1
    @HansBKK not OP, but if I go to the address explorer on CC, I see two addresses starting with 1 - I didn't send any funds to it but I too am unable to locate it on electrum (i.e. when I try seeing the addresses on electrum connected to CC - I tried with loading the CC on electrum with different derivation paths but still can't see one of the 1 address that is displayed on the CC's address explorer.)
    – t480625
    Commented Mar 5, 2022 at 19:39
0

I contacted CoinKite support and they were extremely helpful. If you were dumb enough to not follow their guidance in their documentation and made this same mistake, then hopefully this solution helps you too.

In order to import a proper wallet into Electrum (or a wallet system that supports Electrum style wallets such as Blue Wallet), follow these steps on the ColdCard:

  1. Export your wallet from ColdCard as an Electrum wallet and pick the Legacy option (MicroSD -> Export Wallet)
  2. This creates a JSON file on your MicroSD card called new-wallet.json (or if you've exported multiple wallets, it may be new-wallet2.json, etc.
  3. Open that new-wallet.json in a text editor and you'll see content like the following (note I sanitized these values for privacy but you can see the structure):
{
    "keystore": {
        "ckcc_xpub": "xpub<ckcc_xpub value>",
        "xpub": "xpub<xpub value>",
        "label": "Coldcard Import <id>",
        "ckcc_xfp": 1234,
        "type": "hardware",
        "hw_type": "coldcard",
        "derivation": "m/44'/0'/0'"
    },
    "wallet_type": "standard",
    "use_encryption": false,
    "seed_version": 12
}
  1. CoinKite support instructed me to copy the value from ckcc_xpub onto xpub (replacing it, so now both are same) and then also change derivation to just "m". This results in JSON like this:
{
    "keystore": {
        "ckcc_xpub": "xpub<ckcc_xpub value>",
        "xpub": "xpub<ckcc_xpub value>",
        "label": "Coldcard Import <id>",
        "ckcc_xfp": 1234,
        "type": "hardware",
        "hw_type": "coldcard",
        "derivation": "m"
    },
    "wallet_type": "standard",
    "use_encryption": false,
    "seed_version": 12
}
  1. I then imported this wallet into Blue Wallet and I could see my transaction history!

From this point, you can follow the instructions in the ColdCard documentation to create a PSBT in your wallet app, sign it on the ColdCard, and then finalize it on your wallet app. See the ColdCard Quick Start guide for those details.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.