Bitcoin Forum

Bitcoin => Electrum => Topic started by: frha on August 18, 2017, 07:25:07 AM



Title: seed that is NOT BIP39 will not be imported
Post by: frha on August 18, 2017, 07:25:07 AM
Hi.

I used BitcoinJ as a base for my wallet, and have a 12-word seed. I have used the wallet a couple of years, and it still works for BTC.
If I manually direkt the client to a Cash-node, I also can see my BCH balance in that wallet, but it has no support for the changed difficulty-regime in Cash-chain, and I cannot sign transaction in Cash-chain.

Therefore I wantet to try Electrum Cash as a wallet for accessing my Cash...
When I start up, and tries to import my seed, it does not seem to recognise my 12 words unless I check for BIP39. But ofc, when recovering witn BIP39 my balance does not show up, since the keys in BitcoinJ is not BIP39.

Why is the button to continue disabled when I don't check BIP39 ?  And how should I import my old wallet from BitcoinJ ?

Note - when using BitcoinJ, I can use any 12 words I want as seed, and it creates a wallet that is useable...  So why can I not just enter an 12 words and import as non-BIP39-seed using Electrum Cash ?


Title: Re: seed that is NOT BIP39 will not be imported
Post by: frha on August 18, 2017, 08:32:34 AM
You should re-post to the Electron-cash subforum...

Not quite sure how to find that...  I have looked a bit around here..  Could you provide me with a link ?


Title: Re: seed that is NOT BIP39 will not be imported
Post by: HCP on August 18, 2017, 12:57:54 PM
Hi.

I used BitcoinJ as a base for my wallet, and have a 12-word seed. I have used the wallet a couple of years, and it still works for BTC.
If I manually direkt the client to a Cash-node, I also can see my BCH balance in that wallet, but it has no support for the changed difficulty-regime in Cash-chain, and I cannot sign transaction in Cash-chain.

Therefore I wantet to try Electrum Cash as a wallet for accessing my Cash...
When I start up, and tries to import my seed, it does not seem to recognise my 12 words unless I check for BIP39. But ofc, when recovering witn BIP39 my balance does not show up, since the keys in BitcoinJ is not BIP39.
Did you just use your own made up 12 word seed? Or did you generate one? I'm pretty sure that Bitcoinj is actually BIP39 compliant, as MultiBitHD was using BitcoinJ as it's base... and MultiBitHD was generating BIP39 seeds...

I suspect maybe your Derivation Path is wrong? Do you know what the derivation path of your BitcoinJ wallet is? I can't seem to find any documentation on it.


Quote
Why is the button to continue disabled when I don't check BIP39 ?  And how should I import my old wallet from BitcoinJ ?

Note - when using BitcoinJ, I can use any 12 words I want as seed, and it creates a wallet that is useable...  So why can I not just enter an 12 words and import as non-BIP39-seed using Electrum Cash ?
Because Electrum (and therefore ElectronCash, as it is a fork of Electrum) has it's own proprietary seed format that is not BIP39 compatible (the checksum calculations use different methods). This is why the "BIP39 seed" option exists. So, you can either restore from an Electrum seed or a BIP39 seed... but a made up random collection of words won't work.


Title: Re: seed that is NOT BIP39 will not be imported
Post by: frha on August 20, 2017, 09:42:18 PM
Hi.

I used BitcoinJ as a base for my wallet, and have a 12-word seed. I have used the wallet a couple of years, and it still works for BTC.
If I manually direkt the client to a Cash-node, I also can see my BCH balance in that wallet, but it has no support for the changed difficulty-regime in Cash-chain, and I cannot sign transaction in Cash-chain.

Therefore I wantet to try Electrum Cash as a wallet for accessing my Cash...
When I start up, and tries to import my seed, it does not seem to recognise my 12 words unless I check for BIP39. But ofc, when recovering witn BIP39 my balance does not show up, since the keys in BitcoinJ is not BIP39.
Did you just use your own made up 12 word seed? Or did you generate one? I'm pretty sure that Bitcoinj is actually BIP39 compliant, as MultiBitHD was using BitcoinJ as it's base... and MultiBitHD was generating BIP39 seeds...

I suspect maybe your Derivation Path is wrong? Do you know what the derivation path of your BitcoinJ wallet is? I can't seem to find any documentation on it.


Quote
Why is the button to continue disabled when I don't check BIP39 ?  And how should I import my old wallet from BitcoinJ ?

Note - when using BitcoinJ, I can use any 12 words I want as seed, and it creates a wallet that is useable...  So why can I not just enter an 12 words and import as non-BIP39-seed using Electrum Cash ?
Because Electrum (and therefore ElectronCash, as it is a fork of Electrum) has it's own proprietary seed format that is not BIP39 compatible (the checksum calculations use different methods). This is why the "BIP39 seed" option exists. So, you can either restore from an Electrum seed or a BIP39 seed... but a made up random collection of words won't work.

Well... I have several seeds, and the one I had BTC in during fork was automatically generated for me by BitcoinJ.
I tested a recovery with this seed in MultiBitHD-wallet, and did not get the same addresses.
I also tested a seed from MultiBitHD with balance as a recovery with BitcoinJ, and the balance did not show up.

That's why I suspected that BitcoinJ-seeds are not BIP39.

I do not know what derivation-path is for my BitcoinJ-seed...
only used this method :
     DeterministicSeed seed = kit.wallet().getKeyChainSeed();
     System.out.println("Seed words are: " + Joiner.on(" ").join(seed.getMnemonicCode()));

and with those 12 words I can do :
      String seedCode = "xxx xxx xxx ...";
      long creationtime = System.currentTimeMillis()/1000l-60*60*24*30;
      DeterministicSeed seed = new DeterministicSeed(seedCode, null, "", creationtime);
      Wallet restoredWallet = Wallet.fromSeed(params, seed);

And start the wallet-kit in normal way, and it finds all transactions to my own wallet the last 30 days.

But the same 12 words is evaluated as BIP39 by the EElectrum/Electron-wallets, but then again - I don'w know the Detivation-path, so I let it be unchanged... So maybe that's what's worng...





Title: Re: seed that is NOT BIP39 will not be imported
Post by: HCP on August 21, 2017, 09:26:36 AM
Yeah... without knowing the default derivation path, it will be quite difficult to determine if it is BIP39 as you'll just be taking shots in the dark...

Having said that... the BitcoinJ docs actually say they are BIP39: https://bitcoinj.github.io/working-with-the-wallet#seeds-and-mnemonic-codes

They also indicate that it uses the "Default" path specified in BIP32... "bitcoinj uses the default recommended tree structure from BIP 32.", which, according to the BIP32 standard (https://github.com/bitcoin/bips/blob/master/bip-0032.mediawiki#the-default-wallet-layout) is:

Quote
  • m/iH/0/k corresponds to the k'th keypair of the external chain of account number i of the HDW derived from master m.
  • m/iH/1/k corresponds to the k'th keypair of the internal chain of account number i of the HDW derived from master m.

So, if you import to Electrum... try the derivation path of m/0' (NOTE: you'll need Electrum v2.9.0 or higher)