Browse Source

fix upgrade_wallet

283
ThomasV 8 years ago
parent
commit
ab67a0313a
  1. 20
      lib/storage.py

20
lib/storage.py

@ -171,6 +171,7 @@ class WalletStorage(PrintError):
storage1 = WalletStorage(storage.path + '.deterministic') storage1 = WalletStorage(storage.path + '.deterministic')
storage1.data = copy.deepcopy(storage.data) storage1.data = copy.deepcopy(storage.data)
storage1.put('accounts', {'0': d['0']}) storage1.put('accounts', {'0': d['0']})
storage1.upgrade()
storage1.write() storage1.write()
storage2 = WalletStorage(storage.path + '.imported') storage2 = WalletStorage(storage.path + '.imported')
storage2.data = copy.deepcopy(storage.data) storage2.data = copy.deepcopy(storage.data)
@ -179,8 +180,8 @@ class WalletStorage(PrintError):
storage2.put('seed_version', None) storage2.put('seed_version', None)
storage2.put('master_public_key', None) storage2.put('master_public_key', None)
storage2.put('wallet_type', 'imported') storage2.put('wallet_type', 'imported')
storage2.write()
storage2.upgrade() storage2.upgrade()
storage2.write()
result = [storage1.path, storage2.path] result = [storage1.path, storage2.path]
elif wallet_type in ['bip44', 'trezor', 'keepkey', 'ledger']: elif wallet_type in ['bip44', 'trezor', 'keepkey', 'ledger']:
mpk = storage.get('master_public_keys') mpk = storage.get('master_public_keys')
@ -193,14 +194,11 @@ class WalletStorage(PrintError):
new_path = storage.path + '.' + k new_path = storage.path + '.' + k
storage2 = WalletStorage(new_path) storage2 = WalletStorage(new_path)
storage2.data = copy.deepcopy(storage.data) storage2.data = copy.deepcopy(storage.data)
storage2.put('wallet_type', 'standard') # save account, derivation and xpub at index 0
if wallet_type in ['trezor', 'keepkey', 'ledger']:
storage2.put('key_type', 'hardware')
storage2.put('hw_type', wallet_type)
storage2.put('accounts', {'0': x}) storage2.put('accounts', {'0': x})
# need to save derivation and xpub too storage2.put('master_public_keys', {"x/0'": xpub})
storage2.put('master_public_keys', {'x/': xpub})
storage2.put('derivation', bip44_derivation(k)) storage2.put('derivation', bip44_derivation(k))
storage2.upgrade()
storage2.write() storage2.write()
result.append(new_path) result.append(new_path)
else: else:
@ -252,7 +250,7 @@ class WalletStorage(PrintError):
elif wallet_type in['xpub', 'standard']: elif wallet_type in['xpub', 'standard']:
xpub = xpubs["x/"] xpub = xpubs["x/"]
xprv = xprvs["x/"] xprv = xprvs.get("x/")
d = { d = {
'type': 'bip32', 'type': 'bip32',
'xpub': xpub, 'xpub': xpub,
@ -264,11 +262,12 @@ class WalletStorage(PrintError):
elif wallet_type in ['trezor', 'keepkey', 'ledger']: elif wallet_type in ['trezor', 'keepkey', 'ledger']:
xpub = xpubs["x/0'"] xpub = xpubs["x/0'"]
derivation = self.get('derivation', bip44_derivation(0))
d = { d = {
'type': 'hardware', 'type': 'hardware',
'hw_type': wallet_type, 'hw_type': wallet_type,
'xpub': xpub, 'xpub': xpub,
'derivation': bip44_derivation(0), 'derivation': derivation,
} }
self.put('wallet_type', 'standard') self.put('wallet_type', 'standard')
self.put('keystore', d) self.put('keystore', d)
@ -285,10 +284,11 @@ class WalletStorage(PrintError):
self.put(key, d) self.put(key, d)
else: else:
raise raise
# remove junk
self.put('master_public_key', None) self.put('master_public_key', None)
self.put('master_public_keys', None) self.put('master_public_keys', None)
self.put('master_private_keys', None) self.put('master_private_keys', None)
self.put('derivation', None)
self.put('seed', None) self.put('seed', None)
self.put('keypairs', None) self.put('keypairs', None)
self.put('key_type', None) self.put('key_type', None)

Loading…
Cancel
Save