Changeset View
Changeset View
Standalone View
Standalone View
src/rpc/blockchain.cpp
Show First 20 Lines • Show All 223 Lines • ▼ Show 20 Lines | static UniValue waitfornewblock(const Config &config, | ||||
const JSONRPCRequest &request) { | const JSONRPCRequest &request) { | ||||
if (request.fHelp || request.params.size() > 1) { | if (request.fHelp || request.params.size() > 1) { | ||||
throw std::runtime_error( | throw std::runtime_error( | ||||
RPCHelpMan{"waitfornewblock", | RPCHelpMan{"waitfornewblock", | ||||
"\nWaits for a specific new block and returns useful " | "\nWaits for a specific new block and returns useful " | ||||
"info about it.\n" | "info about it.\n" | ||||
"\nReturns the current block on timeout or exit.\n", | "\nReturns the current block on timeout or exit.\n", | ||||
{ | { | ||||
{"timeout", RPCArg::Type::NUM, true}, | {"timeout", RPCArg::Type::NUM, /* opt */ true, | ||||
/* default_val */ "", | |||||
deadalnix: default is 0. | |||||
"Time in milliseconds to wait for a response. 0 " | |||||
"indicates no timeout."}, | |||||
}} | }} | ||||
.ToString() + | .ToString() + | ||||
"\nArguments:\n" | |||||
"1. timeout (int, optional, default=0) Time in " | |||||
"milliseconds to wait for a response. 0 indicates " | |||||
"no timeout.\n" | |||||
"\nResult:\n" | "\nResult:\n" | ||||
"{ (json object)\n" | "{ (json object)\n" | ||||
" \"hash\" : { (string) The blockhash\n" | " \"hash\" : { (string) The blockhash\n" | ||||
" \"height\" : { (int) Block height\n" | " \"height\" : { (int) Block height\n" | ||||
"}\n" | "}\n" | ||||
"\nExamples:\n" + | "\nExamples:\n" + | ||||
HelpExampleCli("waitfornewblock", "1000") + | HelpExampleCli("waitfornewblock", "1000") + | ||||
HelpExampleRpc("waitfornewblock", "1000")); | HelpExampleRpc("waitfornewblock", "1000")); | ||||
Show All 33 Lines | static UniValue waitforblock(const Config &config, | ||||
if (request.fHelp || request.params.size() < 1 || | if (request.fHelp || request.params.size() < 1 || | ||||
request.params.size() > 2) { | request.params.size() > 2) { | ||||
throw std::runtime_error( | throw std::runtime_error( | ||||
RPCHelpMan{"waitforblock", | RPCHelpMan{"waitforblock", | ||||
"\nWaits for a specific new block and returns useful " | "\nWaits for a specific new block and returns useful " | ||||
"info about it.\n" | "info about it.\n" | ||||
"\nReturns the current block on timeout or exit.\n", | "\nReturns the current block on timeout or exit.\n", | ||||
{ | { | ||||
{"blockhash", RPCArg::Type::STR_HEX, false}, | {"blockhash", RPCArg::Type::STR_HEX, /* opt */ false, | ||||
{"timeout", RPCArg::Type::NUM, true}, | /* default_val */ "", "Block hash to wait for."}, | ||||
{"timeout", RPCArg::Type::NUM, /* opt */ true, | |||||
/* default_val */ "0", | |||||
"Time in milliseconds to wait for a response. 0 " | |||||
"indicates no timeout."}, | |||||
}} | }} | ||||
.ToString() + | .ToString() + | ||||
"\nArguments:\n" | |||||
"1. \"blockhash\" (required, string) Block hash to wait for.\n" | |||||
"2. timeout (int, optional, default=0) Time in milliseconds " | |||||
"to wait for a response. 0 indicates no timeout.\n" | |||||
"\nResult:\n" | "\nResult:\n" | ||||
"{ (json object)\n" | "{ (json object)\n" | ||||
" \"hash\" : { (string) The blockhash\n" | " \"hash\" : { (string) The blockhash\n" | ||||
" \"height\" : { (int) Block height\n" | " \"height\" : { (int) Block height\n" | ||||
"}\n" | "}\n" | ||||
"\nExamples:\n" + | "\nExamples:\n" + | ||||
HelpExampleCli("waitforblock", "\"0000000000079f8ef3d2c688c244eb7a4" | HelpExampleCli("waitforblock", "\"0000000000079f8ef3d2c688c244eb7a4" | ||||
"570b24c9ed7b4a8c619eb02596f8862\", " | "570b24c9ed7b4a8c619eb02596f8862\", " | ||||
Show All 38 Lines | static UniValue waitforblockheight(const Config &config, | ||||
if (request.fHelp || request.params.size() < 1 || | if (request.fHelp || request.params.size() < 1 || | ||||
request.params.size() > 2) { | request.params.size() > 2) { | ||||
throw std::runtime_error( | throw std::runtime_error( | ||||
RPCHelpMan{"waitforblockheight", | RPCHelpMan{"waitforblockheight", | ||||
"\nWaits for (at least) block height and returns the " | "\nWaits for (at least) block height and returns the " | ||||
"height and hash\nof the current tip.\n" | "height and hash\nof the current tip.\n" | ||||
"\nReturns the current block on timeout or exit.\n", | "\nReturns the current block on timeout or exit.\n", | ||||
{ | { | ||||
{"height", RPCArg::Type::NUM, false}, | {"height", RPCArg::Type::NUM, /* opt */ false, | ||||
{"timeout", RPCArg::Type::NUM, true}, | /* default_val */ "", "Block height to wait for."}, | ||||
{"timeout", RPCArg::Type::NUM, /* opt */ true, | |||||
/* default_val */ "0", | |||||
"Time in milliseconds to wait for a response. 0 " | |||||
"indicates no timeout."}, | |||||
}} | }} | ||||
.ToString() + | .ToString() + | ||||
"\nArguments:\n" | |||||
"1. height (int, required) Block height to wait for (int)\n" | |||||
"2. timeout (int, optional, default=0) Time in milliseconds to " | |||||
"wait for a response. 0 indicates no timeout.\n" | |||||
"\nResult:\n" | "\nResult:\n" | ||||
"{ (json object)\n" | "{ (json object)\n" | ||||
" \"hash\" : { (string) The blockhash\n" | " \"hash\" : { (string) The blockhash\n" | ||||
" \"height\" : { (int) Block height\n" | " \"height\" : { (int) Block height\n" | ||||
"}\n" | "}\n" | ||||
"\nExamples:\n" + | "\nExamples:\n" + | ||||
HelpExampleCli("waitforblockheight", "\"100\", 1000") + | HelpExampleCli("waitforblockheight", "\"100\", 1000") + | ||||
HelpExampleRpc("waitforblockheight", "\"100\", 1000")); | HelpExampleRpc("waitforblockheight", "\"100\", 1000")); | ||||
▲ Show 20 Lines • Show All 192 Lines • ▼ Show 20 Lines | |||||
} | } | ||||
static UniValue getrawmempool(const Config &config, | static UniValue getrawmempool(const Config &config, | ||||
const JSONRPCRequest &request) { | const JSONRPCRequest &request) { | ||||
if (request.fHelp || request.params.size() > 1) { | if (request.fHelp || request.params.size() > 1) { | ||||
throw std::runtime_error( | throw std::runtime_error( | ||||
RPCHelpMan{"getrawmempool", | RPCHelpMan{"getrawmempool", | ||||
"\nReturns all transaction ids in memory pool as a json " | "\nReturns all transaction ids in memory pool as a json " | ||||
"array of string transaction ids.\n", | "array of string transaction ids.\n" | ||||
{ | "\nHint: use getmempoolentry to fetch a specific " | ||||
{"verbose", RPCArg::Type::BOOL, true}, | "transaction from the mempool.\n", | ||||
{ | |||||
{"verbose", RPCArg::Type::BOOL, /* opt */ true, | |||||
/* default_val */ "false", | |||||
"True for a json object, false for array of " | |||||
"transaction ids"}, | |||||
}} | }} | ||||
.ToString() + | .ToString() + | ||||
"\nHint: use getmempoolentry to fetch a specific transaction from " | |||||
"the mempool.\n" | |||||
"\nArguments:\n" | |||||
"1. verbose (boolean, optional, default=false) True for a json " | |||||
"object, false for array of transaction ids\n" | |||||
"\nResult: (for verbose = false):\n" | "\nResult: (for verbose = false):\n" | ||||
"[ (json array of string)\n" | "[ (json array of string)\n" | ||||
" \"transactionid\" (string) The transaction id\n" | " \"transactionid\" (string) The transaction id\n" | ||||
" ,...\n" | " ,...\n" | ||||
"]\n" | "]\n" | ||||
"\nResult: (for verbose = true):\n" | "\nResult: (for verbose = true):\n" | ||||
"{ (json object)\n" | "{ (json object)\n" | ||||
" \"transactionid\" : { (json object)\n" + | " \"transactionid\" : { (json object)\n" + | ||||
Show All 17 Lines | static UniValue getmempoolancestors(const Config &config, | ||||
const JSONRPCRequest &request) { | const JSONRPCRequest &request) { | ||||
if (request.fHelp || request.params.size() < 1 || | if (request.fHelp || request.params.size() < 1 || | ||||
request.params.size() > 2) { | request.params.size() > 2) { | ||||
throw std::runtime_error( | throw std::runtime_error( | ||||
RPCHelpMan{"getmempoolancestors", | RPCHelpMan{"getmempoolancestors", | ||||
"\nIf txid is in the mempool, returns all in-mempool " | "\nIf txid is in the mempool, returns all in-mempool " | ||||
"ancestors.\n", | "ancestors.\n", | ||||
{ | { | ||||
{"txid", RPCArg::Type::STR_HEX, false}, | {"txid", RPCArg::Type::STR_HEX, /* opt */ false, | ||||
{"verbose", RPCArg::Type::BOOL, true}, | /* default_val */ "", | ||||
"The transaction id (must be in mempool)"}, | |||||
{"verbose", RPCArg::Type::BOOL, /* opt */ true, | |||||
/* default_val */ "false", | |||||
"True for a json object, false for array of " | |||||
"transaction ids"}, | |||||
}} | }} | ||||
.ToString() + | .ToString() + | ||||
"\nArguments:\n" | |||||
"1. \"txid\" (string, required) The transaction id " | |||||
"(must be in mempool)\n" | |||||
"2. verbose (boolean, optional, default=false) " | |||||
"True for a json object, false for array of transaction ids\n" | |||||
"\nResult (for verbose = false):\n" | "\nResult (for verbose = false):\n" | ||||
"[ (json array of strings)\n" | "[ (json array of strings)\n" | ||||
" \"transactionid\" (string) The transaction id of an " | " \"transactionid\" (string) The transaction id of an " | ||||
"in-mempool ancestor transaction\n" | "in-mempool ancestor transaction\n" | ||||
" ,...\n" | " ,...\n" | ||||
"]\n" | "]\n" | ||||
"\nResult (for verbose = true):\n" | "\nResult (for verbose = true):\n" | ||||
"{ (json object)\n" | "{ (json object)\n" | ||||
▲ Show 20 Lines • Show All 51 Lines • ▼ Show 20 Lines | static UniValue getmempooldescendants(const Config &config, | ||||
const JSONRPCRequest &request) { | const JSONRPCRequest &request) { | ||||
if (request.fHelp || request.params.size() < 1 || | if (request.fHelp || request.params.size() < 1 || | ||||
request.params.size() > 2) { | request.params.size() > 2) { | ||||
throw std::runtime_error( | throw std::runtime_error( | ||||
RPCHelpMan{"getmempooldescendants", | RPCHelpMan{"getmempooldescendants", | ||||
"\nIf txid is in the mempool, returns all in-mempool " | "\nIf txid is in the mempool, returns all in-mempool " | ||||
"descendants.\n", | "descendants.\n", | ||||
{ | { | ||||
{"txid", RPCArg::Type::STR_HEX, false}, | {"txid", RPCArg::Type::STR_HEX, /* opt */ false, | ||||
{"verbose", RPCArg::Type::BOOL, true}, | /* default_val */ "", | ||||
"The transaction id (must be in mempool)"}, | |||||
{"verbose", RPCArg::Type::BOOL, /* opt */ true, | |||||
/* default_val */ "false", | |||||
"True for a json object, false for array of " | |||||
"transaction ids"}, | |||||
}} | }} | ||||
.ToString() + | .ToString() + | ||||
"\nArguments:\n" | |||||
"1. \"txid\" (string, required) The transaction id " | |||||
"(must be in mempool)\n" | |||||
"2. verbose (boolean, optional, default=false) " | |||||
"True for a json object, false for array of transaction ids\n" | |||||
"\nResult (for verbose = false):\n" | "\nResult (for verbose = false):\n" | ||||
"[ (json array of strings)\n" | "[ (json array of strings)\n" | ||||
" \"transactionid\" (string) The transaction id of an " | " \"transactionid\" (string) The transaction id of an " | ||||
"in-mempool descendant transaction\n" | "in-mempool descendant transaction\n" | ||||
" ,...\n" | " ,...\n" | ||||
"]\n" | "]\n" | ||||
"\nResult (for verbose = true):\n" | "\nResult (for verbose = true):\n" | ||||
"{ (json object)\n" | "{ (json object)\n" | ||||
▲ Show 20 Lines • Show All 48 Lines • ▼ Show 20 Lines | |||||
static UniValue getmempoolentry(const Config &config, | static UniValue getmempoolentry(const Config &config, | ||||
const JSONRPCRequest &request) { | const JSONRPCRequest &request) { | ||||
if (request.fHelp || request.params.size() != 1) { | if (request.fHelp || request.params.size() != 1) { | ||||
throw std::runtime_error( | throw std::runtime_error( | ||||
RPCHelpMan{"getmempoolentry", | RPCHelpMan{"getmempoolentry", | ||||
"\nReturns mempool data for given transaction\n", | "\nReturns mempool data for given transaction\n", | ||||
{ | { | ||||
{"txid", RPCArg::Type::STR_HEX, false}, | {"txid", RPCArg::Type::STR_HEX, /* opt */ false, | ||||
/* default_val */ "", | |||||
"The transaction id (must be in mempool)"}, | |||||
}} | }} | ||||
.ToString() + | .ToString() + | ||||
"\nArguments:\n" | |||||
"1. \"txid\" (string, required) " | |||||
"The transaction id (must be in mempool)\n" | |||||
"\nResult:\n" | "\nResult:\n" | ||||
"{ (json object)\n" + | "{ (json object)\n" + | ||||
EntryDescriptionString() + | EntryDescriptionString() + | ||||
"}\n" | "}\n" | ||||
"\nExamples:\n" + | "\nExamples:\n" + | ||||
HelpExampleCli("getmempoolentry", "\"mytxid\"") + | HelpExampleCli("getmempoolentry", "\"mytxid\"") + | ||||
HelpExampleRpc("getmempoolentry", "\"mytxid\"")); | HelpExampleRpc("getmempoolentry", "\"mytxid\"")); | ||||
} | } | ||||
Show All 17 Lines | |||||
static UniValue getblockhash(const Config &config, | static UniValue getblockhash(const Config &config, | ||||
const JSONRPCRequest &request) { | const JSONRPCRequest &request) { | ||||
if (request.fHelp || request.params.size() != 1) { | if (request.fHelp || request.params.size() != 1) { | ||||
throw std::runtime_error( | throw std::runtime_error( | ||||
RPCHelpMan{"getblockhash", | RPCHelpMan{"getblockhash", | ||||
"\nReturns hash of block in best-block-chain at height " | "\nReturns hash of block in best-block-chain at height " | ||||
"provided.\n", | "provided.\n", | ||||
{ | { | ||||
{"height", RPCArg::Type::NUM, false}, | {"height", RPCArg::Type::NUM, /* opt */ false, | ||||
/* default_val */ "", "The height index"}, | |||||
}} | }} | ||||
.ToString() + | .ToString() + | ||||
"\nArguments:\n" | |||||
"1. height (numeric, required) The height index\n" | |||||
"\nResult:\n" | "\nResult:\n" | ||||
"\"hash\" (string) The block hash\n" | "\"hash\" (string) The block hash\n" | ||||
"\nExamples:\n" + | "\nExamples:\n" + | ||||
HelpExampleCli("getblockhash", "1000") + | HelpExampleCli("getblockhash", "1000") + | ||||
HelpExampleRpc("getblockhash", "1000")); | HelpExampleRpc("getblockhash", "1000")); | ||||
} | } | ||||
LOCK(cs_main); | LOCK(cs_main); | ||||
int nHeight = request.params[0].get_int(); | int nHeight = request.params[0].get_int(); | ||||
if (nHeight < 0 || nHeight > ::ChainActive().Height()) { | if (nHeight < 0 || nHeight > ::ChainActive().Height()) { | ||||
throw JSONRPCError(RPC_INVALID_PARAMETER, "Block height out of range"); | throw JSONRPCError(RPC_INVALID_PARAMETER, "Block height out of range"); | ||||
} | } | ||||
CBlockIndex *pblockindex = ::ChainActive()[nHeight]; | CBlockIndex *pblockindex = ::ChainActive()[nHeight]; | ||||
return pblockindex->GetBlockHash().GetHex(); | return pblockindex->GetBlockHash().GetHex(); | ||||
} | } | ||||
static UniValue getblockheader(const Config &config, | static UniValue getblockheader(const Config &config, | ||||
const JSONRPCRequest &request) { | const JSONRPCRequest &request) { | ||||
if (request.fHelp || request.params.size() < 1 || | if (request.fHelp || request.params.size() < 1 || | ||||
request.params.size() > 2) { | request.params.size() > 2) { | ||||
throw std::runtime_error( | throw std::runtime_error( | ||||
RPCHelpMan{"getblockheader", | RPCHelpMan{ | ||||
"getblockheader", | |||||
"\nIf verbose is false, returns a string that is " | "\nIf verbose is false, returns a string that is " | ||||
"serialized, hex-encoded data for blockheader 'hash'.\n" | "serialized, hex-encoded data for blockheader 'hash'.\n" | ||||
"If verbose is true, returns an Object with information " | "If verbose is true, returns an Object with information " | ||||
"about blockheader <hash>.\n", | "about blockheader <hash>.\n", | ||||
{ | { | ||||
{"blockhash", RPCArg::Type::STR_HEX, false}, | {"blockhash", RPCArg::Type::STR_HEX, /* opt */ false, | ||||
{"verbose", RPCArg::Type::BOOL, true}, | /* default_val */ "", "The block hash"}, | ||||
{"verbose", RPCArg::Type::BOOL, /* opt */ true, | |||||
/* default_val */ "true", | |||||
"true for a json object, false for the hex-encoded data"}, | |||||
}} | }} | ||||
.ToString() + | .ToString() + | ||||
"\nArguments:\n" | |||||
"1. \"blockhash\" (string, required) The block hash\n" | |||||
"2. verbose (boolean, optional, default=true) true for a " | |||||
"json object, false for the hex-encoded data\n" | |||||
"\nResult (for verbose = true):\n" | "\nResult (for verbose = true):\n" | ||||
"{\n" | "{\n" | ||||
" \"hash\" : \"hash\", (string) the block hash (same as " | " \"hash\" : \"hash\", (string) the block hash (same as " | ||||
"provided)\n" | "provided)\n" | ||||
" \"confirmations\" : n, (numeric) The number of confirmations, " | " \"confirmations\" : n, (numeric) The number of confirmations, " | ||||
"or -1 if the block is not on the main chain\n" | "or -1 if the block is not on the main chain\n" | ||||
" \"height\" : n, (numeric) The block height or index\n" | " \"height\" : n, (numeric) The block height or index\n" | ||||
" \"version\" : n, (numeric) The block version\n" | " \"version\" : n, (numeric) The block version\n" | ||||
▲ Show 20 Lines • Show All 84 Lines • ▼ Show 20 Lines | if (request.fHelp || request.params.size() < 1 || | ||||
"getblock", | "getblock", | ||||
"\nIf verbosity is 0 or false, returns a string that is " | "\nIf verbosity is 0 or false, returns a string that is " | ||||
"serialized, hex-encoded data for block 'hash'.\n" | "serialized, hex-encoded data for block 'hash'.\n" | ||||
"If verbosity is 1 or true, returns an Object with information " | "If verbosity is 1 or true, returns an Object with information " | ||||
"about block <hash>.\n" | "about block <hash>.\n" | ||||
"If verbosity is 2, returns an Object with information about " | "If verbosity is 2, returns an Object with information about " | ||||
"block <hash> and information about each transaction.\n", | "block <hash> and information about each transaction.\n", | ||||
{ | { | ||||
{"blockhash", RPCArg::Type::STR_HEX, false}, | {"blockhash", RPCArg::Type::STR_HEX, /* opt */ false, | ||||
{"verbosity", RPCArg::Type::NUM, true}, | /* default_val */ "", "The block hash"}, | ||||
{"verbosity", RPCArg::Type::NUM, /* opt */ true, | |||||
/* default_val */ "1", | |||||
"0 for hex-encoded data, 1 for a json object, and 2 for " | |||||
"json object with transaction data"}, | |||||
}} | }} | ||||
.ToString() + | .ToString() + | ||||
"\nArguments:\n" | |||||
"1. \"blockhash\" (string, required) The block hash\n" | |||||
"2. verbosity (numeric, optional, default=1) 0 for " | |||||
"hex-encoded data, 1 for a json object, and 2 for json object with " | |||||
"transaction data\n" | |||||
"\nResult (for verbosity = 0):\n" | "\nResult (for verbosity = 0):\n" | ||||
"\"data\" (string) A string that is serialized, " | "\"data\" (string) A string that is serialized, " | ||||
"hex-encoded data for block 'hash'.\n" | "hex-encoded data for block 'hash'.\n" | ||||
"\nResult (for verbosity = 1):\n" | "\nResult (for verbosity = 1):\n" | ||||
"{\n" | "{\n" | ||||
" \"hash\" : \"hash\", (string) The block hash (same as " | " \"hash\" : \"hash\", (string) The block hash (same as " | ||||
"provided)\n" | "provided)\n" | ||||
" \"confirmations\" : n, (numeric) The number of confirmations, " | " \"confirmations\" : n, (numeric) The number of confirmations, " | ||||
▲ Show 20 Lines • Show All 150 Lines • ▼ Show 20 Lines | |||||
static UniValue pruneblockchain(const Config &config, | static UniValue pruneblockchain(const Config &config, | ||||
const JSONRPCRequest &request) { | const JSONRPCRequest &request) { | ||||
if (request.fHelp || request.params.size() != 1) { | if (request.fHelp || request.params.size() != 1) { | ||||
throw std::runtime_error( | throw std::runtime_error( | ||||
RPCHelpMan{"pruneblockchain", | RPCHelpMan{"pruneblockchain", | ||||
"", | "", | ||||
{ | { | ||||
{"height", RPCArg::Type::NUM, false}, | {"height", RPCArg::Type::NUM, /* opt */ false, | ||||
/* default_val */ "", | |||||
"The block height to prune up to. May be set to a " | |||||
"discrete height, or a unix timestamp\n"}, | |||||
}} | }} | ||||
.ToString() + | .ToString() + | ||||
"\nArguments:\n" | |||||
"1. \"height\" (numeric, required) The block height to prune " | |||||
"up to. May be set to a discrete height, or a unix timestamp\n" | |||||
" to prune blocks whose block time is at least 2 " | |||||
"hours older than the provided timestamp.\n" | |||||
"\nResult:\n" | "\nResult:\n" | ||||
"n (numeric) Height of the last block pruned.\n" | "n (numeric) Height of the last block pruned.\n" | ||||
"\nExamples:\n" + | "\nExamples:\n" + | ||||
HelpExampleCli("pruneblockchain", "1000") + | HelpExampleCli("pruneblockchain", "1000") + | ||||
HelpExampleRpc("pruneblockchain", "1000")); | HelpExampleRpc("pruneblockchain", "1000")); | ||||
} | } | ||||
if (!fPruneMode) { | if (!fPruneMode) { | ||||
▲ Show 20 Lines • Show All 94 Lines • ▼ Show 20 Lines | |||||
UniValue gettxout(const Config &config, const JSONRPCRequest &request) { | UniValue gettxout(const Config &config, const JSONRPCRequest &request) { | ||||
if (request.fHelp || request.params.size() < 2 || | if (request.fHelp || request.params.size() < 2 || | ||||
request.params.size() > 3) { | request.params.size() > 3) { | ||||
throw std::runtime_error( | throw std::runtime_error( | ||||
RPCHelpMan{ | RPCHelpMan{ | ||||
"gettxout", | "gettxout", | ||||
"\nReturns details about an unspent transaction output.\n", | "\nReturns details about an unspent transaction output.\n", | ||||
{ | { | ||||
{"txid", RPCArg::Type::STR_HEX, false}, | {"txid", RPCArg::Type::STR_HEX, /* opt */ false, | ||||
{"n", RPCArg::Type::NUM, false}, | /* default_val */ "", "The transaction id"}, | ||||
{"include_mempool", RPCArg::Type::BOOL, true}, | {"n", RPCArg::Type::NUM, /* opt */ false, | ||||
/* default_val */ "", "vout number"}, | |||||
{"include_mempool", RPCArg::Type::BOOL, /* opt */ true, | |||||
/* default_val */ "true", | |||||
"Whether to include the mempool. Note that an unspent " | |||||
"output that is spent in the mempool won't appear."}, | |||||
}} | }} | ||||
.ToString() + | .ToString() + | ||||
"\nArguments:\n" | |||||
"1. \"txid\" (string, required) The transaction id\n" | |||||
"2. \"n\" (numeric, required) vout number\n" | |||||
"3. \"include_mempool\" (boolean, optional) Whether to include " | |||||
"the mempool. Default: true." | |||||
" Note that an unspent output that is spent in the mempool " | |||||
"won't appear.\n" | |||||
"\nResult:\n" | "\nResult:\n" | ||||
"{\n" | "{\n" | ||||
" \"bestblock\" : \"hash\", (string) the block hash\n" | " \"bestblock\" : \"hash\", (string) the block hash\n" | ||||
" \"confirmations\" : n, (numeric) The number of " | " \"confirmations\" : n, (numeric) The number of " | ||||
"confirmations\n" | "confirmations\n" | ||||
" \"value\" : x.xxx, (numeric) The transaction value " | " \"value\" : x.xxx, (numeric) The transaction value " | ||||
"in " + | "in " + | ||||
CURRENCY_UNIT + | CURRENCY_UNIT + | ||||
▲ Show 20 Lines • Show All 64 Lines • ▼ Show 20 Lines | |||||
} | } | ||||
static UniValue verifychain(const Config &config, | static UniValue verifychain(const Config &config, | ||||
const JSONRPCRequest &request) { | const JSONRPCRequest &request) { | ||||
int nCheckLevel = gArgs.GetArg("-checklevel", DEFAULT_CHECKLEVEL); | int nCheckLevel = gArgs.GetArg("-checklevel", DEFAULT_CHECKLEVEL); | ||||
int nCheckDepth = gArgs.GetArg("-checkblocks", DEFAULT_CHECKBLOCKS); | int nCheckDepth = gArgs.GetArg("-checkblocks", DEFAULT_CHECKBLOCKS); | ||||
if (request.fHelp || request.params.size() > 2) { | if (request.fHelp || request.params.size() > 2) { | ||||
throw std::runtime_error( | throw std::runtime_error( | ||||
RPCHelpMan{"verifychain", | RPCHelpMan{ | ||||
"verifychain", | |||||
"\nVerifies blockchain database.\n", | "\nVerifies blockchain database.\n", | ||||
{ | { | ||||
{"checklevel", RPCArg::Type::NUM, true}, | {"checklevel", RPCArg::Type::NUM, /* opt */ true, | ||||
{"nblocks", RPCArg::Type::NUM, true}, | /* default_val */ strprintf("%d, range=0-4", nCheckLevel), | ||||
"How thorough the block verification is."}, | |||||
{"nblocks", RPCArg::Type::NUM, /* opt */ true, | |||||
/* default_val */ strprintf("%d, 0=all", nCheckDepth), | |||||
"The number of blocks to check."}, | |||||
}} | }} | ||||
.ToString() + | .ToString() + | ||||
"\nArguments:\n" | |||||
"1. checklevel (numeric, optional, 0-4, default=" + | |||||
strprintf("%d", nCheckLevel) + | |||||
") How thorough the block verification is.\n" | |||||
"2. nblocks (numeric, optional, default=" + | |||||
strprintf("%d", nCheckDepth) + | |||||
", 0=all) The number of blocks to check.\n" | |||||
"\nResult:\n" | "\nResult:\n" | ||||
"true|false (boolean) Verified or not\n" | "true|false (boolean) Verified or not\n" | ||||
"\nExamples:\n" + | "\nExamples:\n" + | ||||
HelpExampleCli("verifychain", "") + | HelpExampleCli("verifychain", "") + | ||||
HelpExampleRpc("verifychain", "")); | HelpExampleRpc("verifychain", "")); | ||||
} | } | ||||
LOCK(cs_main); | LOCK(cs_main); | ||||
▲ Show 20 Lines • Show All 362 Lines • ▼ Show 20 Lines | if (request.fHelp || request.params.size() != 1) { | ||||
RPCHelpMan{"preciousblock", | RPCHelpMan{"preciousblock", | ||||
"\nTreats a block as if it were received before others " | "\nTreats a block as if it were received before others " | ||||
"with the same work.\n" | "with the same work.\n" | ||||
"\nA later preciousblock call can override the effect " | "\nA later preciousblock call can override the effect " | ||||
"of an earlier one.\n" | "of an earlier one.\n" | ||||
"\nThe effects of preciousblock are not retained across " | "\nThe effects of preciousblock are not retained across " | ||||
"restarts.\n", | "restarts.\n", | ||||
{ | { | ||||
{"blockhash", RPCArg::Type::STR_HEX, false}, | {"blockhash", RPCArg::Type::STR_HEX, /* opt */ false, | ||||
/* default_val */ "", | |||||
"the hash of the block to mark as precious"}, | |||||
}} | }} | ||||
.ToString() + | .ToString() + | ||||
"\nArguments:\n" | |||||
"1. \"blockhash\" (string, required) the hash of the block to " | |||||
"mark as precious\n" | |||||
"\nResult:\n" | "\nResult:\n" | ||||
"\nExamples:\n" + | "\nExamples:\n" + | ||||
HelpExampleCli("preciousblock", "\"blockhash\"") + | HelpExampleCli("preciousblock", "\"blockhash\"") + | ||||
HelpExampleRpc("preciousblock", "\"blockhash\"")); | HelpExampleRpc("preciousblock", "\"blockhash\"")); | ||||
} | } | ||||
BlockHash hash(ParseHashV(request.params[0], "blockhash")); | BlockHash hash(ParseHashV(request.params[0], "blockhash")); | ||||
CBlockIndex *pblockindex; | CBlockIndex *pblockindex; | ||||
Show All 21 Lines | if (request.fHelp || request.params.size() != 1) { | ||||
throw std::runtime_error( | throw std::runtime_error( | ||||
RPCHelpMan{ | RPCHelpMan{ | ||||
"finalizeblock", | "finalizeblock", | ||||
"\nTreats a block as final. It cannot be reorged. Any chain\n" | "\nTreats a block as final. It cannot be reorged. Any chain\n" | ||||
"that does not contain this block is invalid. Used on a less\n" | "that does not contain this block is invalid. Used on a less\n" | ||||
"work chain, it can effectively PUTS YOU OUT OF CONSENSUS.\n" | "work chain, it can effectively PUTS YOU OUT OF CONSENSUS.\n" | ||||
"USE WITH CAUTION!\n", | "USE WITH CAUTION!\n", | ||||
{ | { | ||||
{"blockhash", RPCArg::Type::STR_HEX, false}, | {"blockhash", RPCArg::Type::STR_HEX, /* opt */ false, | ||||
/* default_val */ "", | |||||
"the hash of the block to mark as invalid"}, | |||||
}} | }} | ||||
.ToString() + | .ToString() + | ||||
"\nResult:\n" | "\nResult:\n" | ||||
"\nExamples:\n" + | "\nExamples:\n" + | ||||
HelpExampleCli("finalizeblock", "\"blockhash\"") + | HelpExampleCli("finalizeblock", "\"blockhash\"") + | ||||
HelpExampleRpc("finalizeblock", "\"blockhash\"")); | HelpExampleRpc("finalizeblock", "\"blockhash\"")); | ||||
} | } | ||||
Show All 25 Lines | |||||
static UniValue invalidateblock(const Config &config, | static UniValue invalidateblock(const Config &config, | ||||
const JSONRPCRequest &request) { | const JSONRPCRequest &request) { | ||||
if (request.fHelp || request.params.size() != 1) { | if (request.fHelp || request.params.size() != 1) { | ||||
throw std::runtime_error( | throw std::runtime_error( | ||||
RPCHelpMan{"invalidateblock", | RPCHelpMan{"invalidateblock", | ||||
"\nPermanently marks a block as invalid, as if it " | "\nPermanently marks a block as invalid, as if it " | ||||
"violated a consensus rule.\n", | "violated a consensus rule.\n", | ||||
{ | { | ||||
{"blockhash", RPCArg::Type::STR_HEX, false}, | {"blockhash", RPCArg::Type::STR_HEX, /* opt */ false, | ||||
/* default_val */ "", | |||||
"the hash of the block to mark as invalid"}, | |||||
}} | }} | ||||
.ToString() + | .ToString() + | ||||
"\nArguments:\n" | |||||
"1. \"blockhash\" (string, required) the hash of " | |||||
"the block to mark as invalid\n" | |||||
"\nResult:\n" | "\nResult:\n" | ||||
"\nExamples:\n" + | "\nExamples:\n" + | ||||
HelpExampleCli("invalidateblock", "\"blockhash\"") + | HelpExampleCli("invalidateblock", "\"blockhash\"") + | ||||
HelpExampleRpc("invalidateblock", "\"blockhash\"")); | HelpExampleRpc("invalidateblock", "\"blockhash\"")); | ||||
} | } | ||||
const BlockHash hash(ParseHashV(request.params[0], "blockhash")); | const BlockHash hash(ParseHashV(request.params[0], "blockhash")); | ||||
CValidationState state; | CValidationState state; | ||||
Show All 17 Lines | static UniValue invalidateblock(const Config &config, | ||||
} | } | ||||
return NullUniValue; | return NullUniValue; | ||||
} | } | ||||
UniValue parkblock(const Config &config, const JSONRPCRequest &request) { | UniValue parkblock(const Config &config, const JSONRPCRequest &request) { | ||||
if (request.fHelp || request.params.size() != 1) { | if (request.fHelp || request.params.size() != 1) { | ||||
throw std::runtime_error( | throw std::runtime_error( | ||||
RPCHelpMan{"parkblock", | RPCHelpMan{ | ||||
"parkblock", | |||||
"\nMarks a block as parked.\n", | "\nMarks a block as parked.\n", | ||||
{ | { | ||||
{"blockhash", RPCArg::Type::STR_HEX, false}, | {"blockhash", RPCArg::Type::STR_HEX, /* opt */ false, | ||||
/* default_val */ "", "the hash of the block to park"}, | |||||
}} | }} | ||||
.ToString() + | .ToString() + | ||||
"\nArguments:\n" | |||||
"1. \"blockhash\" (string, required) the " | |||||
"hash of the block to park\n" | |||||
"\nResult:\n" | "\nResult:\n" | ||||
"\nExamples:\n" + | "\nExamples:\n" + | ||||
HelpExampleCli("parkblock", "\"blockhash\"") + | HelpExampleCli("parkblock", "\"blockhash\"") + | ||||
HelpExampleRpc("parkblock", "\"blockhash\"")); | HelpExampleRpc("parkblock", "\"blockhash\"")); | ||||
} | } | ||||
const std::string strHash = request.params[0].get_str(); | const std::string strHash = request.params[0].get_str(); | ||||
const BlockHash hash(uint256S(strHash)); | const BlockHash hash(uint256S(strHash)); | ||||
Show All 26 Lines | static UniValue reconsiderblock(const Config &config, | ||||
if (request.fHelp || request.params.size() != 1) { | if (request.fHelp || request.params.size() != 1) { | ||||
throw std::runtime_error( | throw std::runtime_error( | ||||
RPCHelpMan{ | RPCHelpMan{ | ||||
"reconsiderblock", | "reconsiderblock", | ||||
"\nRemoves invalidity status of a block and its descendants, " | "\nRemoves invalidity status of a block and its descendants, " | ||||
"reconsider them for activation.\n" | "reconsider them for activation.\n" | ||||
"This can be used to undo the effects of invalidateblock.\n", | "This can be used to undo the effects of invalidateblock.\n", | ||||
{ | { | ||||
{"blockhash", RPCArg::Type::STR_HEX, false}, | {"blockhash", RPCArg::Type::STR_HEX, /* opt */ false, | ||||
/* default_val */ "", | |||||
"the hash of the block to reconsider"}, | |||||
}} | }} | ||||
.ToString() + | .ToString() + | ||||
"\nArguments:\n" | |||||
"1. \"blockhash\" (string, required) the hash of the block to " | |||||
"reconsider\n" | |||||
"\nResult:\n" | "\nResult:\n" | ||||
"\nExamples:\n" + | "\nExamples:\n" + | ||||
HelpExampleCli("reconsiderblock", "\"blockhash\"") + | HelpExampleCli("reconsiderblock", "\"blockhash\"") + | ||||
HelpExampleRpc("reconsiderblock", "\"blockhash\"")); | HelpExampleRpc("reconsiderblock", "\"blockhash\"")); | ||||
} | } | ||||
const BlockHash hash(ParseHashV(request.params[0], "blockhash")); | const BlockHash hash(ParseHashV(request.params[0], "blockhash")); | ||||
Show All 15 Lines | static UniValue reconsiderblock(const Config &config, | ||||
} | } | ||||
return NullUniValue; | return NullUniValue; | ||||
} | } | ||||
UniValue unparkblock(const Config &config, const JSONRPCRequest &request) { | UniValue unparkblock(const Config &config, const JSONRPCRequest &request) { | ||||
if (request.fHelp || request.params.size() != 1) { | if (request.fHelp || request.params.size() != 1) { | ||||
throw std::runtime_error( | throw std::runtime_error( | ||||
RPCHelpMan{"unparkblock", | RPCHelpMan{ | ||||
"\nRemoves parked status of a block and its " | "unparkblock", | ||||
"descendants, reconsider them for activation.\n" | "\nRemoves parked status of a block and its descendants, " | ||||
"reconsider them for activation.\n" | |||||
"This can be used to undo the effects of parkblock.\n", | "This can be used to undo the effects of parkblock.\n", | ||||
{ | { | ||||
{"blockhash", RPCArg::Type::STR_HEX, false}, | {"blockhash", RPCArg::Type::STR_HEX, /* opt */ false, | ||||
/* default_val */ "", "the hash of the block to unpark"}, | |||||
}} | }} | ||||
.ToString() + | .ToString() + | ||||
"\nArguments:\n" | |||||
"1. \"blockhash\" (string, required) the hash of the block to " | |||||
"unpark\n" | |||||
"\nResult:\n" | "\nResult:\n" | ||||
"\nExamples:\n" + | "\nExamples:\n" + | ||||
HelpExampleCli("unparkblock", "\"blockhash\"") + | HelpExampleCli("unparkblock", "\"blockhash\"") + | ||||
HelpExampleRpc("unparkblock", "\"blockhash\"")); | HelpExampleRpc("unparkblock", "\"blockhash\"")); | ||||
} | } | ||||
const std::string strHash = request.params[0].get_str(); | const std::string strHash = request.params[0].get_str(); | ||||
const BlockHash hash(uint256S(strHash)); | const BlockHash hash(uint256S(strHash)); | ||||
Show All 21 Lines | |||||
static UniValue getchaintxstats(const Config &config, | static UniValue getchaintxstats(const Config &config, | ||||
const JSONRPCRequest &request) { | const JSONRPCRequest &request) { | ||||
if (request.fHelp || request.params.size() > 2) { | if (request.fHelp || request.params.size() > 2) { | ||||
throw std::runtime_error( | throw std::runtime_error( | ||||
RPCHelpMan{"getchaintxstats", | RPCHelpMan{"getchaintxstats", | ||||
"\nCompute statistics about the total number and rate " | "\nCompute statistics about the total number and rate " | ||||
"of transactions in the chain.\n", | "of transactions in the chain.\n", | ||||
{ | { | ||||
{"nblocks", RPCArg::Type::NUM, true}, | {"nblocks", RPCArg::Type::NUM, /* opt */ true, | ||||
{"blockhash", RPCArg::Type::STR_HEX, true}, | /* default_val */ "one month", | ||||
"Size of the window in number of blocks"}, | |||||
{"blockhash", RPCArg::Type::STR_HEX, /* opt */ true, | |||||
/* default_val */ "", | |||||
"The hash of the block that ends the window."}, | |||||
}} | }} | ||||
.ToString() + | .ToString() + | ||||
"\nArguments:\n" | |||||
"1. nblocks (numeric, optional) Size of the window in number " | |||||
"of blocks (default: one month).\n" | |||||
"2. \"blockhash\" (string, optional) The hash of the block that " | |||||
"ends the window.\n" | |||||
"\nResult:\n" | "\nResult:\n" | ||||
"{\n" | "{\n" | ||||
" \"time\": xxxxx, (numeric) The " | " \"time\": xxxxx, (numeric) The " | ||||
"timestamp for the final block in the window in UNIX format.\n" | "timestamp for the final block in the window in UNIX format.\n" | ||||
" \"txcount\": xxxxx, (numeric) The total " | " \"txcount\": xxxxx, (numeric) The total " | ||||
"number of transactions in the chain up to that point.\n" | "number of transactions in the chain up to that point.\n" | ||||
" \"window_final_block_hash\": \"...\", (string) The hash of " | " \"window_final_block_hash\": \"...\", (string) The hash of " | ||||
"the final block in the window.\n" | "the final block in the window.\n" | ||||
▲ Show 20 Lines • Show All 111 Lines • ▼ Show 20 Lines | if (request.fHelp || request.params.size() < 1 || | ||||
"\nCompute per block statistics for a given window. All " | "\nCompute per block statistics for a given window. All " | ||||
"amounts are in " + | "amounts are in " + | ||||
CURRENCY_UNIT + | CURRENCY_UNIT + | ||||
".\n" | ".\n" | ||||
"It won't work for some heights with pruning.\n" | "It won't work for some heights with pruning.\n" | ||||
"It won't work without -txindex for utxo_size_inc, *fee or " | "It won't work without -txindex for utxo_size_inc, *fee or " | ||||
"*feerate stats.\n", | "*feerate stats.\n", | ||||
{ | { | ||||
{"hash_or_height", RPCArg::Type::NUM, false}, | {"hash_or_height", | ||||
RPCArg::Type::NUM, | |||||
/* opt */ false, | |||||
/* default_val */ "", | |||||
"The block hash or height of the target block", | |||||
"", | |||||
{"", "string or numeric"}}, | |||||
{"stats", | {"stats", | ||||
RPCArg::Type::ARR, | RPCArg::Type::ARR, | ||||
{ | /* opt */ true, | ||||
{"height", RPCArg::Type::STR, true}, | /* default_val */ "", | ||||
{"time", RPCArg::Type::STR, true}, | "Values to plot, by default all values (see result below)", | ||||
{ | |||||
{"height", RPCArg::Type::STR, /* opt */ true, | |||||
/* default_val */ "", "Selected statistic"}, | |||||
{"time", RPCArg::Type::STR, /* opt */ true, | |||||
/* default_val */ "", "Selected statistic"}, | |||||
}, | }, | ||||
true, | |||||
"stats"}, | "stats"}, | ||||
}} | }} | ||||
.ToString() + | .ToString() + | ||||
"\nArguments:\n" | |||||
"1. \"hash_or_height\" (string or numeric, required) The block " | |||||
"hash or height of the target block\n" | |||||
"2. \"stats\" (array, optional) Values to plot, by " | |||||
"default all values (see result below)\n" | |||||
" [\n" | |||||
" \"height\", (string, optional) Selected statistic\n" | |||||
" \"time\", (string, optional) Selected statistic\n" | |||||
" ,...\n" | |||||
" ]\n" | |||||
"\nResult:\n" | "\nResult:\n" | ||||
"{ (json object)\n" | "{ (json object)\n" | ||||
" \"avgfee\": x.xxx, (numeric) Average fee in the block\n" | " \"avgfee\": x.xxx, (numeric) Average fee in the block\n" | ||||
" \"avgfeerate\": x.xxx, (numeric) Average feerate (in " + | " \"avgfeerate\": x.xxx, (numeric) Average feerate (in " + | ||||
CURRENCY_UNIT + | CURRENCY_UNIT + | ||||
" per byte)\n" | " per byte)\n" | ||||
" \"avgtxsize\": xxxxx, (numeric) Average transaction size\n" | " \"avgtxsize\": xxxxx, (numeric) Average transaction size\n" | ||||
" \"blockhash\": xxxxx, (string) The block hash (to check " | " \"blockhash\": xxxxx, (string) The block hash (to check " | ||||
▲ Show 20 Lines • Show All 346 Lines • ▼ Show 20 Lines | public: | ||||
} | } | ||||
}; | }; | ||||
static UniValue scantxoutset(const Config &config, | static UniValue scantxoutset(const Config &config, | ||||
const JSONRPCRequest &request) { | const JSONRPCRequest &request) { | ||||
if (request.fHelp || request.params.size() < 1 || | if (request.fHelp || request.params.size() < 1 || | ||||
request.params.size() > 2) { | request.params.size() > 2) { | ||||
throw std::runtime_error( | throw std::runtime_error( | ||||
RPCHelpMan{"scantxoutset", | RPCHelpMan{ | ||||
"\nEXPERIMENTAL warning: this call may be removed or " | "scantxoutset", | ||||
"changed in future releases.\n" | "\nEXPERIMENTAL warning: this call may be removed or changed " | ||||
"\nScans the unspent transaction output set for entries " | "in future releases.\n" | ||||
"that match certain output descriptors.\n" | "\nScans the unspent transaction output set for entries that " | ||||
"match certain output descriptors.\n" | |||||
"Examples of output descriptors are:\n" | "Examples of output descriptors are:\n" | ||||
" addr(<address>) Outputs whose " | " addr(<address>) Outputs whose " | ||||
"scriptPubKey corresponds to the specified address " | "scriptPubKey corresponds to the specified address does not " | ||||
"(does not include P2PK)\n" | "include P2PK)\n" | ||||
" raw(<hex script>) Outputs whose " | " raw(<hex script>) Outputs whose " | ||||
"scriptPubKey equals the specified hex scripts\n" | "scriptPubKey equals the specified hex scripts\n" | ||||
" combo(<pubkey>) P2PK and " | " combo(<pubkey>) P2PK and P2PKH " | ||||
"P2PKH outputs for the given pubkey\n" | "outputs for the given pubkey\n" | ||||
" pkh(<pubkey>) P2PKH outputs " | " pkh(<pubkey>) P2PKH outputs for " | ||||
"for the given pubkey\n" | "the given pubkey\n" | ||||
" sh(multi(<n>,<pubkey>,<pubkey>,...)) P2SH-multisig " | " sh(multi(<n>,<pubkey>,<pubkey>,...)) P2SH-multisig " | ||||
"outputs for the given threshold and pubkeys\n" | "outputs for the given threshold and pubkeys\n" | ||||
"\nIn the above, <pubkey> either refers to a fixed " | "\nIn the above, <pubkey> either refers to a fixed public key " | ||||
"public key in hexadecimal notation, or to an xpub/xprv " | "in hexadecimal notation, or to an xpub/xprv optionally " | ||||
"optionally followed by one\n" | "followed by one\n" | ||||
"or more path elements separated by \"/\", and " | "or more path elements separated by \"/\", and optionally " | ||||
"optionally ending in \"/*\" (unhardened), or \"/*'\" " | "ending in \"/*\" (unhardened), or \"/*'\" or \"/*h\" " | ||||
"or \"/*h\" (hardened) to specify all\n" | "(hardened) to specify all\n" | ||||
"unhardened or hardened child keys.\n" | "unhardened or hardened child keys.\n" | ||||
"In the latter case, a range needs to be specified by " | "In the latter case, a range needs to be specified by below if " | ||||
"below if different from 1000.\n" | "different from 1000.\n" | ||||
"For more information on output descriptors, see the " | "For more information on output descriptors, see the " | ||||
"documentation in the doc/descriptors.md file.\n", | "documentation in the doc/descriptors.md file.\n", | ||||
{ | { | ||||
{"action", RPCArg::Type::STR, false}, | {"action", RPCArg::Type::STR, /* opt */ false, | ||||
/* default_val */ "", | |||||
"The action to execute\n" | |||||
" \"start\" for " | |||||
"starting a scan\n" | |||||
" \"abort\" for " | |||||
"aborting the current scan (returns true when abort was " | |||||
"successful)\n" | |||||
" \"status\" for " | |||||
"progress report (in %) of the current scan"}, | |||||
{"scanobjects", | {"scanobjects", | ||||
RPCArg::Type::ARR, | RPCArg::Type::ARR, | ||||
/* opt */ false, | |||||
/* default_val */ "", | |||||
"Array of scan objects\n" | |||||
" Every scan object is " | |||||
"either a string descriptor or an object:", | |||||
{ | { | ||||
{"descriptor", | {"descriptor", RPCArg::Type::STR, /* opt */ true, | ||||
RPCArg::Type::OBJ, | /* default_val */ "", "An output descriptor"}, | ||||
{ | { | ||||
{"desc", RPCArg::Type::STR, false}, | "", | ||||
{"range", RPCArg::Type::NUM, true}, | RPCArg::Type::OBJ, | ||||
/* opt */ true, | |||||
/* default_val */ "", | |||||
"An object with output descriptor and metadata", | |||||
{ | |||||
{"desc", RPCArg::Type::STR, /* opt */ false, | |||||
/* default_val */ "", "An output descriptor"}, | |||||
{"range", RPCArg::Type::NUM, /* opt */ true, | |||||
/* default_val */ "1000", | |||||
"Up to what child index HD chains should be " | |||||
"explored"}, | |||||
}, | }, | ||||
false, | |||||
"scanobjects"}, | |||||
}, | }, | ||||
false}, | }, | ||||
"[scanobjects,...]"}, | |||||
}} | }} | ||||
.ToString() + | .ToString() + | ||||
"\nArguments:\n" | |||||
"1. \"action\" (string, required) The action " | |||||
"to execute\n" | |||||
" \"start\" for starting a " | |||||
"scan\n" | |||||
" \"abort\" for aborting the " | |||||
"current scan (returns true when abort was successful)\n" | |||||
" \"status\" for progress " | |||||
"report (in %) of the current scan\n" | |||||
"2. \"scanobjects\" (array, required) Array of " | |||||
"scan objects\n" | |||||
" [ Every scan object is either a " | |||||
"string descriptor or an object:\n" | |||||
" \"descriptor\", (string, optional) An output " | |||||
"descriptor\n" | |||||
" { (object, optional) An object " | |||||
"with output descriptor and metadata\n" | |||||
" \"desc\": \"descriptor\", (string, required) An " | |||||
"output descriptor\n" | |||||
" \"range\": n, (numeric, optional) Up to " | |||||
"what child index HD chains should be explored (default: 1000)\n" | |||||
" },\n" | |||||
" ...\n" | |||||
" ]\n" | |||||
"\nResult:\n" | "\nResult:\n" | ||||
"{\n" | "{\n" | ||||
" \"unspents\": [\n" | " \"unspents\": [\n" | ||||
" {\n" | " {\n" | ||||
" \"txid\" : \"transactionid\", (string) The transaction " | " \"txid\" : \"transactionid\", (string) The transaction " | ||||
"id\n" | "id\n" | ||||
" \"vout\": n, (numeric) the vout value\n" | " \"vout\": n, (numeric) the vout value\n" | ||||
" \"scriptPubKey\" : \"script\", (string) the script key\n" | " \"scriptPubKey\" : \"script\", (string) the script key\n" | ||||
▲ Show 20 Lines • Show All 187 Lines • Show Last 20 Lines |
default is 0.