1
0

restore old accounts from seed

This commit is contained in:
ThomasV
2013-08-31 15:02:20 +02:00
parent f48c6130df
commit b983d12929
5 changed files with 56 additions and 59 deletions

View File

@@ -72,6 +72,7 @@ class Wallet:
# saved fields
self.seed_version = config.get('seed_version', SEED_VERSION)
self.gap_limit = config.get('gap_limit', 5)
self.use_change = config.get('use_change',True)
self.fee = int(config.get('fee_per_kb',20000))
@@ -92,6 +93,9 @@ class Wallet:
self.first_addresses = config.get('first_addresses',{})
#if self.seed_version != SEED_VERSION:
# raise ValueError("This wallet seed is deprecated. Please restore from seed.")
self.load_accounts(config)
self.transactions = {}
@@ -117,9 +121,6 @@ class Wallet:
self.transaction_lock = threading.Lock()
self.tx_event = threading.Event()
if self.seed_version != SEED_VERSION:
raise ValueError("This wallet seed is deprecated. Please run upgrade.py for a diagnostic.")
for tx_hash, tx in self.transactions.items():
if self.check_new_tx(tx_hash, tx):
self.update_tx_outputs(tx_hash)
@@ -294,26 +295,39 @@ class Wallet:
return account_id, account
def create_account(self, account_type = '1', name = 'unnamed'):
def create_account(self, account_type = '1', name = None):
account_id, account = self.next_account(account_type)
self.accounts[account_id] = account
self.save_accounts()
self.labels[account_id] = name
if name:
self.labels[account_id] = name
self.config.set_key('labels', self.labels, True)
def create_old_account(self):
print self.seed
mpk = OldAccount.mpk_from_seed(self.seed)
self.config.set_key('master_public_key', mpk, True)
self.accounts[0] = OldAccount({'mpk':mpk, 0:[], 1:[]})
self.save_accounts()
def save_accounts(self):
d = {}
for k, v in self.accounts.items():
d[k] = v.dump()
self.config.set_key('accounts', d, True)
def load_accounts(self, config):
d = config.get('accounts', {})
self.accounts = {}
for k, v in d.items():
if '&' in k:
if k == 0:
v['mpk'] = config.get('master_public_key')
self.accounts[k] = OldAccount(v)
elif '&' in k:
self.accounts[k] = BIP32_Account_2of2(v)
else:
self.accounts[k] = BIP32_Account(v)
@@ -616,7 +630,8 @@ class Wallet:
def synchronize(self):
self.create_pending_accounts()
if self.master_public_keys:
self.create_pending_accounts()
new = []
for account in self.accounts.values():
new += self.synchronize_account(account)