Change keypath derivation logic (#6815)
While the standard defined by Trezor as the default derivation path here https://blog.trezor.io/trezor-integration-with-myetherwallet-3e217a652e08 says that it should be `m/44'/60'/0`, in practice they don't have an implementation of a wallet for Ethereum themselves and refer customers to MEW. MEW has a custom implementation of the path derivation logic that allows them to generate multiple addresses by essentially adding `/0`, `/1` etc to the path. In my initial implementation of Trezor I didn't take this into consideration unfortunately and just used the keypath that Trezor themselves recommended. However, given that it's seemingly standard practice to append `/0` for a "sub-address" (and this is what we've done for Ledger as well) it seems like a mistake on my part to not take that into consideration. Unfortunately, anyone who has used their Trezor device with Parity previously would now see a different address when they connect the Trezor device the next time. The only way they would have to access the old address is to use an old version, or by going through MEW and selecting the Ledger keypath. Also see #6811
This commit is contained in:
parent
5281e09828
commit
c1288810c6
@ -37,8 +37,8 @@ use trezor_sys::messages::{EthereumAddress, PinMatrixAck, MessageType, EthereumT
|
||||
|
||||
const TREZOR_VID: u16 = 0x534c;
|
||||
const TREZOR_PIDS: [u16; 1] = [0x0001]; // Trezor v1, keeping this as an array to leave room for Trezor v2 which is in progress
|
||||
const ETH_DERIVATION_PATH: [u32; 4] = [0x8000002C, 0x8000003C, 0x80000000, 0]; // m/44'/60'/0'/0
|
||||
const ETC_DERIVATION_PATH: [u32; 4] = [0x8000002C, 0x8000003D, 0x80000000, 0]; // m/44'/61'/0'/0
|
||||
const ETH_DERIVATION_PATH: [u32; 5] = [0x8000002C, 0x8000003C, 0x80000000, 0, 0]; // m/44'/60'/0'/0/0
|
||||
const ETC_DERIVATION_PATH: [u32; 5] = [0x8000002C, 0x8000003D, 0x80000000, 0, 0]; // m/44'/61'/0'/0/0
|
||||
|
||||
|
||||
/// Hardware wallet error.
|
||||
|
Loading…
Reference in New Issue
Block a user