fix tx_merkle

This commit is contained in:
Jack Robison 2020-11-23 14:49:35 -05:00
parent 7204ddafec
commit c02750edbd
No known key found for this signature in database
GPG key ID: DF25C68FE0239BB2

View file

@ -469,7 +469,7 @@ class LevelDB:
block_txs = list(self.tx_db.iterator( block_txs = list(self.tx_db.iterator(
start=TX_HASH_PREFIX + util.pack_be_uint64(tx_counts[tx_height - 1]), start=TX_HASH_PREFIX + util.pack_be_uint64(tx_counts[tx_height - 1]),
stop=None if tx_height + 1 == len(tx_counts) else stop=None if tx_height + 1 == len(tx_counts) else
TX_HASH_PREFIX + util.pack_be_uint64(tx_counts[tx_height] + 1), include_key=False TX_HASH_PREFIX + util.pack_be_uint64(tx_counts[tx_height]), include_key=False
)) ))
if tx_height + 100 > self.db_height: if tx_height + 100 > self.db_height:
return block_txs return block_txs
@ -480,12 +480,13 @@ class LevelDB:
return self._merkle_tx_cache[(tx_num, tx_height)] return self._merkle_tx_cache[(tx_num, tx_height)]
if tx_height not in self._block_txs_cache: if tx_height not in self._block_txs_cache:
uncached = await asyncio.get_event_loop().run_in_executor(self.executor, _update_block_txs_cache) uncached = await asyncio.get_event_loop().run_in_executor(self.executor, _update_block_txs_cache)
block_txs = self._block_txs_cache.get(tx_height, uncached)
branch, root = self.merkle.branch_and_root(block_txs, tx_pos)
merkle = { merkle = {
'block_height': tx_height, 'block_height': tx_height,
'merkle': [ 'merkle': [
hash_to_hex_str(hash) for hash in self.merkle.branch_and_root( hash_to_hex_str(hash)
self._block_txs_cache.get(tx_height, uncached), tx_pos for hash in branch
)[0]
], ],
'pos': tx_pos 'pos': tx_pos
} }