URI: 
       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)