test: consensus: Check that final transactions are valid
This commit is contained in:
parent
fae3617d79
commit
aaaa8eb1ed
1 changed files with 19 additions and 1 deletions
|
@ -6,6 +6,7 @@
|
||||||
|
|
||||||
from io import BytesIO
|
from io import BytesIO
|
||||||
import math
|
import math
|
||||||
|
|
||||||
from test_framework.test_framework import BitcoinTestFramework
|
from test_framework.test_framework import BitcoinTestFramework
|
||||||
from test_framework.messages import (
|
from test_framework.messages import (
|
||||||
BIP125_SEQUENCE_NUMBER,
|
BIP125_SEQUENCE_NUMBER,
|
||||||
|
@ -71,6 +72,7 @@ class MempoolAcceptanceTest(BitcoinTestFramework):
|
||||||
))['hex']
|
))['hex']
|
||||||
txid_in_block = node.sendrawtransaction(hexstring=raw_tx_in_block, allowhighfees=True)
|
txid_in_block = node.sendrawtransaction(hexstring=raw_tx_in_block, allowhighfees=True)
|
||||||
node.generate(1)
|
node.generate(1)
|
||||||
|
self.mempool_size = 0
|
||||||
self.check_mempool_result(
|
self.check_mempool_result(
|
||||||
result_expected=[{'txid': txid_in_block, 'allowed': False, 'reject-reason': '18: txn-already-known'}],
|
result_expected=[{'txid': txid_in_block, 'allowed': False, 'reject-reason': '18: txn-already-known'}],
|
||||||
rawtxs=[raw_tx_in_block],
|
rawtxs=[raw_tx_in_block],
|
||||||
|
@ -90,9 +92,25 @@ class MempoolAcceptanceTest(BitcoinTestFramework):
|
||||||
rawtxs=[raw_tx_0],
|
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')
|
self.log.info('A transaction in the mempool')
|
||||||
node.sendrawtransaction(hexstring=raw_tx_0)
|
node.sendrawtransaction(hexstring=raw_tx_0)
|
||||||
self.mempool_size = 1
|
self.mempool_size += 1
|
||||||
self.check_mempool_result(
|
self.check_mempool_result(
|
||||||
result_expected=[{'txid': txid_0, 'allowed': False, 'reject-reason': '18: txn-already-in-mempool'}],
|
result_expected=[{'txid': txid_0, 'allowed': False, 'reject-reason': '18: txn-already-in-mempool'}],
|
||||||
rawtxs=[raw_tx_0],
|
rawtxs=[raw_tx_0],
|
||||||
|
|
Loading…
Add table
Reference in a new issue