tconvert multisig wallets - electrum - Electrum Bitcoin wallet HTML git clone https://git.parazyd.org/electrum DIR Log DIR Files DIR Refs DIR Submodules --- DIR commit 3a1bf84d2c9fd225231d6d2428feb5274f85b8e1 DIR parent 8736cf8cd485495b95d7e669596107023ec4866d HTML Author: ThomasV <thomasv@electrum.org> Date: Sun, 21 Aug 2016 14:27:30 +0200 convert multisig wallets Diffstat: M lib/storage.py | 37 ++++++++++++++++++------------- 1 file changed, 21 insertions(+), 16 deletions(-) --- DIR diff --git a/lib/storage.py b/lib/storage.py t@@ -221,24 +221,22 @@ class WalletStorage(PrintError): def convert_wallet_type(self, is_test): assert not self.requires_split() - d = self.get('keystore', {}) - t = d.get('type') - if t: + if self.get('keystore') or self.get('x1/'): return False if is_test: return True wallet_type = self.get('wallet_type') seed_version = self.get_seed_version() + seed = self.get('seed') + xpubs = self.get('master_public_keys') + xprvs = self.get('master_private_keys') + mpk = self.get('master_public_key') if seed_version == OLD_SEED_VERSION or wallet_type == 'old': - seed = self.get('seed') - mpk = self.get('master_public_key') d = { 'type': 'old', 'seed': seed, 'mpk': mpk, } - self.put('seed', None) - self.put('master_public_key', None) self.put('wallet_type', 'standard') self.put('keystore', d) t@@ -249,16 +247,13 @@ class WalletStorage(PrintError): 'type': 'bip32', 'xpub': xpub, 'xprv': xprv, - 'seed': self.get('seed', '') + 'seed': seed, } - self.put('master_public_keys', None) - self.put('master_private_keys', None) - self.put('seed', None) self.put('wallet_type', 'standard') self.put('keystore', d) elif wallet_type in ['trezor', 'keepkey']: - xpub = self.get('master_public_keys')["x/0'"] + xpub = xpubs["x/0'"] d = { 'type': 'hardware', 'hardware_type': wallet_type, t@@ -268,11 +263,21 @@ class WalletStorage(PrintError): self.put('wallet_type', 'standard') self.put('keystore', d) - elif multisig_type(wallet_type): - raise BaseException('not implemented') + elif (wallet_type == '2fa') or multisig_type(wallet_type): + for key in xpubs.keys(): + d = { + 'type': 'bip32', + 'xpub': xpubs[key], + 'xprv': xprvs.get(key), + } + if key == 'x1/' and seed: + d['seed'] = seed + self.put(key, d) - elif wallet_type in ['2fa']: - raise BaseException('not implemented') + self.put('master_public_key', None) + self.put('master_public_keys', None) + self.put('master_private_keys', None) + self.put('seed', None) def convert_imported(self, test):