BIP32_HD_Wallet: Fix address derivation
Unfortunately there was root_name and root_derivation confusion in the past for classes derived from BIP_32_HD_Wallet. Address derivation used root_name and so would begin with 'x/' whereas it should have begun with root_derivation, and so started with 'm/'. This fixes that old wart and removes some fudges from the trezor code that used to work around it.
This commit is contained in:
@@ -63,6 +63,10 @@ class BTChipWallet(BIP44_Wallet):
|
||||
assert not self.has_seed()
|
||||
return self.force_watching_only
|
||||
|
||||
def address_id(self, address):
|
||||
# Strip the leading "m/"
|
||||
return BIP44_Wallet.address_id(self, address)[2:]
|
||||
|
||||
def get_client(self, noPin=False):
|
||||
if not BTCHIP:
|
||||
self.give_error('please install github.com/btchip/btchip-python')
|
||||
|
||||
@@ -98,7 +98,7 @@ def trezor_client_class(protocol_mixin, base_client, proto):
|
||||
'''Convert bip32 path to list of uint32 integers with prime flags
|
||||
0/-1/1' -> [0, 0x80000001, 0x80000001]'''
|
||||
path = []
|
||||
for x in n.split('/'):
|
||||
for x in n.split('/')[1:]:
|
||||
prime = 0
|
||||
if x.endswith("'"):
|
||||
x = x.replace('\'', '')
|
||||
|
||||
@@ -100,7 +100,6 @@ class TrezorCompatibleWallet(BIP44_Wallet):
|
||||
|
||||
# When creating a wallet we need to ask the device for the
|
||||
# master public key
|
||||
derivation = derivation.replace(self.root_name, self.prefix() + "/")
|
||||
xpub = self.get_public_key(derivation)
|
||||
return xpub, None
|
||||
|
||||
|
||||
Reference in New Issue
Block a user