restore: try old wallet first

This commit is contained in:
thomasv 2013-09-03 10:58:07 +02:00
parent 3ecd81c94a
commit 9b986f8cb6
2 changed files with 47 additions and 32 deletions

View File

@ -123,14 +123,18 @@ class InstallWizard(QDialog):
waiting = lambda: False if wallet.is_up_to_date() else "%s\n%s %d\n%s %.1f"\
%(_("Please wait..."),_("Addresses generated:"),len(wallet.addresses(True)),_("Kilobytes received:"), wallet.interface.bytes_received/1024.)
# try to restore old account
wallet.create_old_account()
wallet.set_up_to_date(False)
wallet.interface.poke('synchronizer')
waiting_dialog(waiting)
# try to restore old account
if not wallet.is_found():
print "trying old method"
wallet.create_old_account()
if wallet.is_found():
wallet.seed_version = 4
wallet.storage.put('seed_version', wallet.seed_version, True)
else:
wallet.accounts.pop(0)
wallet.create_accounts()
wallet.set_up_to_date(False)
wallet.interface.poke('synchronizer')
waiting_dialog(waiting)
@ -145,31 +149,9 @@ class InstallWizard(QDialog):
def run(self):
a = self.restore_or_create()
if not a: exit()
wallet = Wallet(self.storage)
if a =='create':
wallet.init_seed(None)
self.show_seed(wallet)
if self.verify_seed(wallet):
wallet.save_seed()
else:
exit()
else:
# ask for seed and gap.
sg = self.seed_dialog()
if not sg: exit()
seed, gap = sg
if not seed: exit()
wallet.gap_limit = gap
if len(seed) == 128:
wallet.seed = ''
wallet.init_sequence(str(seed))
else:
wallet.init_seed(str(seed))
wallet.save_seed()
action = self.restore_or_create()
if not action: exit()
# select a server.
s = self.network_dialog()
@ -177,15 +159,44 @@ class InstallWizard(QDialog):
self.config.set_key("server", None, True)
self.config.set_key('auto_cycle', False, True)
# generate the first addresses, in case we are offline
if s is None or a == 'create':
wallet.synchronize()
wallet = Wallet(self.storage)
if action =='create':
wallet.init_seed(None)
self.show_seed(wallet)
if self.verify_seed(wallet):
wallet.save_seed()
wallet.create_accounts()
# generate first addresses offline
wallet.synchronize()
else:
return
elif action == 'restore':
# ask for seed and gap.
sg = self.seed_dialog()
if not sg:
return
seed, gap = sg
if not seed:
return
wallet.gap_limit = gap
if len(seed) == 128:
wallet.seed = ''
wallet.init_sequence(str(seed))
else:
wallet.init_seed(str(seed))
wallet.save_seed()
# start wallet threads
wallet.start_threads(self.interface, self.blockchain)
# if it is a creation, use 5
# if restore, use 4 then 5
if a == 'restore' and s is not None:
if action == 'restore' and s is not None:
try:
keep_it = self.restore_wallet(wallet)
wallet.fill_addressbook()

View File

@ -238,6 +238,9 @@ class Wallet:
self.storage.put('seed', self.seed, True)
self.storage.put('seed_version', self.seed_version, True)
def create_accounts(self):
master_k, master_c, master_K, master_cK = bip32_init(self.seed)
# normal accounts
@ -1331,6 +1334,7 @@ class Wallet:
class WalletSynchronizer(threading.Thread):