[rpc] Deprecate estimatefee RPC
Deprecate 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=<method>` argument. RPC method is removed entirely in version (x+1).
This commit is contained in:
parent
86700d3d05
commit
d4cdbd6fb6
6 changed files with 18 additions and 1 deletions
|
@ -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;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -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.
|
||||||
|
|
Loading…
Reference in a new issue