message: test: consensus: Check that final transactions are valid
diff: from io import BytesIO
  import math
  +
  from test_framework.test_framework import BitcoinTestFramework
  from test_framework.messages import (
  BIP125_SEQUENCE_NUMBER,
  @@ -71,6 +72,7 @@ class MempoolAcceptanceTest(BitcoinTestFramework):
  ))['hex']
  txid_in_block = node.sendrawtransaction(hexstring=raw_tx_in_block, allowhighfees=True)
  node.generate(1)
  + self.mempool_size = 0
  self.check_mempool_result(
  result_expected=[{'txid': txid_in_block, 'allowed': False, 'reject-reason': '18: txn-already-known'}],
  rawtxs=[raw_tx_in_block],
  @@ -90,9 +92,25 @@ class MempoolAcceptanceTest(BitcoinTestFramework):
  rawtxs=[raw_tx_0],
  )
  + self.log.info('A final transaction not in the mempool')
  + coin = node.listunspent()[0] # Pick a random coin(base) to spend
  + raw_tx_final = node.signrawtransactionwithwallet(node.createrawtransaction(
  + inputs=[{'txid': coin['txid'], 'vout': coin['vout'], "sequence": 0xffffffff}], # SEQUENCE_FINAL
  + outputs=[{node.getnewaddress(): 0.025}],
  + locktime=node.getblockcount() + 2000, # Can be anything
  + ))['hex']
  + tx.deserialize(BytesIO(hex_str_to_bytes(raw_tx_final)))
  + self.check_mempool_result(
  + result_expected=[{'txid': tx.rehash(), 'allowed': True}],
  + rawtxs=[bytes_to_hex_str(tx.serialize())],
  + allowhighfees=True,
  + )
  + node.sendrawtransaction(hexstring=raw_tx_final, allowhighfees=True)
  + self.mempool_size += 1
  +
  self.log.info('A transaction in the mempool')
  node.sendrawtransaction(hexstring=raw_tx_0)
  - self.mempool_size = 1
  + self.mempool_size += 1
  self.check_mempool_result(
  result_expected=[{'txid': txid_0, 'allowed': False, 'reject-reason': '18: txn-already-in-mempool'}],
  rawtxs=[raw_tx_0],
  