traceback.print_exc(file=sys.stdout)
self.shared.stop()
- self.db_version = 2 # increase this when database needs to be updated
+ self.db_version = 3 # increase this when database needs to be updated
try:
self.last_hash, self.height, db_version = ast.literal_eval(self.db_undo.get('height'))
print_log("Database version", self.db_version)
#traceback.print_exc(file=sys.stdout)
print_log('initializing database')
self.height = 0
- self.last_hash = '000000000019d6689c085ae165831e934ff763ae46a2a6c172b3f1b60a8ce26f'
+ self.last_hash = '00000a060336cbb72fe969666d337b87198b1add2abaa59cca226820b32933a4'
db_version = self.db_version
# write root
self.put_node('', {})
return hash_160_to_bc_address(addr)
- def get_address_path(self, addr):
+ def get_proof(self, addr):
key = self.address_to_key(addr)
- p = self.get_path(key)
- p.append(key)
+ i = self.db_utxo.iterator(start=key)
+ k, _ = i.next()
+
+ p = self.get_path(k)
+ p.append(k)
out = []
for item in p:
def get_address(self, txi):
- addr = self.db_addr.get(txi)
- return self.key_to_address(addr) if addr else None
+ return self.db_addr.get(txi)
def get_undo_info(self, height):
self.add_address(key + txo, value, tx_height)
# backlink
- self.db_addr.put(txo, key)
+ self.db_addr.put(txo, addr)
self.db_addr.delete(txo)
+ def get_utxo_value(self, addr, txi):
+ key = self.address_to_key(addr)
+ leaf = key + txi
+ s = self.db_utxo.get(leaf)
+ value = hex_to_int(s[0:8])
+ return value
+
def set_spent(self, addr, txi, txid, index, height, undo):
key = self.address_to_key(addr)
leaf = key + txi
# restore backlink
- self.db_addr.put(txi, key)
+ self.db_addr.put(txi, addr)
v, height = undo.pop(leaf)
self.add_address(leaf, v, height)