diff --git a/src/rpc/rawtransaction.cpp b/src/rpc/rawtransaction.cpp --- a/src/rpc/rawtransaction.cpp +++ b/src/rpc/rawtransaction.cpp @@ -43,9 +43,9 @@ #include /** - * High fee rate for sendrawtransaction and testmempoolaccept. - * By default, transaction with a fee rate higher than this will be rejected by - * the RPCs. This can be overridden with the maxfeerate argument. + * Maximum fee rate for sendrawtransaction and testmempoolaccept. + * By default, a transaction with a fee rate higher than this will be rejected + * by the RPCs. This can be overridden with the maxfeerate argument. */ static const CFeeRate DEFAULT_MAX_RAW_TX_FEE_RATE{COIN / 10}; diff --git a/test/functional/rpc_rawtransaction.py b/test/functional/rpc_rawtransaction.py --- a/test/functional/rpc_rawtransaction.py +++ b/test/functional/rpc_rawtransaction.py @@ -540,7 +540,7 @@ self.log.info('sendrawtransaction/testmempoolaccept with maxfeerate') - # Test a transaction with small fee + # Test a transaction with a small fee. txId = self.nodes[0].sendtoaddress(self.nodes[2].getnewaddress(), 1.0) rawTx = self.nodes[0].getrawtransaction(txId, True) vout = next(o for o in rawTx['vout'] @@ -548,15 +548,15 @@ self.sync_all() inputs = [{"txid": txId, "vout": vout['n']}] - # 10000 sat fee - outputs = {self.nodes[0].getnewaddress(): Decimal("0.999990000")} + # Fee 10,000 satoshis, (1 - (10000 sat * 0.00000001 BCH/sat)) = 0.9999 + outputs = {self.nodes[0].getnewaddress(): Decimal("0.99990000")} rawTx = self.nodes[2].createrawtransaction(inputs, outputs) rawTxSigned = self.nodes[2].signrawtransactionwithwallet(rawTx) assert_equal(rawTxSigned['complete'], True) - # 10000 sat fee, ~200 b transaction, fee rate should land around 50 sat/b = 0.00050000 BCH/kB + # Fee 10,000 satoshis, ~200 b transaction, fee rate should land around 50 sat/byte = 0.00050000 BCH/kB # Thus, testmempoolaccept should reject testres = self.nodes[2].testmempoolaccept( - [rawTxSigned['hex']], 0.00001000)[0] + [rawTxSigned['hex']], 0.00050000)[0] assert_equal(testres['allowed'], False) assert_equal(testres['reject-reason'], '256: absurdly-high-fee') # and sendrawtransaction should throw @@ -565,13 +565,13 @@ self.nodes[2].sendrawtransaction, rawTxSigned['hex'], 0.00001000) - # And below calls should both succeed + # and the following calls should both succeed testres = self.nodes[2].testmempoolaccept( rawtxs=[rawTxSigned['hex']])[0] assert_equal(testres['allowed'], True) self.nodes[2].sendrawtransaction(hexstring=rawTxSigned['hex']) - # Test a transaction with large fee + # Test a transaction with a large fee. txId = self.nodes[0].sendtoaddress(self.nodes[2].getnewaddress(), 1.0) rawTx = self.nodes[0].getrawtransaction(txId, True) vout = next(o for o in rawTx['vout'] @@ -579,12 +579,13 @@ self.sync_all() inputs = [{"txid": txId, "vout": vout['n']}] - # 2000000 sat fee + # Fee 2,000,000 satoshis, (1 - (2000000 sat * 0.00000001 BCH/sat)) = + # 0.98 outputs = {self.nodes[0].getnewaddress(): Decimal("0.98000000")} rawTx = self.nodes[2].createrawtransaction(inputs, outputs) rawTxSigned = self.nodes[2].signrawtransactionwithwallet(rawTx) assert_equal(rawTxSigned['complete'], True) - # 2000000 sat fee, ~100 b transaction, fee rate should land around 20000 sat/b = 0.20000000 BCH/kB + # Fee 2,000,000 satoshis, ~100 b transaction, fee rate should land around 20,000 sat/byte = 0.20000000 BCH/kB # Thus, testmempoolaccept should reject testres = self.nodes[2].testmempoolaccept([rawTxSigned['hex']])[0] assert_equal(testres['allowed'], False) @@ -594,7 +595,7 @@ "absurdly-high-fee", self.nodes[2].sendrawtransaction, rawTxSigned['hex']) - # And below calls should both succeed + # and the following calls should both succeed testres = self.nodes[2].testmempoolaccept( rawtxs=[rawTxSigned['hex']], maxfeerate='0.20000000')[0] assert_equal(testres['allowed'], True) diff --git a/test/functional/wallet_basic.py b/test/functional/wallet_basic.py --- a/test/functional/wallet_basic.py +++ b/test/functional/wallet_basic.py @@ -178,8 +178,10 @@ self.nodes[0].signrawtransactionwithwallet(raw_tx)) # Have node 1 (miner) send the transactions - self.nodes[1].sendrawtransaction(txns_to_send[0]["hex"], 0) - self.nodes[1].sendrawtransaction(txns_to_send[1]["hex"], 0) + self.nodes[1].sendrawtransaction( + hexstring=txns_to_send[0]["hex"], maxfeerate=0) + self.nodes[1].sendrawtransaction( + hexstring=txns_to_send[1]["hex"], maxfeerate=0) # Have node1 mine a block to confirm transactions: self.nodes[1].generate(1) @@ -511,10 +513,11 @@ self.nodes[0].generate(1) node0_balance = self.nodes[0].getbalance() # Split into two chains - raw_tx = self.nodes[0].createrawtransaction([{"txid": singletxid, "vout": 0}], { - chain_addrs[0]: node0_balance / 2 - Decimal('0.01'), chain_addrs[1]: node0_balance / 2 - Decimal('0.01')}) - signedtx = self.nodes[0].signrawtransactionwithwallet(raw_tx) - singletxid = self.nodes[0].sendrawtransaction(signedtx["hex"], 0) + rawtx = self.nodes[0].createrawtransaction([{"txid": singletxid, "vout": 0}], { + chain_addrs[0]: node0_balance / 2 - Decimal('0.01'), chain_addrs[1]: node0_balance / 2 - Decimal('0.01')}) + signedtx = self.nodes[0].signrawtransactionwithwallet(rawtx) + singletxid = self.nodes[0].sendrawtransaction( + hexstring=signedtx["hex"], maxfeerate=0) self.nodes[0].generate(1) # Make a long chain of unconfirmed payments without hitting mempool limit