self.shared = shared
self.hash_list = {}
self.parents = {}
- self.root_hash = None
self.test_reorgs = test_reorgs
try:
return
+ # compute root hash
+ d = self.get_node('')
+ self.root_hash, v = self.get_node_hash('',d,None)
+ print_log("UTXO tree root hash:", self.root_hash.encode('hex'))
+ print_log("Coins in database:", v)
# convert between bitcoin addresses and 20 bytes keys used for storage.
def address_to_key(self, addr):
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:
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)