|
@ -42,6 +42,9 @@ from synchronizer import WalletSynchronizer |
|
|
COINBASE_MATURITY = 100 |
|
|
COINBASE_MATURITY = 100 |
|
|
DUST_THRESHOLD = 5430 |
|
|
DUST_THRESHOLD = 5430 |
|
|
|
|
|
|
|
|
|
|
|
# internal ID for imported account |
|
|
|
|
|
IMPORTED_ACCOUNT = '/x' |
|
|
|
|
|
|
|
|
# AES encryption |
|
|
# AES encryption |
|
|
EncodeAES = lambda secret, s: base64.b64encode(aes.encryptData(secret,s)) |
|
|
EncodeAES = lambda secret, s: base64.b64encode(aes.encryptData(secret,s)) |
|
|
DecodeAES = lambda secret, e: aes.decryptData(secret, base64.b64decode(e)) |
|
|
DecodeAES = lambda secret, e: aes.decryptData(secret, base64.b64decode(e)) |
|
@ -246,7 +249,7 @@ class Abstract_Wallet: |
|
|
self.accounts = {} |
|
|
self.accounts = {} |
|
|
self.imported_keys = self.storage.get('imported_keys',{}) |
|
|
self.imported_keys = self.storage.get('imported_keys',{}) |
|
|
if self.imported_keys: |
|
|
if self.imported_keys: |
|
|
self.accounts[-1] = ImportedAccount(self.imported_keys) |
|
|
self.accounts['/x'] = ImportedAccount(self.imported_keys) |
|
|
|
|
|
|
|
|
def synchronize(self): |
|
|
def synchronize(self): |
|
|
pass |
|
|
pass |
|
@ -285,7 +288,7 @@ class Abstract_Wallet: |
|
|
# store the originally requested keypair into the imported keys table |
|
|
# store the originally requested keypair into the imported keys table |
|
|
self.imported_keys[address] = pw_encode(sec, password ) |
|
|
self.imported_keys[address] = pw_encode(sec, password ) |
|
|
self.storage.put('imported_keys', self.imported_keys, True) |
|
|
self.storage.put('imported_keys', self.imported_keys, True) |
|
|
self.accounts[-1] = ImportedAccount(self.imported_keys) |
|
|
self.accounts[IMPORTED_ACCOUNT] = ImportedAccount(self.imported_keys) |
|
|
|
|
|
|
|
|
if self.synchronizer: |
|
|
if self.synchronizer: |
|
|
self.synchronizer.subscribe_to_addresses([address]) |
|
|
self.synchronizer.subscribe_to_addresses([address]) |
|
@ -297,9 +300,9 @@ class Abstract_Wallet: |
|
|
self.imported_keys.pop(addr) |
|
|
self.imported_keys.pop(addr) |
|
|
self.storage.put('imported_keys', self.imported_keys, True) |
|
|
self.storage.put('imported_keys', self.imported_keys, True) |
|
|
if self.imported_keys: |
|
|
if self.imported_keys: |
|
|
self.accounts[-1] = ImportedAccount(self.imported_keys) |
|
|
self.accounts[IMPORTED_ACCOUNT] = ImportedAccount(self.imported_keys) |
|
|
else: |
|
|
else: |
|
|
self.accounts.pop(-1) |
|
|
self.accounts.pop(IMPORTED_ACCOUNT) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def set_label(self, name, text = None): |
|
|
def set_label(self, name, text = None): |
|
@ -365,7 +368,7 @@ class Abstract_Wallet: |
|
|
def getpubkeys(self, addr): |
|
|
def getpubkeys(self, addr): |
|
|
assert is_valid(addr) and self.is_mine(addr) |
|
|
assert is_valid(addr) and self.is_mine(addr) |
|
|
account, sequence = self.get_address_index(addr) |
|
|
account, sequence = self.get_address_index(addr) |
|
|
if account != -1: |
|
|
if account != IMPORTED_ACCOUNT: |
|
|
a = self.accounts[account] |
|
|
a = self.accounts[account] |
|
|
return a.get_pubkeys( sequence ) |
|
|
return a.get_pubkeys( sequence ) |
|
|
|
|
|
|
|
@ -722,7 +725,7 @@ class Abstract_Wallet: |
|
|
address = inputs[0].get('address') |
|
|
address = inputs[0].get('address') |
|
|
account, _ = self.get_address_index(address) |
|
|
account, _ = self.get_address_index(address) |
|
|
|
|
|
|
|
|
if not self.use_change or account == -1: |
|
|
if not self.use_change or account == IMPORTED_ACCOUNT: |
|
|
change_addr = inputs[-1]['address'] |
|
|
change_addr = inputs[-1]['address'] |
|
|
else: |
|
|
else: |
|
|
change_addr = self.accounts[account].get_addresses(1)[-self.gap_limit_for_change] |
|
|
change_addr = self.accounts[account].get_addresses(1)[-self.gap_limit_for_change] |
|
|