Skip to content

Commit

Permalink
Namecoin / AuxPoW: More optimizations for transaction output deserial…
Browse files Browse the repository at this point in the history
…ization.
  • Loading branch information
JeremyRand committed Jul 2, 2018
1 parent f6702cd commit 800ec89
Showing 1 changed file with 10 additions and 2 deletions.
12 changes: 10 additions & 2 deletions lib/auxpow.py
Original file line number Diff line number Diff line change
Expand Up @@ -306,17 +306,25 @@ def fast_txid(tx):
return bh2u(Hash(tx.raw_bytes)[::-1])

def fast_tx_deserialize(tx):
def stub(_bytes, *, net=None):
def stub_get_address_from_output_script(_bytes, *, net=None):
return TYPE_SCRIPT, bh2u(b'')

def stub_parse_output(vds, i):
vds.read_int64() # d['value']
vds.read_bytes(vds.read_compact_size()) # scriptPubKey
return {'type': TYPE_SCRIPT, 'address': None, 'value': 0}

# Monkeypatch output address parsing with a stub, since we only care about
# inputs.
real_get_address_from_output_script = transaction.get_address_from_output_script
transaction.get_address_from_output_script = stub
real_parse_output = transaction.parse_output
transaction.get_address_from_output_script = stub_get_address_from_output_script
transaction.parse_output = stub_parse_output

result = tx.deserialize()

# Restore the real output address parser.
transaction.get_address_from_output_script = real_get_address_from_output_script
transaction.parse_output = real_parse_output

return result

0 comments on commit 800ec89

Please sign in to comment.