for i in range(l-1, -1, -1):
item = serialized_hist[80*i:80*(i+1)]
item_height = int(rev_hex(item[36:39].encode('hex')), 16)
- if item_height < tx_height:
+ if item_height <= tx_height:
serialized_hist = serialized_hist[0:80*(i+1)] + s + serialized_hist[80*(i+1):]
break
else:
serialized_hist = serialized_hist[0:80*i] + new_item + serialized_hist[80*(i+1):]
break
else:
+ self.shared.stop()
hist = self.deserialize(serialized_hist)
raise BaseException("prevout not found", addr, hist, txi.encode('hex'))
for txi in block_inputs:
try:
addr = self.db.Get(txi)
- except:
- # print "addr not in db", txi.encode('hex')
+ except KeyError:
# the input could come from the same block
continue
+ except:
+ traceback.print_exc(file=sys.stdout)
+ self.shared.stop()
+ raise
+
self.batch_txio[txi] = addr
addr_to_read.append(addr)
for addr in addr_to_read:
try:
self.batch_list[addr] = self.db.Get(addr)
- except:
+ except KeyError:
self.batch_list[addr] = ''
+ except:
+ traceback.print_exc(file=sys.stdout)
+ self.shared.stop()
+ raise
# process
try:
addr = self.db.Get(txi)
except:
- continue
+ tx_prev = self.get_mempool_transaction(x.get('prevout_hash'))
+ try:
+ addr = tx_prev['outputs'][x.get('prevout_n')]['address']
+ if not addr: continue
+ except:
+ continue
l = self.mempool_addresses.get(tx_hash, [])
if addr not in l:
l.append(addr)