Author

Topic: "Wallet -> Seed" option greyed out (Read 214 times)

legendary
Activity: 2296
Merit: 2892
#SWGT CERTIK Audited
April 17, 2024, 09:34:48 PM
#13
Curious why they don't support it.

As hosseinimr93 mentioned, Electrum still allows you to import BIP39 seed phrases when creating a new wallet.




However, Electrum does not generate BIP39 seed phrases. Here are some of the reasons mentioned at: https://electrum.readthedocs.io/en/latest/seedphrase.html#motivation

Early versions of Electrum (before 2.0) used a bidirectional encoding between seed phrase and entropy. This type of encoding requires a fixed wordlist. This means that future versions of Electrum must ship with the exact same wordlist, in order to be able to read old seed phrases.

BIP39 was introduced two years after Electrum. BIP39 seeds include a checksum, in order to help users figure out typing errors. However, BIP39 suffers the same shortcomings as early Electrum seed phrases:

• A fixed wordlist is still required. Following our recommendation, BIP39 authors decided to derive keys and addresses in a way that does not depend on the wordlist. However, BIP39 still requires the wordlist in order to compute its checksum, which is plainly inconsistent, and defeats the purpose of our recommendation. This problem is exacerbated by the fact that BIP39 proposes to create one wordlist per language. This threatens the portability of BIP39 seed phrases.

• BIP39 seed phrases do not include a version number. This means that software should always know how to generate keys and addresses. BIP43 suggests that wallet software will try various existing derivation schemes within the BIP32 framework. This is extremely inefficient and rests on the assumption that future wallets will support all previously accepted derivation methods. If, in the future, a wallet developer decides not to implement a particular derivation method because it is deprecated, then the software will not be able to detect that the corresponding seed phrases are not supported, and it will return an empty wallet instead. This threatens users funds.

For these reasons, Electrum does not generate BIP39 seeds. Starting with version 2.0, Electrum uses the following Seed Version System, which addresses these issues.

Electrum 2.0 derives keys and addresses from a hash of the UTF8 normalized seed phrase with no dependency on a fixed wordlist. This means that the wordlist can differ between wallets while the seed remains portable, and that future wallet implementations will not need today’s wordlists in order to be able to decode the seeds created today. This reduces the cost of forward compatibility.
full member
Activity: 315
Merit: 120
April 14, 2024, 03:17:42 PM
#12
Below is the message displayed by electrum when importing a BIP39 seed phrase. That explains why electrum developers don't like BIP39 seed phrase and they use a different algorithm.



Yeah. Bing's AI showed that they were trying to future proof its seed generation. Apparently, it'll always know how to read a seed. Maybe trying to fix a problem that doesn't exist or perhaps genius. Multibit used to use something similar with their own approach.  The great thing is that there is a market of ideas.

While my momentary need makes this annoying, I trust the software and controls. Just wish I could see the BIP39 seed.  Sad

I appreciate the help. Maybe I'll dig more into seed generation.

legendary
Activity: 2380
Merit: 5213
April 14, 2024, 02:19:04 PM
#11
Curious why they don't support it.
Electrum doesn't generate BIP39 seed phrase, but it allows you to import a BIP39 seed phrase.

Below is the message displayed by electrum when importing a BIP39 seed phrase. That explains why electrum developers don't like BIP39 seed phrase and they use a different algorithm.

full member
Activity: 315
Merit: 120
April 14, 2024, 12:30:18 AM
#10
Well, to be fair, Electrum doesn't generate BIP39 seed.

Yeah. Guess, I can look more into the specs of a BIP39 seed. Curious why they don't support it. Perhaps they have propriety features like BitPay used to have back in the day.

If you want to change that feature, you can try to convince the main developers by following the replies in the link in my first reply.

Nah. I ain't gonna argue with the dev team. I'm sure they have a philosophy behind their approach and, as you're aware, everyone looks at Bitcoin differently. I'll just keep my mind open on whether or not to continue using them or find another wallet. Although, I've mostly liked their wallet.

legendary
Activity: 2534
Merit: 6080
Self-proclaimed Genius
April 13, 2024, 11:05:14 PM
#9
Electrum uses a different code to derive BIP39 seed.
Why? One would think you could look at the phrase used to create the wallet. Not exactly user friendly.
Well, to be fair, Electrum doesn't generate BIP39 seed.
If the seed phrase is created by Electrum, you can look it up no problem.
If the user used a BIP39 seed to create a wallet, that seed phrase isn't created by Electrum, so that wallet isn't an "Electrum wallet"
but a "Restored" (not created) third-party wallet and the seed phrase should've been available to display in the original wallet.

If you want to change that feature, you can try to convince the main developers by following the replies in the link in my first reply.
full member
Activity: 315
Merit: 120
April 13, 2024, 10:22:18 PM
#8
Electrum uses a different code to derive BIP39 seed.

Why? One would think you could look at the phrase used to create the wallet. Not exactly user friendly.

If it's just 12 words, do your best to remember it, at least during your travels.

