Skip to content

Commit c568511

Browse files
committed
test fixup for incremental feerate
Clarify that the purpose of some parameters are to ensure identical transactions are not created. Also, strengthen the test to catch these cases.
1 parent 636fa21 commit c568511

File tree

1 file changed

+14
-11
lines changed

1 file changed

+14
-11
lines changed

test/functional/feature_rbf.py

Lines changed: 14 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,6 @@
1313
from test_framework.test_framework import BitcoinTestFramework
1414
from test_framework.util import (
1515
assert_equal,
16-
assert_greater_than,
1716
assert_greater_than_or_equal,
1817
assert_raises_rpc_error,
1918
get_fee,
@@ -603,23 +602,27 @@ def test_incremental_relay_feerates(self):
603602

604603
low_feerate = min_relay_feerate * 2
605604
confirmed_utxo = self.wallet.get_utxo(confirmed_only=True)
606-
replacee_tx = self.wallet.create_self_transfer(utxo_to_spend=confirmed_utxo, fee_rate=low_feerate, target_vsize=5000)
605+
# Use different versions to avoid creating an identical transaction when failed_replacement_tx is created.
606+
# Use a target vsize that is small, but something larger than the minimum so that we can create a transaction that is 1vB smaller later.
607+
replacee_tx = self.wallet.create_self_transfer(utxo_to_spend=confirmed_utxo, fee_rate=low_feerate, version=3, target_vsize=200)
607608
node.sendrawtransaction(replacee_tx['hex'])
608609

609-
replacement_placeholder_tx = self.wallet.create_self_transfer(utxo_to_spend=confirmed_utxo)
610+
replacement_placeholder_tx = self.wallet.create_self_transfer(utxo_to_spend=confirmed_utxo, target_vsize=200)
610611
replacement_expected_size = replacement_placeholder_tx['tx'].get_vsize()
611612
replacement_required_fee = get_fee(replacement_expected_size, incremental_setting_decimal) + replacee_tx['fee']
612613

613-
# Should always be required to pay additional fees
614-
if incremental_setting > 0:
615-
assert_greater_than(replacement_required_fee, replacee_tx['fee'])
616-
617-
# 1 satoshi shy of the required fee
618-
failed_replacement_tx = self.wallet.create_self_transfer(utxo_to_spend=confirmed_utxo, fee=replacement_required_fee - Decimal("0.00000001"))
614+
# Show that replacement fails when paying 1 satoshi shy of the required fee
615+
failed_replacement_tx = self.wallet.create_self_transfer(utxo_to_spend=confirmed_utxo, fee=replacement_required_fee - Decimal("0.00000001"), version=2, target_vsize=200)
619616
assert_raises_rpc_error(-26, "insufficient fee", node.sendrawtransaction, failed_replacement_tx['hex'])
617+
replacement_tx = self.wallet.create_self_transfer(utxo_to_spend=confirmed_utxo, fee=replacement_required_fee, version=2, target_vsize=200)
620618

621-
replacement_tx = self.wallet.create_self_transfer(utxo_to_spend=confirmed_utxo, fee=replacement_required_fee)
622-
node.sendrawtransaction(replacement_tx['hex'])
619+
if incremental_setting == 0:
620+
# When incremental relay feerate is 0, additional fees are not required, but higher feerate is still required.
621+
assert_raises_rpc_error(-26, "insufficient fee", node.sendrawtransaction, replacement_tx['hex'])
622+
replacement_tx_smaller = self.wallet.create_self_transfer(utxo_to_spend=confirmed_utxo, fee=replacement_required_fee, version=2, target_vsize=199)
623+
node.sendrawtransaction(replacement_tx_smaller['hex'])
624+
else:
625+
node.sendrawtransaction(replacement_tx['hex'])
623626

624627
def test_fullrbf(self):
625628
# BIP125 signaling is not respected

0 commit comments

Comments
 (0)