tConvert legacy restored hardware wallets - electrum - Electrum Bitcoin wallet HTML git clone https://git.parazyd.org/electrum DIR Log DIR Files DIR Refs DIR Submodules --- DIR commit f263f8b0fd7df4777d1f3672cdc5c722d58621c8 DIR parent 19f527c717245a0e81fbc0d1eecffb59d11b6c5e HTML Author: Neil Booth <kyuupichan@gmail.com> Date: Thu, 31 Dec 2015 09:51:27 +0900 Convert legacy restored hardware wallets Hardware wallets do not have a seed and hardware wallet code should not have to worry about that case. Diffstat: M lib/wallet.py | 13 ++++++++++++- M plugins/ledger/ledger.py | 4 +++- 2 files changed, 15 insertions(+), 2 deletions(-) --- DIR diff --git a/lib/wallet.py b/lib/wallet.py t@@ -1932,7 +1932,18 @@ class Wallet(object): else: WalletClass = NewWallet - return WalletClass(storage) + wallet = WalletClass(storage) + + # Convert hardware wallets restored with older versions of + # Electrum to BIP44 wallets. A hardware wallet does not have + # a seed and plugins do not need to handle having one. + rwc = getattr(wallet, 'restore_wallet_class', None) + if rwc and storage.get('seed', ''): + storage.print_error("converting wallet type to " + rwc.wallet_type) + storage.put('wallet_type', rwc.wallet_type) + wallet = rwc(storage) + + return wallet @classmethod def is_seed(self, seed): DIR diff --git a/plugins/ledger/ledger.py b/plugins/ledger/ledger.py t@@ -10,7 +10,7 @@ from electrum.bitcoin import EncodeBase58Check, DecodeBase58Check, public_key_to from electrum.i18n import _ from electrum.plugins import BasePlugin, hook from electrum.transaction import deserialize -from electrum.wallet import BIP32_HD_Wallet, BIP32_Wallet +from electrum.wallet import BIP44_Wallet, BIP32_HD_Wallet, BIP32_Wallet from electrum.util import format_satoshis_plain, print_error, print_msg import hashlib t@@ -33,6 +33,7 @@ except ImportError: class BTChipWallet(BIP32_HD_Wallet): wallet_type = 'btchip' root_derivation = "m/44'/0'" + restore_wallet_class = BIP44_Wallet def __init__(self, storage): BIP32_HD_Wallet.__init__(self, storage) t@@ -416,6 +417,7 @@ class BTChipWallet(BIP32_HD_Wallet): class LedgerPlugin(BasePlugin): + wallet_class = BTChipWallet def __init__(self, parent, config, name): BasePlugin.__init__(self, parent, config, name)