I look at the words maybe once every three years or so. I used the full node QT software, until Taproot. Now, my computer is too old to run it (which is odd because I thought BTC was "soft fork" backwards compatible). So, hopefully the wallet.dat file will still work when I get a new PC to run the node but that's a different topic.  

legendary
Activity: 2534
Merit: 6080
Self-proclaimed Genius
April 12, 2024, 11:39:23 PM
#7
Anyways, get your master private key (actually "extended private key") from the console with getmasterprivate() command.
Then see if your other wallet supports importation of xprv keys. You might have to use convert_xkey(xkey="zprv.....",xtype="standard") if the other wallet only support "xprv".
In general this will work, but if uses passphrase, may get something different.
He will be using the xprv and not the seed phrase and passphrase to restore to other wallets.
The linked code shows the derivation from seed phrase + extension to HD seed; the BIP39 passphrase influenced how the HD seed is derived, anything after that is the same.
Something that the derivation from the extended private key (xprv) to child prv keys has nothing to do with.
Aside from that, AFAIK, Electrum uses a different code to derive BIP39 seed.

Anyways, as far as the command's result is concerned, excluding the prefix that can be converted, it's compatible with BIP39 wallets that supports xprv.

For example (reproducible- TestNet):
1.1 Create an Electrum wallet with this BIP39 seed phrase (tick 'BIP39 seed' and 'Extend..' in Options):
Code:
turn permit open spider flame type unaware stage clown flag accuse unfair
1.2 Plus extend it with this BIP39 passphrase, select 'Native SegWit' when prompted:
Code:
12345
2. Use getmasterprivate() command, result:
Code:
vprv9KNCYuLpNoNth31arXhJYW4dR5416zsNbFBrHvA19dVjwqt6RJbKizizGy8HhCFDoAAJsSMQdmaLJCdvbfREc4kb5fEEgFKtnZoqo4mk8Up
3. Use convert_xkey(xkey="vprv..",xtype="standard"), command:
Code:
tprv8fhfwZzz5SHvzSdMBp848Ksd58m7DktNm29Qj8NEPcjyqeFduzGCUsQiEZD7hNwNysvhNVAHiSsEXdQoAGbD1bPPLyqPWRgvF7gZ1vvoeEq
4. Go to IanColeman's BIP39 tool and select the Coin: "BTC - Bitcoin Testnet".
5. Paste the tprv or vprv key on "BIP32 Root Key".
6. To reproduce how wallets derive keys/addresses from the xprv/xpub at 'account_index'; go to "BIP141" tab,
7.1 Type m/0 in 'BIP32 Derivation Path' ("m" as your xprv and "0" as 'external chain')
7.2 Use m/1 to derive change addresses instead.
8. Select "P2WPKH" as 'Script Semantics'.
9. Lastly, compare the addresses and keys in your Electrum client to the list below the BIP39 tool.

I'd like to get my phrase and import it into another wallet and am traveling ... away from my hand-written backup. Appreciate any help  Wink
Why tho?
I have alts on the same seed that I'd like to access.
Oh, Alts...
The above will only work in Bitcoin since the extended private key was derived with a derivation path standard to Bitcoin.
Restoring an Alt using that method will result with empty (Altcoin) wallet.

If it's just 12 words, do your best to remember it, at least during your travels.
legendary
Activity: 2380
Merit: 5213
April 12, 2024, 01:40:53 PM
#6
Interesting. That sounds like a rabbit hole, as I originally created the wallet from a BIP39 seed. Perhaps there is something different about BIP39 I don't understand. And, maybe, Electrum takes a different approach than other wallets like Exodus.
If you have generated your seed phrase using electrum itself, it's not BIP39. Electrum uses the same wordlist as BIP39, but a different algorithm.
If you have generated your seed phrase somewhere else like exodus and imported it into electrum, your seed phrase is likely BIP39.


I suppose this is why my legacy Bitcoin UTXOs don't show up if I choose a Segwit wallet and visa versa.
If your seed phrase is BIP39, you are asked the derivation path and script type when importing your seed phrase.
If you have fund in the legacy wallet and you choose segwit when importing your seed phrase, you will see completely different addresses.


I'm trying to access some alts with the same seed.
For more security, I recommend you to use a separate wallet for your bitcoin and avoid importing your seed phrase into different softwares as much as possible.
The more softwares you import your seed phrase to, the more attack vectors you may open for hackers.
full member
Activity: 315
Merit: 120
April 12, 2024, 12:26:17 PM
#5
Hey, I appreciate all of the responses that have offered potential solutions and peaked my curiosity about some of the backend to Electrum and coding. Smiley

 
There's no way to see your BIP39 seed phrase from Electrum.
Unlike a native Electrum seed phrase which is saved in the wallet file under "keystore", BIP39's isn't saved there, just the derived extended private/public keys.
Without the actual seed phrase, it impossible to get it from the extended private key (xprv) that's derived from it.

Interesting. That sounds like a rabbit hole, as I originally created the wallet from a BIP39 seed. Perhaps there is something different about BIP39 I don't understand. And, maybe, Electrum takes a different approach than other wallets like Exodus.

