1

I imported a segwit xpub6-key in Mycelium as a watch only address. It only shows address starting with 1 instead of 3, which makes sense. I retrieved a small amount on the legacy address and it shows up in Mycelium and on block explorers.

But as a watch only address, I cannot touch it in Mycelium, but it does not show up in my Ledger applications, as those are only showing the Segwit addresses.

So, is there any way of ever touching that funds again?

I found a lot of comments on sending funds from a non-segwit to segwit address, but nothing on this interesting problem.

I have to add some info: - when I derive the account extended public key from other wallets but the Ledger-wallets I get an ypub6-address, which is also showing up when I write my mnemonic key in iancoleman.io (mnemonic code converter) - technically I should not have been able to import a BIP49 public key into a non segwit wallet. Where does the xpub6-key come from in Ledger's system when you use your Segwit account (it shows the correct xpub6-key when I use the legacy account)

  • Welcome @Letatcest, if you've solved your problem, you should post it as an answer so it doesn't look like one long question. – JBaczuk Aug 29 '18 at 13:33
  • Ah, sorry fort hat, I thought of that in the first place, changed it later. Will do that! – Letatcest Aug 29 '18 at 13:45
1

I actually discovered the answer:

The answer is described on Reddit: https://www.reddit.com/r/ledgerwallet/comments/7d39pu/legacy_to_segwit_wallet_transfer_nightmare/

But if that answer would ever get lost, a summary:

Apparently segwit xpub addresses are not a good marriage (yet). The Mycelium wallet imports the xpub address which is generated by the Ledger Segwit wallet, but creates legacy addresses from the key. As Mycelium is watch only, you cannot send your funds anymore as the legacy bitcoin address does not show up in a segwit enabled wallet, so you want the private key which signs for the public legacy bitcoin address. That's what you have to do know: find the public key which is hashed into the public bitcoin address.

The public key (not the bitcoin address) is the same for the address which appears as a legacy address and the segwit address. When you choose the right derivation path, you will see the address starting with a 1 and you'll see the public key next to it. That last part, knowing where to look, is not very straight forward foor n00bs like me. That public key corresponds with a segwit address, starting with a 3. And next to the segwit address you'll find the private key. After importing the private key in a wallet like Electrum, you can move your funds to a normal segwit address.

So, Mycelium uses m/44'/0'/0'/x path, which is BIP44, and a SegWit address uses BIP49 (m/49/etc)

If this is about a lot of funds, try to do as much offline as you can, but the advise is to create a new seed for your ledger and transfer all funds from all coins to the new seed. After you've done that, playing around with your private keys from your old seeds does do no harm as the balances are zero (except for that one address)

Now, go and search for a BIP39 tool, like: https://iancoleman.io/bip39/ (you can use it offline as well)

Copy the xpub address you got in the SegWit section of your Ledger Bitcoin wallet and copy the address into the tool. Be sure to select derivation path BIP32! Leave Client at Custom and derivation path at m/0.

Paste your xpub-key in the BIP32 Root Key field. On the bottom of the screen you'll see a list with Derived Addresses.

Go back to your Mycelium install and check which address was used for the transaction (or paste the xpub key into a blockexplorer). In my case it was the first one. On the right side of the Address starting with a 1 is the Public Key. Copy the public key into notepad or gedit or so. The private key part is empty (makes sense, everything we've done is with public keys, no option to derive a priv. key from that!)

Now, delete the Root Key and go to the tab BIP49. Paste your Mnemonic seed in the BIP39 Mnemonic field. Your 24 words in the correct order, separated only by one space, should derive a new address list.

If done correctly, there has to be a public key next to the list of public addresses starting with a 3 which corresponds with the public key you just copied into your gedit! Next to the Pub Key is the Private Key (yay!) and now you can import that key in a wallet supporting importing priv. keys and you can finally send your funds to a new bitcoin address, preferably one which you can reach ;)

In Electrum you can easily import private keys, create a new wallet, select 'import bitcoin addresses or private keys' at the first wizard screen, paste the priv. key and there it is!

Thanks again, user stiVal on Reddit! :)

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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