Move ParseConfirmTarget from rpc/mining to rpc/util

Util is a better home since it's called both by wallet and mining code.

Suggested https://github.com/bitcoin/bitcoin/pull/15288#discussion_r254449444
This commit is contained in:
Russell Yanofsky 2019-02-08 15:29:45 -05:00
parent 2945492424
commit 50e647210d
4 changed files with 15 additions and 13 deletions

View file

@ -31,16 +31,6 @@
#include <memory> #include <memory>
#include <stdint.h> #include <stdint.h>
unsigned int ParseConfirmTarget(const UniValue& value)
{
int target = value.get_int();
unsigned int max_target = ::feeEstimator.HighestTargetTracked(FeeEstimateHorizon::LONG_HALFLIFE);
if (target < 1 || (unsigned int)target > max_target) {
throw JSONRPCError(RPC_INVALID_PARAMETER, strprintf("Invalid conf_target, must be between %u - %u", 1, max_target));
}
return (unsigned int)target;
}
/** /**
* Return average network hashes per second based on the last 'lookup' blocks, * Return average network hashes per second based on the last 'lookup' blocks,
* or from the last difficulty change if 'lookup' is nonpositive. * or from the last difficulty change if 'lookup' is nonpositive.

View file

@ -12,7 +12,4 @@
/** Generate blocks (mine) */ /** Generate blocks (mine) */
UniValue generateBlocks(std::shared_ptr<CReserveScript> coinbaseScript, int nGenerate, uint64_t nMaxTries, bool keepScript); UniValue generateBlocks(std::shared_ptr<CReserveScript> coinbaseScript, int nGenerate, uint64_t nMaxTries, bool keepScript);
/** Check bounds on a command line confirm target */
unsigned int ParseConfirmTarget(const UniValue& value);
#endif #endif

View file

@ -4,10 +4,12 @@
#include <key_io.h> #include <key_io.h>
#include <keystore.h> #include <keystore.h>
#include <policy/fees.h>
#include <rpc/protocol.h> #include <rpc/protocol.h>
#include <rpc/util.h> #include <rpc/util.h>
#include <tinyformat.h> #include <tinyformat.h>
#include <util/strencodings.h> #include <util/strencodings.h>
#include <validation.h>
InitInterfaces* g_rpc_interfaces = nullptr; InitInterfaces* g_rpc_interfaces = nullptr;
@ -129,6 +131,16 @@ UniValue DescribeAddress(const CTxDestination& dest)
return boost::apply_visitor(DescribeAddressVisitor(), dest); return boost::apply_visitor(DescribeAddressVisitor(), dest);
} }
unsigned int ParseConfirmTarget(const UniValue& value)
{
int target = value.get_int();
unsigned int max_target = ::feeEstimator.HighestTargetTracked(FeeEstimateHorizon::LONG_HALFLIFE);
if (target < 1 || (unsigned int)target > max_target) {
throw JSONRPCError(RPC_INVALID_PARAMETER, strprintf("Invalid conf_target, must be between %u - %u", 1, max_target));
}
return (unsigned int)target;
}
struct Section { struct Section {
Section(const std::string& left, const std::string& right) Section(const std::string& left, const std::string& right)
: m_left{left}, m_right{right} {} : m_left{left}, m_right{right} {}

View file

@ -28,6 +28,9 @@ CScript CreateMultisigRedeemscript(const int required, const std::vector<CPubKey
UniValue DescribeAddress(const CTxDestination& dest); UniValue DescribeAddress(const CTxDestination& dest);
//! Parse a confirm target option and raise an RPC error if it is invalid.
unsigned int ParseConfirmTarget(const UniValue& value);
struct RPCArg { struct RPCArg {
enum class Type { enum class Type {
OBJ, OBJ,