@ -42,7 +42,11 @@ class RawTransactionsTest(BitcoinTestFramework):
def set_test_params ( self ) :
def set_test_params ( self ) :
self . setup_clean_chain = True
self . setup_clean_chain = True
self . num_nodes = 3
self . num_nodes = 3
self . extra_args = [ [ " -addresstype=legacy " , " -txindex " ] , [ " -addresstype=legacy " , " -txindex " ] , [ " -addresstype=legacy " , " -txindex " ] ]
self . extra_args = [
[ " -txindex " ] ,
[ " -txindex " ] ,
[ " -txindex " ] ,
]
def skip_test_if_missing_module ( self ) :
def skip_test_if_missing_module ( self ) :
self . skip_if_no_wallet ( )
self . skip_if_no_wallet ( )
@ -361,30 +365,30 @@ class RawTransactionsTest(BitcoinTestFramework):
# getrawtransaction tests
# getrawtransaction tests
# 1. valid parameters - only supply txid
# 1. valid parameters - only supply txid
tx Hash = rawTx [ " hash " ]
tx Id = rawTx [ " txid " ]
assert_equal ( self . nodes [ 0 ] . getrawtransaction ( tx Hash ) , rawTxSigned [ ' hex ' ] )
assert_equal ( self . nodes [ 0 ] . getrawtransaction ( tx Id ) , rawTxSigned [ ' hex ' ] )
# 2. valid parameters - supply txid and 0 for non-verbose
# 2. valid parameters - supply txid and 0 for non-verbose
assert_equal ( self . nodes [ 0 ] . getrawtransaction ( tx Hash , 0 ) , rawTxSigned [ ' hex ' ] )
assert_equal ( self . nodes [ 0 ] . getrawtransaction ( tx Id , 0 ) , rawTxSigned [ ' hex ' ] )
# 3. valid parameters - supply txid and False for non-verbose
# 3. valid parameters - supply txid and False for non-verbose
assert_equal ( self . nodes [ 0 ] . getrawtransaction ( tx Hash , False ) , rawTxSigned [ ' hex ' ] )
assert_equal ( self . nodes [ 0 ] . getrawtransaction ( tx Id , False ) , rawTxSigned [ ' hex ' ] )
# 4. valid parameters - supply txid and 1 for verbose.
# 4. valid parameters - supply txid and 1 for verbose.
# We only check the "hex" field of the output so we don't need to update this test every time the output format changes.
# We only check the "hex" field of the output so we don't need to update this test every time the output format changes.
assert_equal ( self . nodes [ 0 ] . getrawtransaction ( tx Hash , 1 ) [ " hex " ] , rawTxSigned [ ' hex ' ] )
assert_equal ( self . nodes [ 0 ] . getrawtransaction ( tx Id , 1 ) [ " hex " ] , rawTxSigned [ ' hex ' ] )
# 5. valid parameters - supply txid and True for non-verbose
# 5. valid parameters - supply txid and True for non-verbose
assert_equal ( self . nodes [ 0 ] . getrawtransaction ( tx Hash , True ) [ " hex " ] , rawTxSigned [ ' hex ' ] )
assert_equal ( self . nodes [ 0 ] . getrawtransaction ( tx Id , True ) [ " hex " ] , rawTxSigned [ ' hex ' ] )
# 6. invalid parameters - supply txid and string "Flase"
# 6. invalid parameters - supply txid and string "Flase"
assert_raises_rpc_error ( - 1 , " not a boolean " , self . nodes [ 0 ] . getrawtransaction , tx Hash , " Flase " )
assert_raises_rpc_error ( - 1 , " not a boolean " , self . nodes [ 0 ] . getrawtransaction , tx Id , " Flase " )
# 7. invalid parameters - supply txid and empty array
# 7. invalid parameters - supply txid and empty array
assert_raises_rpc_error ( - 1 , " not a boolean " , self . nodes [ 0 ] . getrawtransaction , tx Hash , [ ] )
assert_raises_rpc_error ( - 1 , " not a boolean " , self . nodes [ 0 ] . getrawtransaction , tx Id , [ ] )
# 8. invalid parameters - supply txid and empty dict
# 8. invalid parameters - supply txid and empty dict
assert_raises_rpc_error ( - 1 , " not a boolean " , self . nodes [ 0 ] . getrawtransaction , tx Hash , { } )
assert_raises_rpc_error ( - 1 , " not a boolean " , self . nodes [ 0 ] . getrawtransaction , tx Id , { } )
inputs = [ { ' txid ' : " 1d1d4e24ed99057e84c3f80fd8fbec79ed9e1acee37da269356ecea000000000 " , ' vout ' : 1 , ' sequence ' : 1000 } ]
inputs = [ { ' txid ' : " 1d1d4e24ed99057e84c3f80fd8fbec79ed9e1acee37da269356ecea000000000 " , ' vout ' : 1 , ' sequence ' : 1000 } ]
outputs = { self . nodes [ 0 ] . getnewaddress ( ) : 1 }
outputs = { self . nodes [ 0 ] . getnewaddress ( ) : 1 }
@ -438,7 +442,7 @@ class RawTransactionsTest(BitcoinTestFramework):
rawTx = self . nodes [ 2 ] . createrawtransaction ( inputs , outputs )
rawTx = self . nodes [ 2 ] . createrawtransaction ( inputs , outputs )
rawTxSigned = self . nodes [ 2 ] . signrawtransactionwithwallet ( rawTx )
rawTxSigned = self . nodes [ 2 ] . signrawtransactionwithwallet ( rawTx )
assert_equal ( rawTxSigned [ ' complete ' ] , True )
assert_equal ( rawTxSigned [ ' complete ' ] , True )
# 1000 sat fee, ~ 200 b transaction, fee rate should land around 5 sat/b = 0.00005 000 BTC/kB
# 1000 sat fee, ~ 100 b transaction, fee rate should land around 10 sat/b = 0.00010 000 BTC/kB
# Thus, testmempoolaccept should reject
# Thus, testmempoolaccept should reject
testres = self . nodes [ 2 ] . testmempoolaccept ( [ rawTxSigned [ ' hex ' ] ] , 0.00001000 ) [ 0 ]
testres = self . nodes [ 2 ] . testmempoolaccept ( [ rawTxSigned [ ' hex ' ] ] , 0.00001000 ) [ 0 ]
assert_equal ( testres [ ' allowed ' ] , False )
assert_equal ( testres [ ' allowed ' ] , False )
@ -446,9 +450,9 @@ class RawTransactionsTest(BitcoinTestFramework):
# and sendrawtransaction should throw
# and sendrawtransaction should throw
assert_raises_rpc_error ( - 26 , " absurdly-high-fee " , self . nodes [ 2 ] . sendrawtransaction , rawTxSigned [ ' hex ' ] , 0.00001000 )
assert_raises_rpc_error ( - 26 , " absurdly-high-fee " , self . nodes [ 2 ] . sendrawtransaction , rawTxSigned [ ' hex ' ] , 0.00001000 )
# And below calls should both succeed
# And below calls should both succeed
testres = self . nodes [ 2 ] . testmempoolaccept ( rawtxs = [ rawTxSigned [ ' hex ' ] ] , maxfeerate = ' 0.000 0 7000' ) [ 0 ]
testres = self . nodes [ 2 ] . testmempoolaccept ( rawtxs = [ rawTxSigned [ ' hex ' ] ] , maxfeerate = ' 0.000 70 000' ) [ 0 ]
assert_equal ( testres [ ' allowed ' ] , True )
assert_equal ( testres [ ' allowed ' ] , True )
self . nodes [ 2 ] . sendrawtransaction ( hexstring = rawTxSigned [ ' hex ' ] , maxfeerate = ' 0.000 0 7000' )
self . nodes [ 2 ] . sendrawtransaction ( hexstring = rawTxSigned [ ' hex ' ] , maxfeerate = ' 0.000 70 000' )
if __name__ == ' __main__ ' :
if __name__ == ' __main__ ' :