1
0

let DB handle addresses

This commit is contained in:
ThomasV
2019-03-04 12:53:04 +01:00
parent 2abc4f6334
commit 56ced1dfd5
2 changed files with 102 additions and 72 deletions

View File

@@ -667,6 +667,73 @@ class JsonDB(PrintError):
self.data[name] = {}
return self.data[name]
@locked
def num_change_addresses(self):
return len(self.change_addresses)
@locked
def num_receiving_addresses(self):
return len(self.receiving_addresses)
@locked
def get_change_addresses(self):
return list(self.change_addresses)
@locked
def get_receiving_addresses(self):
return list(self.receiving_addresses)
@modifier
def add_change_address(self, addr):
self._addr_to_addr_index[addr] = (True, len(self.change_addresses))
self.change_addresses.append(addr)
@modifier
def add_receiving_address(self, addr):
self._addr_to_addr_index[addr] = (False, len(self.receiving_addresses))
self.receiving_addresses.append(addr)
@locked
def get_address_index(self, address):
return self._addr_to_addr_index.get(address)
@modifier
def add_imported_address(self, addr, d):
self.imported_addresses[addr] = d
@modifier
def remove_imported_address(self, addr):
self.imported_addresses.pop(addr)
@locked
def has_imported_address(self, addr):
return addr in self.imported_addresses
@locked
def get_imported_addresses(self):
return list(sorted(self.imported_addresses.keys()))
@locked
def get_imported_address(self, addr):
return self.imported_addresses.get(addr)
def load_addresses(self, wallet_type):
""" called from Abstract_Wallet.__init__ """
if wallet_type == 'imported':
self.imported_addresses = self.get_data_ref('addresses')
else:
self.get_data_ref('addresses')
for name in ['receiving', 'change']:
if name not in self.data['addresses']:
self.data['addresses'][name] = []
self.change_addresses = self.data['addresses']['change']
self.receiving_addresses = self.data['addresses']['receiving']
self._addr_to_addr_index = {} # key: address, value: (is_change, index)
for i, addr in enumerate(self.receiving_addresses):
self._addr_to_addr_index[addr] = (False, i)
for i, addr in enumerate(self.change_addresses):
self._addr_to_addr_index[addr] = (True, i)
@profiler
def load_transactions(self):
# references in self.data