The most probable reason is the developers' take on BIP39 that its seed phrase isn't enough as a backup since the user also has to take note of derivations path and script type.

I suppose this is why my legacy Bitcoin UTXOs don't show up if I choose a Segwit wallet and visa versa.

I'd like to get my phrase and import it into another wallet and am traveling ... away from my hand-written backup. Appreciate any help  Wink
Why tho?

I have alts on the same seed that I'd like to access.

Don't you already have seed words offline and written as a backup on piece of paper or metal?

Yes. I am traveling and don't have access to them, right now.

In case if you don't have that than I would just send coins to newly generated address in wallet with new seed words that have proper backup.

I'm trying to access some alts with the same seed.

Waiting for fees to go down would be a wise decision.

Yeah  Roll Eyes I sometimes wonder if the *inaudible* should be *inaudibled*. Sinful thought.  Embarrassed

Anyways, get your master private key (actually "extended private key") from the console with getmasterprivate() command.
Then see if your other wallet supports importation of xprv keys. You might have to use convert_xkey(xkey="zprv.....",xtype="standard") if the other wallet only support "xprv".

In general this will work, but if uses passphrase, may get something different.

Code:
@classmethod
    def mnemonic_to_seed(self, mnemonic, passphrase) -> bytes:
        PBKDF2_ROUNDS = 2048
        mnemonic = normalize_text(mnemonic)
        passphrase = passphrase or ''
        passphrase = normalize_text(passphrase)
        return hashlib.pbkdf2_hmac('sha512', mnemonic.encode('utf-8'), b'electrum' + passphrase.encode('utf-8'), iterations = PBKDF2_ROUNDS)

https://github.com/spesmilo/electrum/blob/df842af0b6b48074a510155fbfd28df295c200d4/electrum/mnemonic.py

That seems like it may take some time. I'm skeptical getting into advanced scripts I don't understand, especially after losing multple BTC back in the day but interested in better understanding useful tools that work.

legendary
Activity: 2212
Merit: 7064
April 12, 2024, 11:28:09 AM
#4
I'd like to get my phrase and import it into another wallet and am traveling ... away from my hand-written backup. Appreciate any help  Wink
Don't you already have seed words offline and written as a backup on piece of paper or metal?
In case if you don't have that than I would just send coins to newly generated address in wallet with new seed words that have proper backup.
Waiting for fees to go down would be a wise decision.
hero member
Activity: 406
Merit: 443
April 12, 2024, 06:16:49 AM
#3
Anyways, get your master private key (actually "extended private key") from the console with getmasterprivate() command.
Then see if your other wallet supports importation of xprv keys. You might have to use convert_xkey(xkey="zprv.....",xtype="standard") if the other wallet only support "xprv".

In general this will work, but if uses passphrase, may get something different.

Code:
@classmethod
    def mnemonic_to_seed(self, mnemonic, passphrase) -> bytes:
        PBKDF2_ROUNDS = 2048
        mnemonic = normalize_text(mnemonic)
        passphrase = passphrase or ''
        passphrase = normalize_text(passphrase)
        return hashlib.pbkdf2_hmac('sha512', mnemonic.encode('utf-8'), b'electrum' + passphrase.encode('utf-8'), iterations = PBKDF2_ROUNDS)

https://github.com/spesmilo/electrum/blob/df842af0b6b48074a510155fbfd28df295c200d4/electrum/mnemonic.py

The easiest solution is to create a new wallet and send coins to it, as it is easy to use Electrum seed with Electrum wallet or convert it to BIP39 seed.
legendary
Activity: 2534
Merit: 6080
Self-proclaimed Genius
April 11, 2024, 10:41:08 PM
#2
There's no way to see your BIP39 seed phrase from Electrum.
Unlike a native Electrum seed phrase which is saved in the wallet file under "keystore", BIP39's isn't saved there, just the derived extended private/public keys.
Without the actual seed phrase, it impossible to get it from the extended private key (xprv) that's derived from it.

The most probable reason is the developers' take on BIP39 that its seed phrase isn't enough as a backup since the user also has to take note of derivations path and script type.
As for actual reference, this doesn't have enough information to be a reference, but here is it anyways: github.com/spesmilo/electrum/issues/4602#issuecomment-409913017

I'd like to get my phrase and import it into another wallet and am traveling ... away from my hand-written backup. Appreciate any help  ;)
Why tho?
Anyways, get your master private key (actually "extended private key") from the console with getmasterprivate() command.
Then see if your other wallet supports importation of xprv keys. You might have to use convert_xkey(xkey="zprv.....",xtype="standard") if the other wallet only support "xprv".
full member
Activity: 315
Merit: 120
April 11, 2024, 09:01:42 PM
#1
I am running an older wallet with a BIP39 seed phrase on Electrum 4.5.2. I was able to load the wallet from a file and see most of my transactions. However, when I try to see the seed phrase the option is greyed out. Why is this and/or is there a way to see my seed?

I'd like to get my phrase and import it into another wallet and am traveling ... away from my hand-written backup. Appreciate any help  Wink
Jump to: