|
|
@ -650,6 +650,7 @@ class BlockProcessor(server.db.DB): |
|
|
|
assert self.height >= 0 |
|
|
|
self.height -= 1 |
|
|
|
|
|
|
|
self.fs_height = self.height |
|
|
|
assert not self.headers |
|
|
|
assert not self.tx_hashes |
|
|
|
|
|
|
@ -669,15 +670,19 @@ class BlockProcessor(server.db.DB): |
|
|
|
s_pack = pack |
|
|
|
put_utxo = self.utxo_cache.__setitem__ |
|
|
|
spend_utxo = self.spend_utxo |
|
|
|
script_hash168 = self.coin.hash168_from_script() |
|
|
|
|
|
|
|
rtxs = reversed(txs) |
|
|
|
rtx_hashes = reversed(tx_hashes) |
|
|
|
|
|
|
|
for tx_hash, tx in zip(rtx_hashes, rtxs): |
|
|
|
# Spend the outputs |
|
|
|
for idx, txout in enumerate(tx.outputs): |
|
|
|
cache_value = spend_utxo(tx_hash, idx) |
|
|
|
touched.add(cache_value[:21]) |
|
|
|
# Spend the TX outputs. Be careful with unspendable |
|
|
|
# outputs - we didn't save those in the first place. |
|
|
|
hash168 = script_hash168(txout.pk_script) |
|
|
|
if hash168: |
|
|
|
cache_value = spend_utxo(tx_hash, idx) |
|
|
|
touched.add(cache_value[:21]) |
|
|
|
|
|
|
|
# Restore the inputs |
|
|
|
if not tx.is_coinbase: |
|
|
|