|
|
|
@ -7,12 +7,12 @@
|
|
|
|
|
from decimal import Decimal
|
|
|
|
|
|
|
|
|
|
from test_framework.blocktools import COINBASE_MATURITY
|
|
|
|
|
from test_framework.messages import COIN
|
|
|
|
|
from test_framework.test_framework import BitcoinTestFramework
|
|
|
|
|
from test_framework.util import (
|
|
|
|
|
assert_equal,
|
|
|
|
|
assert_greater_than,
|
|
|
|
|
assert_raises_rpc_error,
|
|
|
|
|
create_lots_of_big_transactions,
|
|
|
|
|
gen_return_txouts,
|
|
|
|
|
)
|
|
|
|
|
from test_framework.wallet import MiniWallet
|
|
|
|
@ -29,16 +29,6 @@ class MempoolLimitTest(BitcoinTestFramework):
|
|
|
|
|
]]
|
|
|
|
|
self.supports_cli = False
|
|
|
|
|
|
|
|
|
|
def send_large_txs(self, node, miniwallet, txouts, fee, tx_batch_size):
|
|
|
|
|
for _ in range(tx_batch_size):
|
|
|
|
|
tx = miniwallet.create_self_transfer(from_node=node, fee_rate=0, mempool_valid=False)['tx']
|
|
|
|
|
for txout in txouts:
|
|
|
|
|
tx.vout.append(txout)
|
|
|
|
|
tx.vout[0].nValue -= int(fee * COIN)
|
|
|
|
|
res = node.testmempoolaccept([tx.serialize().hex()])[0]
|
|
|
|
|
assert_equal(res['fees']['base'], fee)
|
|
|
|
|
miniwallet.sendrawtransaction(from_node=node, tx_hex=tx.serialize().hex())
|
|
|
|
|
|
|
|
|
|
def run_test(self):
|
|
|
|
|
txouts = gen_return_txouts()
|
|
|
|
|
node = self.nodes[0]
|
|
|
|
@ -71,7 +61,7 @@ class MempoolLimitTest(BitcoinTestFramework):
|
|
|
|
|
self.log.info("Fill up the mempool with txs with higher fee rate")
|
|
|
|
|
for batch_of_txid in range(num_of_batches):
|
|
|
|
|
fee = (batch_of_txid + 1) * base_fee
|
|
|
|
|
self.send_large_txs(node, miniwallet, txouts, fee, tx_batch_size)
|
|
|
|
|
create_lots_of_big_transactions(miniwallet, node, fee, tx_batch_size, txouts)
|
|
|
|
|
|
|
|
|
|
self.log.info('The tx should be evicted by now')
|
|
|
|
|
# The number of transactions created should be greater than the ones present in the mempool
|
|
|
|
|