mirror of
https://github.com/kvazar-network/kevacoin.git
synced 2025-01-18 19:10:11 +00:00
Merge #11031: [rpc] deprecate estimatefee
048e0c3e2 [rpc] [tests] Add deprecated RPC test (Cristian Mircea Messel) d4cdbd6fb [rpc] Deprecate estimatefee RPC (John Newbery) Pull request description: Deprecates estimatefee in v0.16, for final removal in v0.17. This commit introduces a phased removal of RPC methods. RPC method is disabled by default in version x, but can be enabled by using the `-deprecatedrpc=<methodname>` argument. RPC method is removed entirely in version (x+1). This gives users fair warning that an RPC is to be removed, and time to change client software if necessary. Deprecation warnings in RPC return values or release notes are easily ignored. This is a more generic version of the approach I tried to use in #10841, which too late to make it into v0.15. Tree-SHA512: 9695a600e84b812974387333e4a6805d18972da30befb754e9e4da77cd9815d00c5cc2ee0b0350bdbbdb5fdc6ba47789f8b2c6f5b15c8cd5a1deefcc4832da30
This commit is contained in:
commit
ef8340d25f
@ -430,6 +430,7 @@ std::string HelpMessage(HelpMessageMode mode)
|
|||||||
strUsage += HelpMessageOpt("-checkmempool=<n>", strprintf("Run checks every <n> transactions (default: %u)", defaultChainParams->DefaultConsistencyChecks()));
|
strUsage += HelpMessageOpt("-checkmempool=<n>", strprintf("Run checks every <n> transactions (default: %u)", defaultChainParams->DefaultConsistencyChecks()));
|
||||||
strUsage += HelpMessageOpt("-checkpoints", strprintf("Disable expensive verification for known chain history (default: %u)", DEFAULT_CHECKPOINTS_ENABLED));
|
strUsage += HelpMessageOpt("-checkpoints", strprintf("Disable expensive verification for known chain history (default: %u)", DEFAULT_CHECKPOINTS_ENABLED));
|
||||||
strUsage += HelpMessageOpt("-disablesafemode", strprintf("Disable safemode, override a real safe mode event (default: %u)", DEFAULT_DISABLE_SAFEMODE));
|
strUsage += HelpMessageOpt("-disablesafemode", strprintf("Disable safemode, override a real safe mode event (default: %u)", DEFAULT_DISABLE_SAFEMODE));
|
||||||
|
strUsage += HelpMessageOpt("-deprecatedrpc=<method>", "Allows deprecated RPC method(s) to be used");
|
||||||
strUsage += HelpMessageOpt("-testsafemode", strprintf("Force safe mode (default: %u)", DEFAULT_TESTSAFEMODE));
|
strUsage += HelpMessageOpt("-testsafemode", strprintf("Force safe mode (default: %u)", DEFAULT_TESTSAFEMODE));
|
||||||
strUsage += HelpMessageOpt("-dropmessagestest=<n>", "Randomly drop 1 of every <n> network messages");
|
strUsage += HelpMessageOpt("-dropmessagestest=<n>", "Randomly drop 1 of every <n> network messages");
|
||||||
strUsage += HelpMessageOpt("-fuzzmessagestest=<n>", "Randomly fuzz 1 of every <n> network messages");
|
strUsage += HelpMessageOpt("-fuzzmessagestest=<n>", "Randomly fuzz 1 of every <n> network messages");
|
||||||
|
@ -789,6 +789,12 @@ UniValue estimatefee(const JSONRPCRequest& request)
|
|||||||
+ HelpExampleCli("estimatefee", "6")
|
+ HelpExampleCli("estimatefee", "6")
|
||||||
);
|
);
|
||||||
|
|
||||||
|
if (!IsDeprecatedRPCEnabled("estimatefee")) {
|
||||||
|
throw JSONRPCError(RPC_METHOD_DEPRECATED, "estimatefee is deprecated and will be fully removed in v0.17. "
|
||||||
|
"To use estimatefee in v0.16, restart bitcoind with -deprecatedrpc=estimatefee.\n"
|
||||||
|
"Projects should transition to using estimatesmartfee before upgrading to v0.17");
|
||||||
|
}
|
||||||
|
|
||||||
RPCTypeCheck(request.params, {UniValue::VNUM});
|
RPCTypeCheck(request.params, {UniValue::VNUM});
|
||||||
|
|
||||||
int nBlocks = request.params[0].get_int();
|
int nBlocks = request.params[0].get_int();
|
||||||
|
@ -57,6 +57,7 @@ enum RPCErrorCode
|
|||||||
RPC_VERIFY_REJECTED = -26, //!< Transaction or block was rejected by network rules
|
RPC_VERIFY_REJECTED = -26, //!< Transaction or block was rejected by network rules
|
||||||
RPC_VERIFY_ALREADY_IN_CHAIN = -27, //!< Transaction already in chain
|
RPC_VERIFY_ALREADY_IN_CHAIN = -27, //!< Transaction already in chain
|
||||||
RPC_IN_WARMUP = -28, //!< Client still warming up
|
RPC_IN_WARMUP = -28, //!< Client still warming up
|
||||||
|
RPC_METHOD_DEPRECATED = -32, //!< RPC method is deprecated
|
||||||
|
|
||||||
//! Aliases for backward compatibility
|
//! Aliases for backward compatibility
|
||||||
RPC_TRANSACTION_ERROR = RPC_VERIFY_ERROR,
|
RPC_TRANSACTION_ERROR = RPC_VERIFY_ERROR,
|
||||||
|
@ -382,6 +382,13 @@ void JSONRPCRequest::parse(const UniValue& valRequest)
|
|||||||
throw JSONRPCError(RPC_INVALID_REQUEST, "Params must be an array or object");
|
throw JSONRPCError(RPC_INVALID_REQUEST, "Params must be an array or object");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool IsDeprecatedRPCEnabled(const std::string& method)
|
||||||
|
{
|
||||||
|
const std::vector<std::string> enabled_methods = gArgs.GetArgs("-deprecatedrpc");
|
||||||
|
|
||||||
|
return find(enabled_methods.begin(), enabled_methods.end(), method) != enabled_methods.end();
|
||||||
|
}
|
||||||
|
|
||||||
static UniValue JSONRPCExecOne(const UniValue& req)
|
static UniValue JSONRPCExecOne(const UniValue& req)
|
||||||
{
|
{
|
||||||
UniValue rpc_result(UniValue::VOBJ);
|
UniValue rpc_result(UniValue::VOBJ);
|
||||||
|
@ -171,6 +171,8 @@ public:
|
|||||||
bool appendCommand(const std::string& name, const CRPCCommand* pcmd);
|
bool appendCommand(const std::string& name, const CRPCCommand* pcmd);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
bool IsDeprecatedRPCEnabled(const std::string& method);
|
||||||
|
|
||||||
extern CRPCTable tableRPC;
|
extern CRPCTable tableRPC;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
23
test/functional/deprecated_rpc.py
Executable file
23
test/functional/deprecated_rpc.py
Executable file
@ -0,0 +1,23 @@
|
|||||||
|
#!/usr/bin/env python3
|
||||||
|
# Copyright (c) 2017 The Bitcoin Core developers
|
||||||
|
# Distributed under the MIT software license, see the accompanying
|
||||||
|
# file COPYING or http://www.opensource.org/licenses/mit-license.php.
|
||||||
|
"""Test deprecation of RPC calls."""
|
||||||
|
from test_framework.test_framework import BitcoinTestFramework
|
||||||
|
from test_framework.util import assert_raises_jsonrpc
|
||||||
|
|
||||||
|
class DeprecatedRpcTest(BitcoinTestFramework):
|
||||||
|
def set_test_params(self):
|
||||||
|
self.num_nodes = 2
|
||||||
|
self.setup_clean_chain = True
|
||||||
|
self.extra_args = [[], ["-deprecatedrpc=estimatefee"]]
|
||||||
|
|
||||||
|
def run_test(self):
|
||||||
|
self.log.info("estimatefee: Shows deprecated message")
|
||||||
|
assert_raises_jsonrpc(-32, 'estimatefee is deprecated', self.nodes[0].estimatefee, 1)
|
||||||
|
|
||||||
|
self.log.info("Using -deprecatedrpc=estimatefee bypasses the error")
|
||||||
|
self.nodes[1].estimatefee(1)
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
DeprecatedRpcTest().main()
|
@ -151,7 +151,7 @@ class EstimateFeeTest(BitcoinTestFramework):
|
|||||||
which we will use to generate our transactions.
|
which we will use to generate our transactions.
|
||||||
"""
|
"""
|
||||||
self.add_nodes(3, extra_args=[["-maxorphantx=1000", "-whitelist=127.0.0.1"],
|
self.add_nodes(3, extra_args=[["-maxorphantx=1000", "-whitelist=127.0.0.1"],
|
||||||
["-blockmaxsize=17000", "-maxorphantx=1000"],
|
["-blockmaxsize=17000", "-maxorphantx=1000", "-deprecatedrpc=estimatefee"],
|
||||||
["-blockmaxsize=8000", "-maxorphantx=1000"]])
|
["-blockmaxsize=8000", "-maxorphantx=1000"]])
|
||||||
# Use node0 to mine blocks for input splitting
|
# Use node0 to mine blocks for input splitting
|
||||||
# Node1 mines small blocks but that are bigger than the expected transaction rate.
|
# Node1 mines small blocks but that are bigger than the expected transaction rate.
|
||||||
|
@ -98,6 +98,7 @@ BASE_SCRIPTS= [
|
|||||||
'disconnect_ban.py',
|
'disconnect_ban.py',
|
||||||
'decodescript.py',
|
'decodescript.py',
|
||||||
'blockchain.py',
|
'blockchain.py',
|
||||||
|
'deprecated_rpc.py',
|
||||||
'disablewallet.py',
|
'disablewallet.py',
|
||||||
'net.py',
|
'net.py',
|
||||||
'keypool.py',
|
'keypool.py',
|
||||||
|
Loading…
x
Reference in New Issue
Block a user