@ -136,9 +136,9 @@ class ReplaceByFeeTest(BitcoinTestFramework):
@@ -136,9 +136,9 @@ class ReplaceByFeeTest(BitcoinTestFramework):
tx1b_hex = txToHex ( tx1b )
# This will raise an exception due to insufficient fee
assert_raises_json rpc ( - 26 , " insufficient fee " , self . nodes [ 0 ] . sendrawtransaction , tx1b_hex , True )
assert_raises_rpc_error ( - 26 , " insufficient fee " , self . nodes [ 0 ] . sendrawtransaction , tx1b_hex , True )
# This will raise an exception due to transaction replacement being disabled
assert_raises_json rpc ( - 26 , " txn-mempool-conflict " , self . nodes [ 1 ] . sendrawtransaction , tx1b_hex , True )
assert_raises_rpc_error ( - 26 , " txn-mempool-conflict " , self . nodes [ 1 ] . sendrawtransaction , tx1b_hex , True )
# Extra 0.1 BTC fee
tx1b = CTransaction ( )
@ -146,7 +146,7 @@ class ReplaceByFeeTest(BitcoinTestFramework):
@@ -146,7 +146,7 @@ class ReplaceByFeeTest(BitcoinTestFramework):
tx1b . vout = [ CTxOut ( int ( 0.9 * COIN ) , CScript ( [ b ' b ' ] ) ) ]
tx1b_hex = txToHex ( tx1b )
# Replacement still disabled even with "enough fee"
assert_raises_json rpc ( - 26 , " txn-mempool-conflict " , self . nodes [ 1 ] . sendrawtransaction , tx1b_hex , True )
assert_raises_rpc_error ( - 26 , " txn-mempool-conflict " , self . nodes [ 1 ] . sendrawtransaction , tx1b_hex , True )
# Works when enabled
tx1b_txid = self . nodes [ 0 ] . sendrawtransaction ( tx1b_hex , True )
@ -189,7 +189,7 @@ class ReplaceByFeeTest(BitcoinTestFramework):
@@ -189,7 +189,7 @@ class ReplaceByFeeTest(BitcoinTestFramework):
dbl_tx_hex = txToHex ( dbl_tx )
# This will raise an exception due to insufficient fee
assert_raises_json rpc ( - 26 , " insufficient fee " , self . nodes [ 0 ] . sendrawtransaction , dbl_tx_hex , True )
assert_raises_rpc_error ( - 26 , " insufficient fee " , self . nodes [ 0 ] . sendrawtransaction , dbl_tx_hex , True )
# Accepted with sufficient fee
dbl_tx = CTransaction ( )
@ -250,7 +250,7 @@ class ReplaceByFeeTest(BitcoinTestFramework):
@@ -250,7 +250,7 @@ class ReplaceByFeeTest(BitcoinTestFramework):
dbl_tx . vout = [ CTxOut ( initial_nValue - fee * n , CScript ( [ 1 ] ) ) ]
dbl_tx_hex = txToHex ( dbl_tx )
# This will raise an exception due to insufficient fee
assert_raises_json rpc ( - 26 , " insufficient fee " , self . nodes [ 0 ] . sendrawtransaction , dbl_tx_hex , True )
assert_raises_rpc_error ( - 26 , " insufficient fee " , self . nodes [ 0 ] . sendrawtransaction , dbl_tx_hex , True )
# 1 BTC fee is enough
dbl_tx = CTransaction ( )
@ -278,7 +278,7 @@ class ReplaceByFeeTest(BitcoinTestFramework):
@@ -278,7 +278,7 @@ class ReplaceByFeeTest(BitcoinTestFramework):
dbl_tx . vout = [ CTxOut ( initial_nValue - 2 * fee * n , CScript ( [ 1 ] ) ) ]
dbl_tx_hex = txToHex ( dbl_tx )
# This will raise an exception
assert_raises_json rpc ( - 26 , " too many potential replacements " , self . nodes [ 0 ] . sendrawtransaction , dbl_tx_hex , True )
assert_raises_rpc_error ( - 26 , " too many potential replacements " , self . nodes [ 0 ] . sendrawtransaction , dbl_tx_hex , True )
for tx in tree_txs :
tx . rehash ( )
@ -302,7 +302,7 @@ class ReplaceByFeeTest(BitcoinTestFramework):
@@ -302,7 +302,7 @@ class ReplaceByFeeTest(BitcoinTestFramework):
tx1b_hex = txToHex ( tx1b )
# This will raise an exception due to insufficient fee
assert_raises_json rpc ( - 26 , " insufficient fee " , self . nodes [ 0 ] . sendrawtransaction , tx1b_hex , True )
assert_raises_rpc_error ( - 26 , " insufficient fee " , self . nodes [ 0 ] . sendrawtransaction , tx1b_hex , True )
def test_spends_of_conflicting_outputs ( self ) :
""" Replacements that spend conflicting tx outputs are rejected """
@ -325,7 +325,7 @@ class ReplaceByFeeTest(BitcoinTestFramework):
@@ -325,7 +325,7 @@ class ReplaceByFeeTest(BitcoinTestFramework):
tx2_hex = txToHex ( tx2 )
# This will raise an exception
assert_raises_json rpc ( - 26 , " bad-txns-spends-conflicting-tx " , self . nodes [ 0 ] . sendrawtransaction , tx2_hex , True )
assert_raises_rpc_error ( - 26 , " bad-txns-spends-conflicting-tx " , self . nodes [ 0 ] . sendrawtransaction , tx2_hex , True )
# Spend tx1a's output to test the indirect case.
tx1b = CTransaction ( )
@ -342,7 +342,7 @@ class ReplaceByFeeTest(BitcoinTestFramework):
@@ -342,7 +342,7 @@ class ReplaceByFeeTest(BitcoinTestFramework):
tx2_hex = txToHex ( tx2 )
# This will raise an exception
assert_raises_json rpc ( - 26 , " bad-txns-spends-conflicting-tx " , self . nodes [ 0 ] . sendrawtransaction , tx2_hex , True )
assert_raises_rpc_error ( - 26 , " bad-txns-spends-conflicting-tx " , self . nodes [ 0 ] . sendrawtransaction , tx2_hex , True )
def test_new_unconfirmed_inputs ( self ) :
""" Replacements that add new unconfirmed inputs are rejected """
@ -361,7 +361,7 @@ class ReplaceByFeeTest(BitcoinTestFramework):
@@ -361,7 +361,7 @@ class ReplaceByFeeTest(BitcoinTestFramework):
tx2_hex = txToHex ( tx2 )
# This will raise an exception
assert_raises_json rpc ( - 26 , " replacement-adds-unconfirmed " , self . nodes [ 0 ] . sendrawtransaction , tx2_hex , True )
assert_raises_rpc_error ( - 26 , " replacement-adds-unconfirmed " , self . nodes [ 0 ] . sendrawtransaction , tx2_hex , True )
def test_too_many_replacements ( self ) :
""" Replacements that evict too many transactions are rejected """
@ -407,7 +407,7 @@ class ReplaceByFeeTest(BitcoinTestFramework):
@@ -407,7 +407,7 @@ class ReplaceByFeeTest(BitcoinTestFramework):
double_tx_hex = txToHex ( double_tx )
# This will raise an exception
assert_raises_json rpc ( - 26 , " too many potential replacements " , self . nodes [ 0 ] . sendrawtransaction , double_tx_hex , True )
assert_raises_rpc_error ( - 26 , " too many potential replacements " , self . nodes [ 0 ] . sendrawtransaction , double_tx_hex , True )
# If we remove an input, it should pass
double_tx = CTransaction ( )
@ -434,7 +434,7 @@ class ReplaceByFeeTest(BitcoinTestFramework):
@@ -434,7 +434,7 @@ class ReplaceByFeeTest(BitcoinTestFramework):
tx1b_hex = txToHex ( tx1b )
# This will raise an exception
assert_raises_json rpc ( - 26 , " txn-mempool-conflict " , self . nodes [ 0 ] . sendrawtransaction , tx1b_hex , True )
assert_raises_rpc_error ( - 26 , " txn-mempool-conflict " , self . nodes [ 0 ] . sendrawtransaction , tx1b_hex , True )
tx1_outpoint = make_utxo ( self . nodes [ 0 ] , int ( 1.1 * COIN ) )
@ -452,7 +452,7 @@ class ReplaceByFeeTest(BitcoinTestFramework):
@@ -452,7 +452,7 @@ class ReplaceByFeeTest(BitcoinTestFramework):
tx2b_hex = txToHex ( tx2b )
# This will raise an exception
assert_raises_json rpc ( - 26 , " txn-mempool-conflict " , self . nodes [ 0 ] . sendrawtransaction , tx2b_hex , True )
assert_raises_rpc_error ( - 26 , " txn-mempool-conflict " , self . nodes [ 0 ] . sendrawtransaction , tx2b_hex , True )
# Now create a new transaction that spends from tx1a and tx2a
# opt-in on one of the inputs
@ -504,7 +504,7 @@ class ReplaceByFeeTest(BitcoinTestFramework):
@@ -504,7 +504,7 @@ class ReplaceByFeeTest(BitcoinTestFramework):
tx1b_hex = txToHex ( tx1b )
# Verify tx1b cannot replace tx1a.
assert_raises_json rpc ( - 26 , " insufficient fee " , self . nodes [ 0 ] . sendrawtransaction , tx1b_hex , True )
assert_raises_rpc_error ( - 26 , " insufficient fee " , self . nodes [ 0 ] . sendrawtransaction , tx1b_hex , True )
# Use prioritisetransaction to set tx1a's fee to 0.
self . nodes [ 0 ] . prioritisetransaction ( txid = tx1a_txid , fee_delta = int ( - 0.1 * COIN ) )
@ -531,7 +531,7 @@ class ReplaceByFeeTest(BitcoinTestFramework):
@@ -531,7 +531,7 @@ class ReplaceByFeeTest(BitcoinTestFramework):
tx2b_hex = txToHex ( tx2b )
# Verify tx2b cannot replace tx2a.
assert_raises_json rpc ( - 26 , " insufficient fee " , self . nodes [ 0 ] . sendrawtransaction , tx2b_hex , True )
assert_raises_rpc_error ( - 26 , " insufficient fee " , self . nodes [ 0 ] . sendrawtransaction , tx2b_hex , True )
# Now prioritise tx2b to have a higher modified fee
self . nodes [ 0 ] . prioritisetransaction ( txid = tx2b . hash , fee_delta = int ( 0.1 * COIN ) )