Changeset View
Changeset View
Standalone View
Standalone View
src/rpc/mining.cpp
Show First 20 Lines • Show All 963 Lines • ▼ Show 20 Lines | static UniValue estimatesmartfee(const Config &config, | ||||
result.push_back(Pair("feerate", | result.push_back(Pair("feerate", | ||||
feeRate == CFeeRate(Amount(0)) | feeRate == CFeeRate(Amount(0)) | ||||
? -1.0 | ? -1.0 | ||||
: ValueFromAmount(feeRate.GetFeePerK()))); | : ValueFromAmount(feeRate.GetFeePerK()))); | ||||
result.push_back(Pair("blocks", answerFound)); | result.push_back(Pair("blocks", answerFound)); | ||||
return result; | return result; | ||||
} | } | ||||
static UniValue estimatesmartpriority(const Config &config, | |||||
const JSONRPCRequest &request) { | |||||
if (request.fHelp || request.params.size() != 1) { | |||||
throw std::runtime_error( | |||||
"estimatesmartpriority nblocks\n" | |||||
"\nDEPRECATED. WARNING: This interface is unstable and may " | |||||
"disappear or change!\n" | |||||
"\nEstimates the approximate priority a zero-fee transaction needs " | |||||
"to begin\n" | |||||
"confirmation within nblocks blocks if possible and return the " | |||||
"number of blocks\n" | |||||
"for which the estimate is valid.\n" | |||||
"\nArguments:\n" | |||||
"1. nblocks (numeric, required)\n" | |||||
"\nResult:\n" | |||||
"{\n" | |||||
" \"priority\" : x.x, (numeric) estimated priority\n" | |||||
" \"blocks\" : n (numeric) block number where estimate " | |||||
"was found\n" | |||||
"}\n" | |||||
"\n" | |||||
"A negative value is returned if not enough transactions and " | |||||
"blocks\n" | |||||
"have been observed to make an estimate for any number of blocks.\n" | |||||
"However if the mempool reject fee is set it will return 1e9 * " | |||||
"MAX_MONEY.\n" | |||||
"\nExample:\n" + | |||||
HelpExampleCli("estimatesmartpriority", "6")); | |||||
} | |||||
RPCTypeCheck(request.params, {UniValue::VNUM}); | |||||
int nBlocks = request.params[0].get_int(); | |||||
UniValue result(UniValue::VOBJ); | |||||
int answerFound; | |||||
double priority = mempool.estimateSmartPriority(nBlocks, &answerFound); | |||||
result.push_back(Pair("priority", priority)); | |||||
result.push_back(Pair("blocks", answerFound)); | |||||
return result; | |||||
} | |||||
// clang-format off | // clang-format off | ||||
static const CRPCCommand commands[] = { | static const CRPCCommand commands[] = { | ||||
// category name actor (function) okSafeMode | // category name actor (function) okSafeMode | ||||
// ---------- ------------------------ ---------------------- ---------- | // ---------- ------------------------ ---------------------- ---------- | ||||
{"mining", "getnetworkhashps", getnetworkhashps, true, {"nblocks", "height"}}, | {"mining", "getnetworkhashps", getnetworkhashps, true, {"nblocks", "height"}}, | ||||
{"mining", "getmininginfo", getmininginfo, true, {}}, | {"mining", "getmininginfo", getmininginfo, true, {}}, | ||||
{"mining", "prioritisetransaction", prioritisetransaction, true, {"txid", "priority_delta", "fee_delta"}}, | {"mining", "prioritisetransaction", prioritisetransaction, true, {"txid", "priority_delta", "fee_delta"}}, | ||||
{"mining", "getblocktemplate", getblocktemplate, true, {"template_request"}}, | {"mining", "getblocktemplate", getblocktemplate, true, {"template_request"}}, | ||||
{"mining", "submitblock", submitblock, true, {"hexdata", "parameters"}}, | {"mining", "submitblock", submitblock, true, {"hexdata", "parameters"}}, | ||||
{"generating", "generatetoaddress", generatetoaddress, true, {"nblocks", "address", "maxtries"}}, | {"generating", "generatetoaddress", generatetoaddress, true, {"nblocks", "address", "maxtries"}}, | ||||
{"util", "estimatefee", estimatefee, true, {"nblocks"}}, | {"util", "estimatefee", estimatefee, true, {"nblocks"}}, | ||||
{"util", "estimatesmartfee", estimatesmartfee, true, {"nblocks"}}, | {"util", "estimatesmartfee", estimatesmartfee, true, {"nblocks"}}, | ||||
{"util", "estimatesmartpriority", estimatesmartpriority, true, {"nblocks"}}, | |||||
}; | }; | ||||
// clang-format on | // clang-format on | ||||
void RegisterMiningRPCCommands(CRPCTable &t) { | void RegisterMiningRPCCommands(CRPCTable &t) { | ||||
for (unsigned int vcidx = 0; vcidx < ARRAYLEN(commands); vcidx++) | for (unsigned int vcidx = 0; vcidx < ARRAYLEN(commands); vcidx++) | ||||
t.appendCommand(commands[vcidx].name, &commands[vcidx]); | t.appendCommand(commands[vcidx].name, &commands[vcidx]); | ||||
} | } |