LedgerHQ / ledger-wallet-ethereum-chrome

Ledger Wallet Ethereum Chrome application
http://www.ledgerwallet.com/apps/ethereum
MIT License
57 stars 22 forks source link

Fix BIP 32 derivation path to conform to BIP 44 #7

Open mmazi opened 7 years ago

mmazi commented 7 years ago

It seems the app uses m/44'/60'/0'/0 as the only address it supports (no HD support currently), whereas as per BIP 44 the addresses used should be one level deeper, i.e.

m/44'/60'/0'/0/0 m/44'/60'/0'/0/1 m/44'/60'/0'/0/2 etc.

A consequence of this is that myetherwallet.com also use the incorrect path m/44'/60'/0' as the parent from which they derive child addresses for Ledger Wallets (they use the correct path m/44'/60'/0'/0 for other types of wallets like mnemonic seeds).

btchip commented 7 years ago

The problem IMHO is that BIP 44 refers to Bitcoin and makes little sense in an Ethereum context, given that change addresses do not exist. It'd be interesting to know if all other deterministic Ethereum wallet use it that way, or have their own EIP. The closest I could find is that one https://github.com/ethereum/EIPs/issues/84 where the discussing doesn't seem to be finalized yet.

junderw commented 7 years ago

I agree with this.

Jaxx uses the BIP44 derivation (leaving the change address layer in there) so from the "you can recover your funds on other wallets in an emergency when your ledger breaks" situation, adding the extra 0 layer to match with Jaxx would be a good idea imo...

BlinkyStitt commented 6 years ago

It would be helpful if the "Ledger Wallet Ethereum" chrome allowed choosing the HD derivation path. I am moving from Trezor to Ledger and so my funds are already at m/44'/60'/0'/0

I understand that changing the path could cause a lot of users to freak out, but it should at least be an option.

For now, I will use https://www.myetherwallet.com/ which allows setting my correct path.

BlinkyStitt commented 6 years ago

Looking into this some more, I think the proper place to fix this is actually in the ledger app instead of the chrome app.

EDIT: actually no. I think it does need to be here.