commit f263f8b0fd7df4777d1f3672cdc5c722d58621c8
parent 19f527c717245a0e81fbc0d1eecffb59d11b6c5e
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:
2 files changed, 15 insertions(+), 2 deletions(-)
diff --git a/lib/wallet.py b/lib/wallet.py
@@ -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):
diff --git a/plugins/ledger/ledger.py b/plugins/ledger/ledger.py
@@ -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
@@ -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)
@@ -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)