1
0

move synchronize_account logic to account.py

This commit is contained in:
ThomasV
2014-09-09 17:31:15 +02:00
parent 3dc69df702
commit 0b7f8e74d5
2 changed files with 76 additions and 87 deletions

View File

@@ -75,11 +75,37 @@ class Account(object):
def redeem_script(self, for_change, n):
return None
def synchronize_sequence(self, wallet, for_change):
limit = self.gap_limit_for_change if for_change else self.gap_limit
while True:
addresses = self.get_addresses(for_change)
if len(addresses) < limit:
address = self.create_new_address(for_change)
wallet.add_address(address)
continue
if map( lambda a: wallet.address_is_old(a), addresses[-limit:] ) == limit*[False]:
break
else:
address = self.create_new_address(for_change)
wallet.add_address(address)
def synchronize(self, wallet):
self.synchronize_sequence(wallet, False)
self.synchronize_sequence(wallet, True)
class PendingAccount(Account):
def __init__(self, v):
self.pending_address = v['pending']
def synchronize(self, wallet):
if wallet.address_is_old(self.pending_address):
print_error( "creating account", account_id )
xpub = wallet.master_public_keys[account_id]
account = BIP32_Account({'xpub':xpub})
wallet.add_account(account_id, account)
#self.next_addresses.pop(account_id)
def get_addresses(self, is_change):
return [self.pending_address]
@@ -102,6 +128,9 @@ class ImportedAccount(Account):
def __init__(self, d):
self.keypairs = d['imported']
def synchronize(self, wallet):
return
def get_addresses(self, for_change):
return [] if for_change else sorted(self.keypairs.keys())
@@ -151,6 +180,8 @@ class ImportedAccount(Account):
class OldAccount(Account):
""" Privatekey(type,n) = Master_private_key + H(n|S|type) """
gap_limit = 5
gap_limit_for_change = 3
def __init__(self, v):
Account.__init__(self, v)
@@ -248,6 +279,8 @@ class OldAccount(Account):
class BIP32_Account(Account):
gap_limit = 20
gap_limit_for_change = 3
def __init__(self, v):
Account.__init__(self, v)