wallet, rpc: deprecate settxfee and paytxfee
This commit is contained in:
11 files changed
+32
-8
No files matched your search
+1
-1
@@ -66,7 +66,7 @@ void WalletInit::AddWalletOptions(ArgsManager& argsman) const
|
|||||||
CURRENCY_UNIT, FormatMoney(DEFAULT_TRANSACTION_MAXFEE)), ArgsManager::ALLOW_ANY, OptionsCategory::DEBUG_TEST);
|
CURRENCY_UNIT, FormatMoney(DEFAULT_TRANSACTION_MAXFEE)), ArgsManager::ALLOW_ANY, OptionsCategory::DEBUG_TEST);
|
||||||
argsman.AddArg("-mintxfee=<amt>", strprintf("Fee rates (in %s/kvB) smaller than this are considered zero fee for transaction creation (default: %s)",
|
argsman.AddArg("-mintxfee=<amt>", strprintf("Fee rates (in %s/kvB) smaller than this are considered zero fee for transaction creation (default: %s)",
|
||||||
CURRENCY_UNIT, FormatMoney(DEFAULT_TRANSACTION_MINFEE)), ArgsManager::ALLOW_ANY, OptionsCategory::WALLET);
|
CURRENCY_UNIT, FormatMoney(DEFAULT_TRANSACTION_MINFEE)), ArgsManager::ALLOW_ANY, OptionsCategory::WALLET);
|
||||||
argsman.AddArg("-paytxfee=<amt>", strprintf("Fee rate (in %s/kvB) to add to transactions you send (default: %s)",
|
argsman.AddArg("-paytxfee=<amt>", strprintf("(DEPRECATED) Fee rate (in %s/kvB) to add to transactions you send (default: %s)",
|
||||||
CURRENCY_UNIT, FormatMoney(CFeeRate{DEFAULT_PAY_TX_FEE}.GetFeePerK())), ArgsManager::ALLOW_ANY, OptionsCategory::WALLET);
|
CURRENCY_UNIT, FormatMoney(CFeeRate{DEFAULT_PAY_TX_FEE}.GetFeePerK())), ArgsManager::ALLOW_ANY, OptionsCategory::WALLET);
|
||||||
#ifdef ENABLE_EXTERNAL_SIGNER
|
#ifdef ENABLE_EXTERNAL_SIGNER
|
||||||
argsman.AddArg("-signer=<cmd>", "External signing tool, see doc/external-signer.md", ArgsManager::ALLOW_ANY, OptionsCategory::WALLET);
|
argsman.AddArg("-signer=<cmd>", "External signing tool, see doc/external-signer.md", ArgsManager::ALLOW_ANY, OptionsCategory::WALLET);
|
||||||
|
|||||||
@@ -418,7 +418,7 @@ RPCHelpMan sendmany()
|
|||||||
RPCHelpMan settxfee()
|
RPCHelpMan settxfee()
|
||||||
{
|
{
|
||||||
return RPCHelpMan{"settxfee",
|
return RPCHelpMan{"settxfee",
|
||||||
"\nSet the transaction fee rate in " + CURRENCY_UNIT + "/kvB for this wallet. Overrides the global -paytxfee command line parameter.\n"
|
"\n(DEPRECATED) Set the transaction fee rate in " + CURRENCY_UNIT + "/kvB for this wallet. Overrides the global -paytxfee command line parameter.\n"
|
||||||
"Can be deactivated by passing 0 as the fee. In that case automatic fee selection will be used by default.\n",
|
"Can be deactivated by passing 0 as the fee. In that case automatic fee selection will be used by default.\n",
|
||||||
{
|
{
|
||||||
{"amount", RPCArg::Type::AMOUNT, RPCArg::Optional::NO, "The transaction fee rate in " + CURRENCY_UNIT + "/kvB"},
|
{"amount", RPCArg::Type::AMOUNT, RPCArg::Optional::NO, "The transaction fee rate in " + CURRENCY_UNIT + "/kvB"},
|
||||||
@@ -437,6 +437,11 @@ RPCHelpMan settxfee()
|
|||||||
|
|
||||||
LOCK(pwallet->cs_wallet);
|
LOCK(pwallet->cs_wallet);
|
||||||
|
|
||||||
|
if (!pwallet->chain().rpcEnableDeprecated("settxfee")) {
|
||||||
|
throw JSONRPCError(RPC_METHOD_DEPRECATED, "settxfee is deprecated and will be fully removed in v31.0."
|
||||||
|
"\nTo use settxfee restart bitcoind with -deprecatedrpc=settxfee.");
|
||||||
|
}
|
||||||
|
|
||||||
CAmount nAmount = AmountFromValue(request.params[0]);
|
CAmount nAmount = AmountFromValue(request.params[0]);
|
||||||
CFeeRate tx_fee_rate(nAmount, 1000);
|
CFeeRate tx_fee_rate(nAmount, 1000);
|
||||||
CFeeRate max_tx_fee_rate(pwallet->m_default_max_tx_fee, 1000);
|
CFeeRate max_tx_fee_rate(pwallet->m_default_max_tx_fee, 1000);
|
||||||
|
|||||||
@@ -3181,6 +3181,8 @@ std::shared_ptr<CWallet> CWallet::Create(WalletContext& context, const std::stri
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (args.IsArgSet("-paytxfee")) {
|
if (args.IsArgSet("-paytxfee")) {
|
||||||
|
warnings.push_back(_("-paytxfee is deprecated and will be fully removed in v31.0."));
|
||||||
|
|
||||||
std::optional<CAmount> pay_tx_fee = ParseMoney(args.GetArg("-paytxfee", ""));
|
std::optional<CAmount> pay_tx_fee = ParseMoney(args.GetArg("-paytxfee", ""));
|
||||||
if (!pay_tx_fee) {
|
if (!pay_tx_fee) {
|
||||||
error = AmountErrMsg("paytxfee", args.GetArg("-paytxfee", ""));
|
error = AmountErrMsg("paytxfee", args.GetArg("-paytxfee", ""));
|
||||||
|
|||||||
@@ -4,13 +4,21 @@
|
|||||||
# file COPYING or http://www.opensource.org/licenses/mit-license.php.
|
# file COPYING or http://www.opensource.org/licenses/mit-license.php.
|
||||||
"""Test deprecation of RPC calls."""
|
"""Test deprecation of RPC calls."""
|
||||||
from test_framework.test_framework import BitcoinTestFramework
|
from test_framework.test_framework import BitcoinTestFramework
|
||||||
|
from test_framework.util import assert_raises_rpc_error
|
||||||
|
|
||||||
class DeprecatedRpcTest(BitcoinTestFramework):
|
class DeprecatedRpcTest(BitcoinTestFramework):
|
||||||
|
def add_options(self, parser):
|
||||||
|
self.add_wallet_options(parser)
|
||||||
|
|
||||||
def set_test_params(self):
|
def set_test_params(self):
|
||||||
self.num_nodes = 1
|
self.num_nodes = 1
|
||||||
self.setup_clean_chain = True
|
self.setup_clean_chain = True
|
||||||
self.extra_args = [[]]
|
self.extra_args = [[]]
|
||||||
|
|
||||||
|
|
||||||
|
def skip_test_if_missing_module(self):
|
||||||
|
self.skip_if_no_wallet()
|
||||||
|
|
||||||
def run_test(self):
|
def run_test(self):
|
||||||
# This test should be used to verify the errors of the currently
|
# This test should be used to verify the errors of the currently
|
||||||
# deprecated RPC methods (without the -deprecatedrpc flag) until
|
# deprecated RPC methods (without the -deprecatedrpc flag) until
|
||||||
@@ -23,7 +31,8 @@ class DeprecatedRpcTest(BitcoinTestFramework):
|
|||||||
# at least one other functional test that still tests the RPCs
|
# at least one other functional test that still tests the RPCs
|
||||||
# functionality using the respective -deprecatedrpc flag.
|
# functionality using the respective -deprecatedrpc flag.
|
||||||
|
|
||||||
self.log.info("Currently no tests for deprecated RPC methods")
|
self.log.info("Test settxfee RPC")
|
||||||
|
assert_raises_rpc_error(-32, 'settxfee is deprecated and will be fully removed in v31.0.', self.nodes[0].rpc.settxfee, 0.01)
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
DeprecatedRpcTest(__file__).main()
|
DeprecatedRpcTest(__file__).main()
|
||||||
@@ -598,9 +598,9 @@ class BitcoinTestFramework(metaclass=BitcoinTestMetaClass):
|
|||||||
# Wait for nodes to stop
|
# Wait for nodes to stop
|
||||||
node.wait_until_stopped()
|
node.wait_until_stopped()
|
||||||
|
|
||||||
def restart_node(self, i, extra_args=None, clear_addrman=False):
|
def restart_node(self, i, extra_args=None, clear_addrman=False, *, expected_stderr=''):
|
||||||
"""Stop and start a test node"""
|
"""Stop and start a test node"""
|
||||||
self.stop_node(i)
|
self.stop_node(i, expected_stderr=expected_stderr)
|
||||||
if clear_addrman:
|
if clear_addrman:
|
||||||
peers_dat = self.nodes[i].chain_path / "peers.dat"
|
peers_dat = self.nodes[i].chain_path / "peers.dat"
|
||||||
os.remove(peers_dat)
|
os.remove(peers_dat)
|
||||||
|
|||||||
@@ -35,7 +35,7 @@ class WalletTest(BitcoinTestFramework):
|
|||||||
# whitelist peers to speed up tx relay / mempool sync
|
# whitelist peers to speed up tx relay / mempool sync
|
||||||
self.noban_tx_relay = True
|
self.noban_tx_relay = True
|
||||||
self.extra_args = [[
|
self.extra_args = [[
|
||||||
"-dustrelayfee=0", "-walletrejectlongchains=0"
|
"-dustrelayfee=0", "-walletrejectlongchains=0", "-deprecatedrpc=settxfee"
|
||||||
]] * self.num_nodes
|
]] * self.num_nodes
|
||||||
self.setup_clean_chain = True
|
self.setup_clean_chain = True
|
||||||
self.supports_cli = False
|
self.supports_cli = False
|
||||||
|
|||||||
@@ -61,6 +61,7 @@ class BumpFeeTest(BitcoinTestFramework):
|
|||||||
"-walletrbf={}".format(i),
|
"-walletrbf={}".format(i),
|
||||||
"-mintxfee=0.00002",
|
"-mintxfee=0.00002",
|
||||||
"-addresstype=bech32",
|
"-addresstype=bech32",
|
||||||
|
"-deprecatedrpc=settxfee"
|
||||||
] for i in range(self.num_nodes)]
|
] for i in range(self.num_nodes)]
|
||||||
|
|
||||||
def skip_test_if_missing_module(self):
|
def skip_test_if_missing_module(self):
|
||||||
|
|||||||
@@ -23,6 +23,7 @@ class CreateTxWalletTest(BitcoinTestFramework):
|
|||||||
def set_test_params(self):
|
def set_test_params(self):
|
||||||
self.setup_clean_chain = True
|
self.setup_clean_chain = True
|
||||||
self.num_nodes = 1
|
self.num_nodes = 1
|
||||||
|
self.extra_args = [["-deprecatedrpc=settxfee"]]
|
||||||
|
|
||||||
def skip_test_if_missing_module(self):
|
def skip_test_if_missing_module(self):
|
||||||
self.skip_if_no_wallet()
|
self.skip_if_no_wallet()
|
||||||
@@ -71,7 +72,7 @@ class CreateTxWalletTest(BitcoinTestFramework):
|
|||||||
)
|
)
|
||||||
|
|
||||||
self.log.info('Check maxtxfee in combination with settxfee')
|
self.log.info('Check maxtxfee in combination with settxfee')
|
||||||
self.restart_node(0)
|
self.restart_node(0, expected_stderr='Warning: -paytxfee is deprecated and will be fully removed in v31.0.')
|
||||||
self.nodes[0].settxfee(0.01)
|
self.nodes[0].settxfee(0.01)
|
||||||
assert_raises_rpc_error(
|
assert_raises_rpc_error(
|
||||||
-6,
|
-6,
|
||||||
|
|||||||
@@ -44,6 +44,9 @@ class RawTransactionsTest(BitcoinTestFramework):
|
|||||||
|
|
||||||
def set_test_params(self):
|
def set_test_params(self):
|
||||||
self.num_nodes = 4
|
self.num_nodes = 4
|
||||||
|
self.extra_args = [[
|
||||||
|
"-deprecatedrpc=settxfee"
|
||||||
|
] for i in range(self.num_nodes)]
|
||||||
self.setup_clean_chain = True
|
self.setup_clean_chain = True
|
||||||
# whitelist peers to speed up tx relay / mempool sync
|
# whitelist peers to speed up tx relay / mempool sync
|
||||||
self.noban_tx_relay = True
|
self.noban_tx_relay = True
|
||||||
|
|||||||
@@ -46,7 +46,7 @@ class MultiWalletTest(BitcoinTestFramework):
|
|||||||
self.setup_clean_chain = True
|
self.setup_clean_chain = True
|
||||||
self.num_nodes = 2
|
self.num_nodes = 2
|
||||||
self.rpc_timeout = 120
|
self.rpc_timeout = 120
|
||||||
self.extra_args = [["-nowallet"], []]
|
self.extra_args = [["-nowallet", "-deprecatedrpc=settxfee"], []]
|
||||||
|
|
||||||
def skip_test_if_missing_module(self):
|
def skip_test_if_missing_module(self):
|
||||||
self.skip_if_no_wallet()
|
self.skip_if_no_wallet()
|
||||||
|
|||||||
@@ -18,6 +18,9 @@ class TxnMallTest(BitcoinTestFramework):
|
|||||||
def set_test_params(self):
|
def set_test_params(self):
|
||||||
self.num_nodes = 3
|
self.num_nodes = 3
|
||||||
self.supports_cli = False
|
self.supports_cli = False
|
||||||
|
self.extra_args = [[
|
||||||
|
"-deprecatedrpc=settxfee"
|
||||||
|
] for i in range(self.num_nodes)]
|
||||||
|
|
||||||
def skip_test_if_missing_module(self):
|
def skip_test_if_missing_module(self):
|
||||||
self.skip_if_no_wallet()
|
self.skip_if_no_wallet()
|
||||||
|
|||||||
Reference in new issue
Block a user