doublecheck RPC

This commit is contained in:
Michel van Kessel
2020-12-23 17:15:32 +01:00
parent 237699b431
commit ea7971fcdc
9 changed files with 379 additions and 380 deletions

View File

@@ -42,9 +42,9 @@ double GetDifficulty(const CBlockIndex* blockindex)
{ {
// Floating point number that is a multiple of the minimum difficulty, // Floating point number that is a multiple of the minimum difficulty,
// minimum difficulty = 1.0. // minimum difficulty = 1.0.
if (blockindex == NULL) if (blockindex == nullptr)
{ {
if (chainActive.Tip() == NULL) if (chainActive.Tip() == nullptr)
return 1.0; return 1.0;
else else
blockindex = GetLastBlockIndex(chainActive.Tip(), false); blockindex = GetLastBlockIndex(chainActive.Tip(), false);
@@ -185,14 +185,14 @@ UniValue getblockcount(const UniValue& params, bool fHelp)
{ {
if (fHelp || params.size() != 0) if (fHelp || params.size() != 0)
throw runtime_error( throw runtime_error(
"getblockcount\n" "getblockcount\n"
"\nReturns the number of blocks in the longest block chain.\n" "\nReturns the number of blocks in the longest block chain.\n"
"\nResult:\n" "\nResult:\n"
"n (numeric) The current block count\n" "n (numeric) The current block count\n"
"\nExamples:\n" "\nExamples:\n"
+ HelpExampleCli("getblockcount", "") + HelpExampleCli("getblockcount", "")
+ HelpExampleRpc("getblockcount", "") + HelpExampleRpc("getblockcount", "")
); );
LOCK(cs_main); LOCK(cs_main);
return chainActive.Height(); return chainActive.Height();
@@ -202,14 +202,14 @@ UniValue getbestblockhash(const UniValue& params, bool fHelp)
{ {
if (fHelp || params.size() != 0) if (fHelp || params.size() != 0)
throw runtime_error( throw runtime_error(
"getbestblockhash\n" "getbestblockhash\n"
"\nReturns the hash of the best (tip) block in the longest block chain.\n" "\nReturns the hash of the best (tip) block in the longest block chain.\n"
"\nResult\n" "\nResult\n"
"\"hex\" (string) the block hash hex encoded\n" "\"hex\" (string) the block hash hex encoded\n"
"\nExamples\n" "\nExamples\n"
+ HelpExampleCli("getbestblockhash", "") + HelpExampleCli("getbestblockhash", "")
+ HelpExampleRpc("getbestblockhash", "") + HelpExampleRpc("getbestblockhash", "")
); );
LOCK(cs_main); LOCK(cs_main);
return chainActive.Tip()->GetBlockHash().GetHex(); return chainActive.Tip()->GetBlockHash().GetHex();
@@ -229,7 +229,7 @@ UniValue getdifficulty(const UniValue& params, bool fHelp)
"\nExamples:\n" "\nExamples:\n"
+ HelpExampleCli("getdifficulty", "") + HelpExampleCli("getdifficulty", "")
+ HelpExampleRpc("getdifficulty", "") + HelpExampleRpc("getdifficulty", "")
); );
LOCK(cs_main); LOCK(cs_main);
@@ -243,20 +243,20 @@ std::string EntryDescriptionString()
{ {
return " \"size\" : n, (numeric) transaction size in bytes\n" return " \"size\" : n, (numeric) transaction size in bytes\n"
" \"fee\" : n, (numeric) transaction fee in " + CURRENCY_UNIT + "\n" " \"fee\" : n, (numeric) transaction fee in " + CURRENCY_UNIT + "\n"
" \"modifiedfee\" : n, (numeric) transaction fee with fee deltas used for mining priority\n" " \"modifiedfee\" : n, (numeric) transaction fee with fee deltas used for mining priority\n"
" \"time\" : n, (numeric) local time transaction entered pool in seconds since 1 Jan 1970 GMT\n" " \"time\" : n, (numeric) local time transaction entered pool in seconds since 1 Jan 1970 GMT\n"
" \"height\" : n, (numeric) block height when transaction entered pool\n" " \"height\" : n, (numeric) block height when transaction entered pool\n"
" \"startingpriority\" : n, (numeric) priority when transaction entered pool\n" " \"startingpriority\" : n, (numeric) priority when transaction entered pool\n"
" \"currentpriority\" : n, (numeric) transaction priority now\n" " \"currentpriority\" : n, (numeric) transaction priority now\n"
" \"descendantcount\" : n, (numeric) number of in-mempool descendant transactions (including this one)\n" " \"descendantcount\" : n, (numeric) number of in-mempool descendant transactions (including this one)\n"
" \"descendantsize\" : n, (numeric) size of in-mempool descendants (including this one)\n" " \"descendantsize\" : n, (numeric) size of in-mempool descendants (including this one)\n"
" \"descendantfees\" : n, (numeric) modified fees (see above) of in-mempool descendants (including this one)\n" " \"descendantfees\" : n, (numeric) modified fees (see above) of in-mempool descendants (including this one)\n"
" \"ancestorcount\" : n, (numeric) number of in-mempool ancestor transactions (including this one)\n" " \"ancestorcount\" : n, (numeric) number of in-mempool ancestor transactions (including this one)\n"
" \"ancestorsize\" : n, (numeric) size of in-mempool ancestors (including this one)\n" " \"ancestorsize\" : n, (numeric) size of in-mempool ancestors (including this one)\n"
" \"ancestorfees\" : n, (numeric) modified fees (see above) of in-mempool ancestors (including this one)\n" " \"ancestorfees\" : n, (numeric) modified fees (see above) of in-mempool ancestors (including this one)\n"
" \"depends\" : [ (array) unconfirmed transactions used as inputs for this transaction\n" " \"depends\" : [ (array) unconfirmed transactions used as inputs for this transaction\n"
" \"transactionid\", (string) parent transaction id\n" " \"transactionid\", (string) parent transaction id\n"
" ... ]\n"; " ... ]\n";
} }
void entryToJSON(UniValue &info, const CTxMemPoolEntry &e) void entryToJSON(UniValue &info, const CTxMemPoolEntry &e)
@@ -325,25 +325,25 @@ UniValue getrawmempool(const UniValue& params, bool fHelp)
{ {
if (fHelp || params.size() > 1) if (fHelp || params.size() > 1)
throw runtime_error( throw runtime_error(
"getrawmempool ( verbose )\n" "getrawmempool ( verbose )\n"
"\nReturns all transaction ids in memory pool as a json array of string transaction ids.\n" "\nReturns all transaction ids in memory pool as a json array of string transaction ids.\n"
"\nArguments:\n" "\nArguments:\n"
"1. verbose (boolean, optional, default=false) true for a json object, false for array of transaction ids\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"
+ EntryDescriptionString() + EntryDescriptionString()
+ " }, ...\n" + " }, ...\n"
"}\n" "}\n"
"\nExamples\n" "\nExamples\n"
+ HelpExampleCli("getrawmempool", "true") + HelpExampleCli("getrawmempool", "true")
+ HelpExampleRpc("getrawmempool", "true") + HelpExampleRpc("getrawmempool", "true")
); );
bool fVerbose = false; bool fVerbose = false;
if (params.size() > 0) if (params.size() > 0)
@@ -356,26 +356,26 @@ UniValue getmempoolancestors(const UniValue& params, bool fHelp)
{ {
if (fHelp || params.size() < 1 || params.size() > 2) { if (fHelp || params.size() < 1 || params.size() > 2) {
throw runtime_error( throw runtime_error(
"getmempoolancestors txid (verbose)\n" "getmempoolancestors txid (verbose)\n"
"\nIf txid is in the mempool, returns all in-mempool ancestors.\n" "\nIf txid is in the mempool, returns all in-mempool ancestors.\n"
"\nArguments:\n" "\nArguments:\n"
"1. \"txid\" (string, required) The transaction id (must be in mempool)\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" "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 in-mempool ancestor transaction\n" " \"transactionid\" (string) The transaction id of an 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"
" \"transactionid\" : { (json object)\n" " \"transactionid\" : { (json object)\n"
+ EntryDescriptionString() + EntryDescriptionString()
+ " }, ...\n" + " }, ...\n"
"}\n" "}\n"
"\nExamples\n" "\nExamples\n"
+ HelpExampleCli("getmempoolancestors", "\"mytxid\"") + HelpExampleCli("getmempoolancestors", "\"mytxid\"")
+ HelpExampleRpc("getmempoolancestors", "\"mytxid\"") + HelpExampleRpc("getmempoolancestors", "\"mytxid\"")
); );
} }
bool fVerbose = false; bool fVerbose = false;
@@ -420,26 +420,26 @@ UniValue getmempooldescendants(const UniValue& params, bool fHelp)
{ {
if (fHelp || params.size() < 1 || params.size() > 2) { if (fHelp || params.size() < 1 || params.size() > 2) {
throw runtime_error( throw runtime_error(
"getmempooldescendants txid (verbose)\n" "getmempooldescendants txid (verbose)\n"
"\nIf txid is in the mempool, returns all in-mempool descendants.\n" "\nIf txid is in the mempool, returns all in-mempool descendants.\n"
"\nArguments:\n" "\nArguments:\n"
"1. \"txid\" (string, required) The transaction id (must be in mempool)\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" "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 in-mempool descendant transaction\n" " \"transactionid\" (string) The transaction id of an 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"
" \"transactionid\" : { (json object)\n" " \"transactionid\" : { (json object)\n"
+ EntryDescriptionString() + EntryDescriptionString()
+ " }, ...\n" + " }, ...\n"
"}\n" "}\n"
"\nExamples\n" "\nExamples\n"
+ HelpExampleCli("getmempooldescendants", "\"mytxid\"") + HelpExampleCli("getmempooldescendants", "\"mytxid\"")
+ HelpExampleRpc("getmempooldescendants", "\"mytxid\"") + HelpExampleRpc("getmempooldescendants", "\"mytxid\"")
); );
} }
bool fVerbose = false; bool fVerbose = false;
@@ -484,18 +484,18 @@ UniValue getmempoolentry(const UniValue& params, bool fHelp)
{ {
if (fHelp || params.size() != 1) { if (fHelp || params.size() != 1) {
throw runtime_error( throw runtime_error(
"getmempoolentry txid\n" "getmempoolentry txid\n"
"\nReturns mempool data for given transaction\n" "\nReturns mempool data for given transaction\n"
"\nArguments:\n" "\nArguments:\n"
"1. \"txid\" (string, required) The transaction id (must be in mempool)\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\"")
); );
} }
uint256 hash = ParseHashV(params[0], "parameter 1"); uint256 hash = ParseHashV(params[0], "parameter 1");
@@ -517,16 +517,16 @@ UniValue getblockhash(const UniValue& params, bool fHelp)
{ {
if (fHelp || params.size() != 1) if (fHelp || params.size() != 1)
throw runtime_error( throw runtime_error(
"getblockhash index\n" "getblockhash index\n"
"\nReturns hash of block in best-block-chain at index provided.\n" "\nReturns hash of block in best-block-chain at index provided.\n"
"\nArguments:\n" "\nArguments:\n"
"1. index (numeric, required) The block index\n" "1. index (numeric, required) The block 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);
@@ -542,35 +542,35 @@ UniValue getblockheader(const UniValue& params, bool fHelp)
{ {
if (fHelp || params.size() < 1 || params.size() > 2) if (fHelp || params.size() < 1 || params.size() > 2)
throw runtime_error( throw runtime_error(
"getblockheader \"hash\" ( verbose )\n" "getblockheader \"hash\" ( verbose )\n"
"\nIf verbose is false, returns a string that is serialized, hex-encoded data for blockheader 'hash'.\n" "\nIf verbose is false, returns a string that is serialized, hex-encoded data for blockheader 'hash'.\n"
"If verbose is true, returns an Object with information about blockheader <hash>.\n" "If verbose is true, returns an Object with information about blockheader <hash>.\n"
"\nArguments:\n" "\nArguments:\n"
"1. \"hash\" (string, required) The block hash\n" "1. \"hash\" (string, required) The block hash\n"
"2. verbose (boolean, optional, default=true) true for a json object, false for the hex encoded data\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 provided)\n" " \"hash\" : \"hash\", (string) the block hash (same as provided)\n"
" \"confirmations\" : n, (numeric) The number of confirmations, or -1 if the block is not on the main chain\n" " \"confirmations\" : n, (numeric) The number of confirmations, 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"
" \"versionHex\" : \"00000000\", (string) The block version formatted in hexadecimal\n" " \"versionHex\" : \"00000000\", (string) The block version formatted in hexadecimal\n"
" \"merkleroot\" : \"xxxx\", (string) The merkle root\n" " \"merkleroot\" : \"xxxx\", (string) The merkle root\n"
" \"time\" : ttt, (numeric) The block time in seconds since epoch (Jan 1 1970 GMT)\n" " \"time\" : ttt, (numeric) The block time in seconds since epoch (Jan 1 1970 GMT)\n"
" \"mediantime\" : ttt, (numeric) The median block time in seconds since epoch (Jan 1 1970 GMT)\n" " \"mediantime\" : ttt, (numeric) The median block time in seconds since epoch (Jan 1 1970 GMT)\n"
" \"nonce\" : n, (numeric) The nonce\n" " \"nonce\" : n, (numeric) The nonce\n"
" \"bits\" : \"1d00ffff\", (string) The bits\n" " \"bits\" : \"1d00ffff\", (string) The bits\n"
" \"difficulty\" : x.xxx, (numeric) The difficulty\n" " \"difficulty\" : x.xxx, (numeric) The difficulty\n"
" \"previousblockhash\" : \"hash\", (string) The hash of the previous block\n" " \"previousblockhash\" : \"hash\", (string) The hash of the previous block\n"
" \"nextblockhash\" : \"hash\", (string) The hash of the next block\n" " \"nextblockhash\" : \"hash\", (string) The hash of the next block\n"
" \"chainwork\" : \"0000...1f3\" (string) Expected number of hashes required to produce the current chain (in hex)\n" " \"chainwork\" : \"0000...1f3\" (string) Expected number of hashes required to produce the current chain (in hex)\n"
"}\n" "}\n"
"\nResult (for verbose=false):\n" "\nResult (for verbose=false):\n"
"\"data\" (string) A string that is serialized, hex-encoded data for block 'hash'.\n" "\"data\" (string) A string that is serialized, hex-encoded data for block 'hash'.\n"
"\nExamples:\n" "\nExamples:\n"
+ HelpExampleCli("getblockheader", "\"00000000c937983704a73af28acdec37b049d214adbda81d7e2a3dd146f6ed09\"") + HelpExampleCli("getblockheader", "\"00000000c937983704a73af28acdec37b049d214adbda81d7e2a3dd146f6ed09\"")
+ HelpExampleRpc("getblockheader", "\"00000000c937983704a73af28acdec37b049d214adbda81d7e2a3dd146f6ed09\"") + HelpExampleRpc("getblockheader", "\"00000000c937983704a73af28acdec37b049d214adbda81d7e2a3dd146f6ed09\"")
); );
LOCK(cs_main); LOCK(cs_main);
@@ -601,40 +601,40 @@ UniValue getblock(const UniValue& params, bool fHelp)
{ {
if (fHelp || params.size() < 1 || params.size() > 2) if (fHelp || params.size() < 1 || params.size() > 2)
throw runtime_error( throw runtime_error(
"getblock \"hash\" ( verbose )\n" "getblock \"hash\" ( verbose )\n"
"\nIf verbose is false, returns a string that is serialized, hex-encoded data for block 'hash'.\n" "\nIf verbose is false, returns a string that is serialized, hex-encoded data for block 'hash'.\n"
"If verbose is true, returns an Object with information about block <hash>.\n" "If verbose is true, returns an Object with information about block <hash>.\n"
"\nArguments:\n" "\nArguments:\n"
"1. \"hash\" (string, required) The block hash\n" "1. \"hash\" (string, required) The block hash\n"
"2. verbose (boolean, optional, default=true) true for a json object, false for the hex encoded data\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 provided)\n" " \"hash\" : \"hash\", (string) the block hash (same as provided)\n"
" \"confirmations\" : n, (numeric) The number of confirmations, or -1 if the block is not on the main chain\n" " \"confirmations\" : n, (numeric) The number of confirmations, or -1 if the block is not on the main chain\n"
" \"size\" : n, (numeric) The block size\n" " \"size\" : n, (numeric) The block size\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"
" \"versionHex\" : \"00000000\", (string) The block version formatted in hexadecimal\n" " \"versionHex\" : \"00000000\", (string) The block version formatted in hexadecimal\n"
" \"merkleroot\" : \"xxxx\", (string) The merkle root\n" " \"merkleroot\" : \"xxxx\", (string) The merkle root\n"
" \"tx\" : [ (array of string) The transaction ids\n" " \"tx\" : [ (array of string) The transaction ids\n"
" \"transactionid\" (string) The transaction id\n" " \"transactionid\" (string) The transaction id\n"
" ,...\n" " ,...\n"
" ],\n" " ],\n"
" \"time\" : ttt, (numeric) The block time in seconds since epoch (Jan 1 1970 GMT)\n" " \"time\" : ttt, (numeric) The block time in seconds since epoch (Jan 1 1970 GMT)\n"
" \"mediantime\" : ttt, (numeric) The median block time in seconds since epoch (Jan 1 1970 GMT)\n" " \"mediantime\" : ttt, (numeric) The median block time in seconds since epoch (Jan 1 1970 GMT)\n"
" \"nonce\" : n, (numeric) The nonce\n" " \"nonce\" : n, (numeric) The nonce\n"
" \"bits\" : \"1d00ffff\", (string) The bits\n" " \"bits\" : \"1d00ffff\", (string) The bits\n"
" \"difficulty\" : x.xxx, (numeric) The difficulty\n" " \"difficulty\" : x.xxx, (numeric) The difficulty\n"
" \"chainwork\" : \"xxxx\", (string) Expected number of hashes required to produce the chain up to this block (in hex)\n" " \"chainwork\" : \"xxxx\", (string) Expected number of hashes required to produce the chain up to this block (in hex)\n"
" \"previousblockhash\" : \"hash\", (string) The hash of the previous block\n" " \"previousblockhash\" : \"hash\", (string) The hash of the previous block\n"
" \"nextblockhash\" : \"hash\" (string) The hash of the next block\n" " \"nextblockhash\" : \"hash\" (string) The hash of the next block\n"
"}\n" "}\n"
"\nResult (for verbose=false):\n" "\nResult (for verbose=false):\n"
"\"data\" (string) A string that is serialized, hex-encoded data for block 'hash'.\n" "\"data\" (string) A string that is serialized, hex-encoded data for block 'hash'.\n"
"\nExamples:\n" "\nExamples:\n"
+ HelpExampleCli("getblock", "\"00000000c937983704a73af28acdec37b049d214adbda81d7e2a3dd146f6ed09\"") + HelpExampleCli("getblock", "\"00000000c937983704a73af28acdec37b049d214adbda81d7e2a3dd146f6ed09\"")
+ HelpExampleRpc("getblock", "\"00000000c937983704a73af28acdec37b049d214adbda81d7e2a3dd146f6ed09\"") + HelpExampleRpc("getblock", "\"00000000c937983704a73af28acdec37b049d214adbda81d7e2a3dd146f6ed09\"")
); );
LOCK(cs_main); LOCK(cs_main);
@@ -726,23 +726,23 @@ UniValue gettxoutsetinfo(const UniValue& params, bool fHelp)
{ {
if (fHelp || params.size() != 0) if (fHelp || params.size() != 0)
throw runtime_error( throw runtime_error(
"gettxoutsetinfo\n" "gettxoutsetinfo\n"
"\nReturns statistics about the unspent transaction output set.\n" "\nReturns statistics about the unspent transaction output set.\n"
"Note this call may take some time.\n" "Note this call may take some time.\n"
"\nResult:\n" "\nResult:\n"
"{\n" "{\n"
" \"height\":n, (numeric) The current block height (index)\n" " \"height\":n, (numeric) The current block height (index)\n"
" \"bestblock\": \"hex\", (string) the best block hash hex\n" " \"bestblock\": \"hex\", (string) the best block hash hex\n"
" \"transactions\": n, (numeric) The number of transactions\n" " \"transactions\": n, (numeric) The number of transactions\n"
" \"txouts\": n, (numeric) The number of output transactions\n" " \"txouts\": n, (numeric) The number of output transactions\n"
" \"bytes_serialized\": n, (numeric) The serialized size\n" " \"bytes_serialized\": n, (numeric) The serialized size\n"
" \"hash_serialized\": \"hash\", (string) The serialized hash\n" " \"hash_serialized\": \"hash\", (string) The serialized hash\n"
" \"total_amount\": x.xxx (numeric) The total amount\n" " \"total_amount\": x.xxx (numeric) The total amount\n"
"}\n" "}\n"
"\nExamples:\n" "\nExamples:\n"
+ HelpExampleCli("gettxoutsetinfo", "") + HelpExampleCli("gettxoutsetinfo", "")
+ HelpExampleRpc("gettxoutsetinfo", "") + HelpExampleRpc("gettxoutsetinfo", "")
); );
UniValue ret(UniValue::VOBJ); UniValue ret(UniValue::VOBJ);
@@ -766,40 +766,39 @@ UniValue gettxout(const UniValue& params, bool fHelp)
{ {
if (fHelp || params.size() < 2 || params.size() > 3) if (fHelp || params.size() < 2 || params.size() > 3)
throw runtime_error( throw runtime_error(
"gettxout \"txid\" n ( includemempool )\n" "gettxout \"txid\" n ( includemempool )\n"
"\nReturns details about an unspent transaction output.\n" "\nReturns details about an unspent transaction output.\n"
"\nArguments:\n" "\nArguments:\n"
"1. \"txid\" (string, required) The transaction id\n" "1. \"txid\" (string, required) The transaction id\n"
"2. n (numeric, required) vout number\n" "2. n (numeric, required) vout number\n"
"3. includemempool (boolean, optional) Whether to include the mempool\n" "3. includemempool (boolean, optional) Whether to include the mem pool\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" " \"confirmations\" : n, (numeric) The number of confirmations\n"
" \"value\" : x.xxx, (numeric) The transaction value in " + CURRENCY_UNIT + "\n" " \"value\" : x.xxx, (numeric) The transaction value in " + CURRENCY_UNIT + "\n"
" \"scriptPubKey\" : { (json object)\n" " \"scriptPubKey\" : { (json object)\n"
" \"asm\" : \"code\", (string) \n" " \"asm\" : \"code\", (string) \n"
" \"hex\" : \"hex\", (string) \n" " \"hex\" : \"hex\", (string) \n"
" \"reqSigs\" : n, (numeric) Number of required signatures\n" " \"reqSigs\" : n, (numeric) Number of required signatures\n"
" \"type\" : \"pubkeyhash\", (string) The type, eg pubkeyhash\n" " \"type\" : \"pubkeyhash\", (string) The type, eg pubkeyhash\n"
" \"addresses\" : [ (array of string) array of blackcoin addresses\n" " \"addresses\" : [ (array of string) array of navcoin addresses\n"
" \"blackcoinaddress\" (string) blackcoin address\n" " \"navcoinaddress\" (string) navcoin address\n"
" ,...\n" " ,...\n"
" ]\n" " ]\n"
" },\n" " },\n"
" \"version\" : n, (numeric) The version\n" " \"version\" : n, (numeric) The version\n"
" \"coinbase\" : true|false (boolean) Coinbase or not\n" " \"coinbase\" : true|false (boolean) Coinbase or not\n"
" \"coinstake\" : true|false (boolean) Coinstake or not\n" "}\n"
"}\n"
"\nExamples:\n" "\nExamples:\n"
"\nGet unspent transactions\n" "\nGet unspent transactions\n"
+ HelpExampleCli("listunspent", "") + + HelpExampleCli("listunspent", "") +
"\nView the details\n" "\nView the details\n"
+ HelpExampleCli("gettxout", "\"txid\" 1") + + HelpExampleCli("gettxout", "\"txid\" 1") +
"\nAs a json rpc call\n" "\nAs a json rpc call\n"
+ HelpExampleRpc("gettxout", "\"txid\", 1") + HelpExampleRpc("gettxout", "\"txid\", 1")
); );
LOCK(cs_main); LOCK(cs_main);
@@ -850,17 +849,17 @@ UniValue verifychain(const UniValue& params, bool fHelp)
int nCheckDepth = GetArg("-checkblocks", DEFAULT_CHECKBLOCKS); int nCheckDepth = GetArg("-checkblocks", DEFAULT_CHECKBLOCKS);
if (fHelp || params.size() > 2) if (fHelp || params.size() > 2)
throw runtime_error( throw runtime_error(
"verifychain ( checklevel numblocks )\n" "verifychain ( checklevel numblocks )\n"
"\nVerifies blockchain database.\n" "\nVerifies blockchain database.\n"
"\nArguments:\n" "\nArguments:\n"
"1. checklevel (numeric, optional, 0-4, default=" + strprintf("%d", nCheckLevel) + ") How thorough the block verification is.\n" "1. checklevel (numeric, optional, 0-4, default=" + strprintf("%d", nCheckLevel) + ") How thorough the block verification is.\n"
"2. numblocks (numeric, optional, default=" + strprintf("%d", nCheckDepth) + ", 0=all) The number of blocks to check.\n" "2. numblocks (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);
@@ -935,49 +934,49 @@ UniValue getblockchaininfo(const UniValue& params, bool fHelp)
{ {
if (fHelp || params.size() != 0) if (fHelp || params.size() != 0)
throw runtime_error( throw runtime_error(
"getblockchaininfo\n" "getblockchaininfo\n"
"Returns an object containing various state info regarding block chain processing.\n" "Returns an object containing various state info regarding block chain processing.\n"
"\nResult:\n" "\nResult:\n"
"{\n" "{\n"
" \"chain\": \"xxxx\", (string) current network name as defined in BIP70 (main, test, regtest)\n" " \"chain\": \"xxxx\", (string) current network name as defined in BIP70 (main, test, regtest)\n"
" \"blocks\": xxxxxx, (numeric) the current number of blocks processed in the server\n" " \"blocks\": xxxxxx, (numeric) the current number of blocks processed in the server\n"
" \"headers\": xxxxxx, (numeric) the current number of headers we have validated\n" " \"headers\": xxxxxx, (numeric) the current number of headers we have validated\n"
" \"bestblockhash\": \"...\", (string) the hash of the currently best block\n" " \"bestblockhash\": \"...\", (string) the hash of the currently best block\n"
" \"difficulty\": { (json object)\n" " \"difficulty\": { (json object)\n"
" \"proof-of-work\": xxxxxx, (numeric) the current proof-of-work difficulty\n" " \"proof-of-work\": xxxxxx, (numeric) the current proof-of-work difficulty\n"
" \"proof-of-stake\": xxxxxx (numeric) the current proof-of-stake difficulty\n" " \"proof-of-stake\": xxxxxx (numeric) the current proof-of-stake difficulty\n"
" },\n" " },\n"
" \"mediantime\": xxxxxx, (numeric) median time for the current best block\n" " \"mediantime\": xxxxxx, (numeric) median time for the current best block\n"
" \"verificationprogress\": xxxx, (numeric) estimate of verification progress [0..1]\n" " \"verificationprogress\": xxxx, (numeric) estimate of verification progress [0..1]\n"
" \"chainwork\": \"xxxx\" (string) total amount of work in active chain, in hexadecimal\n" " \"chainwork\": \"xxxx\" (string) total amount of work in active chain, in hexadecimal\n"
" \"pruned\": xx, (boolean) if the blocks are subject to pruning\n" " \"pruned\": xx, (boolean) if the blocks are subject to pruning\n"
" \"pruneheight\": xxxxxx, (numeric) lowest-height complete block stored\n" " \"pruneheight\": xxxxxx, (numeric) heighest block available\n"
" \"softforks\": [ (array) status of softforks in progress\n" " \"softforks\": [ (array) status of softforks in progress\n"
" {\n" " {\n"
" \"id\": \"xxxx\", (string) name of softfork\n" " \"id\": \"xxxx\", (string) name of softfork\n"
" \"version\": xx, (numeric) block version\n" " \"version\": xx, (numeric) block version\n"
" \"enforce\": { (object) progress toward enforcing the softfork rules for new-version blocks\n" " \"enforce\": { (object) progress toward enforcing the softfork rules for new-version blocks\n"
" \"status\": xx, (boolean) true if threshold reached\n" " \"status\": xx, (boolean) true if threshold reached\n"
" \"found\": xx, (numeric) number of blocks with the new version found\n" " \"found\": xx, (numeric) number of blocks with the new version found\n"
" \"required\": xx, (numeric) number of blocks required to trigger\n" " \"required\": xx, (numeric) number of blocks required to trigger\n"
" \"window\": xx, (numeric) maximum size of examined window of recent blocks\n" " \"window\": xx, (numeric) maximum size of examined window of recent blocks\n"
" },\n" " },\n"
" \"reject\": { ... } (object) progress toward rejecting pre-softfork blocks (same fields as \"enforce\")\n" " \"reject\": { ... } (object) progress toward rejecting pre-softfork blocks (same fields as \"enforce\")\n"
" }, ...\n" " }, ...\n"
" ],\n" " ],\n"
" \"bip9_softforks\": { (object) status of BIP9 softforks in progress\n" " \"bip9_softforks\": { (object) status of BIP9 softforks in progress\n"
" \"xxxx\" : { (string) name of the softfork\n" " \"xxxx\" : { (string) name of the softfork\n"
" \"status\": \"xxxx\", (string) one of \"defined\", \"started\", \"locked_in\", \"active\", \"failed\"\n" " \"status\": \"xxxx\", (string) one of \"defined\", \"started\", \"locked_in\", \"active\", \"failed\"\n"
" \"bit\": xx, (numeric) the bit (0-28) in the block version field used to signal this softfork (only for \"started\" status)\n" " \"bit\": xx, (numeric) the bit (0-28) in the block version field used to signal this softfork (only for \"started\" status)\n"
" \"startTime\": xx, (numeric) the minimum median time past of a block at which the bit gains its meaning\n" " \"startTime\": xx, (numeric) the minimum median time past of a block at which the bit gains its meaning\n"
" \"timeout\": xx (numeric) the median time past of a block at which the deployment is considered failed if not yet locked in\n" " \"timeout\": xx (numeric) the median time past of a block at which the deployment is considered failed if not yet locked in\n"
" }\n" " }\n"
" }\n" " }\n"
"}\n" "}\n"
"\nExamples:\n" "\nExamples:\n"
+ HelpExampleCli("getblockchaininfo", "") + HelpExampleCli("getblockchaininfo", "")
+ HelpExampleRpc("getblockchaininfo", "") + HelpExampleRpc("getblockchaininfo", "")
); );
LOCK(cs_main); LOCK(cs_main);
@@ -1034,39 +1033,39 @@ UniValue getchaintips(const UniValue& params, bool fHelp)
{ {
if (fHelp || params.size() != 0) if (fHelp || params.size() != 0)
throw runtime_error( throw runtime_error(
"getchaintips\n" "getchaintips\n"
"Return information about all known tips in the block tree," "Return information about all known tips in the block tree,"
" including the main chain as well as orphaned branches.\n" " including the main chain as well as orphaned branches.\n"
"\nResult:\n" "\nResult:\n"
"[\n" "[\n"
" {\n" " {\n"
" \"height\": xxxx, (numeric) height of the chain tip\n" " \"height\": xxxx, (numeric) height of the chain tip\n"
" \"hash\": \"xxxx\", (string) block hash of the tip\n" " \"hash\": \"xxxx\", (string) block hash of the tip\n"
" \"branchlen\": 0 (numeric) zero for main chain\n" " \"branchlen\": 0 (numeric) zero for main chain\n"
" \"status\": \"active\" (string) \"active\" for the main chain\n" " \"status\": \"active\" (string) \"active\" for the main chain\n"
" },\n" " },\n"
" {\n" " {\n"
" \"height\": xxxx,\n" " \"height\": xxxx,\n"
" \"hash\": \"xxxx\",\n" " \"hash\": \"xxxx\",\n"
" \"branchlen\": 1 (numeric) length of branch connecting the tip to the main chain\n" " \"branchlen\": 1 (numeric) length of branch connecting the tip to the main chain\n"
" \"status\": \"xxxx\" (string) status of the chain (active, valid-fork, valid-headers, headers-only, invalid)\n" " \"status\": \"xxxx\" (string) status of the chain (active, valid-fork, valid-headers, headers-only, invalid)\n"
" }\n" " }\n"
"]\n" "]\n"
"Possible values for status:\n" "Possible values for status:\n"
"1. \"invalid\" This branch contains at least one invalid block\n" "1. \"invalid\" This branch contains at least one invalid block\n"
"2. \"headers-only\" Not all blocks for this branch are available, but the headers are valid\n" "2. \"headers-only\" Not all blocks for this branch are available, but the headers are valid\n"
"3. \"valid-headers\" All blocks are available for this branch, but they were never fully validated\n" "3. \"valid-headers\" All blocks are available for this branch, but they were never fully validated\n"
"4. \"valid-fork\" This branch is not part of the active chain, but is fully validated\n" "4. \"valid-fork\" This branch is not part of the active chain, but is fully validated\n"
"5. \"active\" This is the tip of the active main chain, which is certainly valid\n" "5. \"active\" This is the tip of the active main chain, which is certainly valid\n"
"\nExamples:\n" "\nExamples:\n"
+ HelpExampleCli("getchaintips", "") + HelpExampleCli("getchaintips", "")
+ HelpExampleRpc("getchaintips", "") + HelpExampleRpc("getchaintips", "")
); );
LOCK(cs_main); LOCK(cs_main);
/* /*
* Idea: the set of chain tips is chainActive.tip, plus orphan blocks which do not have another orphan building off of them. * Idea: the set of chain tips is chainActive.tip, plus orphan blocks which do not have another orphan building off of them.
* Algorithm: * Algorithm:
* - Make one pass through mapBlockIndex, picking out the orphan blocks, and also storing a set of the orphan block's pprev pointers. * - Make one pass through mapBlockIndex, picking out the orphan blocks, and also storing a set of the orphan block's pprev pointers.
* - Iterate through the orphan blocks. If the block isn't pointed to by another orphan, it is a chain tip. * - Iterate through the orphan blocks. If the block isn't pointed to by another orphan, it is a chain tip.
@@ -1150,20 +1149,20 @@ UniValue getmempoolinfo(const UniValue& params, bool fHelp)
{ {
if (fHelp || params.size() != 0) if (fHelp || params.size() != 0)
throw runtime_error( throw runtime_error(
"getmempoolinfo\n" "getmempoolinfo\n"
"\nReturns details on the active state of the TX memory pool.\n" "\nReturns details on the active state of the TX memory pool.\n"
"\nResult:\n" "\nResult:\n"
"{\n" "{\n"
" \"size\": xxxxx, (numeric) Current tx count\n" " \"size\": xxxxx, (numeric) Current tx count\n"
" \"bytes\": xxxxx, (numeric) Sum of all tx sizes\n" " \"bytes\": xxxxx, (numeric) Sum of all tx sizes\n"
" \"usage\": xxxxx, (numeric) Total memory usage for the mempool\n" " \"usage\": xxxxx, (numeric) Total memory usage for the mempool\n"
" \"maxmempool\": xxxxx, (numeric) Maximum memory usage for the mempool\n" " \"maxmempool\": xxxxx, (numeric) Maximum memory usage for the mempool\n"
" \"mempoolminfee\": xxxxx (numeric) Minimum fee for tx to be accepted\n" " \"mempoolminfee\": xxxxx (numeric) Minimum fee for tx to be accepted\n"
"}\n" "}\n"
"\nExamples:\n" "\nExamples:\n"
+ HelpExampleCli("getmempoolinfo", "") + HelpExampleCli("getmempoolinfo", "")
+ HelpExampleRpc("getmempoolinfo", "") + HelpExampleRpc("getmempoolinfo", "")
); );
return mempoolInfoToJSON(); return mempoolInfoToJSON();
} }
@@ -1172,15 +1171,15 @@ UniValue invalidateblock(const UniValue& params, bool fHelp)
{ {
if (fHelp || params.size() != 1) if (fHelp || params.size() != 1)
throw runtime_error( throw runtime_error(
"invalidateblock \"hash\"\n" "invalidateblock \"hash\"\n"
"\nPermanently marks a block as invalid, as if it violated a consensus rule.\n" "\nPermanently marks a block as invalid, as if it violated a consensus rule.\n"
"\nArguments:\n" "\nArguments:\n"
"1. hash (string, required) the hash of the block to mark as invalid\n" "1. hash (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\"")
); );
std::string strHash = params[0].get_str(); std::string strHash = params[0].get_str();
uint256 hash(uint256S(strHash)); uint256 hash(uint256S(strHash));
@@ -1210,16 +1209,16 @@ UniValue reconsiderblock(const UniValue& params, bool fHelp)
{ {
if (fHelp || params.size() != 1) if (fHelp || params.size() != 1)
throw runtime_error( throw runtime_error(
"reconsiderblock \"hash\"\n" "reconsiderblock \"hash\"\n"
"\nRemoves invalidity status of a block and its descendants, reconsider them for activation.\n" "\nRemoves invalidity status of a block and its descendants, 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"
"\nArguments:\n" "\nArguments:\n"
"1. hash (string, required) the hash of the block to reconsider\n" "1. hash (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\"")
); );
std::string strHash = params[0].get_str(); std::string strHash = params[0].get_str();
uint256 hash(uint256S(strHash)); uint256 hash(uint256S(strHash));
@@ -1246,26 +1245,26 @@ UniValue reconsiderblock(const UniValue& params, bool fHelp)
static const CRPCCommand commands[] = static const CRPCCommand commands[] =
{ // category name actor (function) okSafeMode { // category name actor (function) okSafeMode
// --------------------- ------------------------ ----------------------- ---------- // --------------------- ------------------------ ----------------------- ----------
{ "blockchain", "getblockchaininfo", &getblockchaininfo, true }, { "blockchain", "getblockchaininfo", &getblockchaininfo, true },
{ "blockchain", "getbestblockhash", &getbestblockhash, true }, { "blockchain", "getbestblockhash", &getbestblockhash, true },
{ "blockchain", "getblockcount", &getblockcount, true }, { "blockchain", "getblockcount", &getblockcount, true },
{ "blockchain", "getblock", &getblock, true }, { "blockchain", "getblock", &getblock, true },
{ "blockchain", "getblockhash", &getblockhash, true }, { "blockchain", "getblockhash", &getblockhash, true },
{ "blockchain", "getblockheader", &getblockheader, true }, { "blockchain", "getblockheader", &getblockheader, true },
{ "blockchain", "getchaintips", &getchaintips, true }, { "blockchain", "getchaintips", &getchaintips, true },
{ "blockchain", "getdifficulty", &getdifficulty, true }, { "blockchain", "getdifficulty", &getdifficulty, true },
{ "blockchain", "getmempoolancestors", &getmempoolancestors, true }, { "blockchain", "getmempoolancestors", &getmempoolancestors, true },
{ "blockchain", "getmempooldescendants", &getmempooldescendants, true }, { "blockchain", "getmempooldescendants", &getmempooldescendants, true },
{ "blockchain", "getmempoolentry", &getmempoolentry, true }, { "blockchain", "getmempoolentry", &getmempoolentry, true },
{ "blockchain", "getmempoolinfo", &getmempoolinfo, true }, { "blockchain", "getmempoolinfo", &getmempoolinfo, true },
{ "blockchain", "getrawmempool", &getrawmempool, true }, { "blockchain", "getrawmempool", &getrawmempool, true },
{ "blockchain", "gettxout", &gettxout, true }, { "blockchain", "gettxout", &gettxout, true },
{ "blockchain", "gettxoutsetinfo", &gettxoutsetinfo, true }, { "blockchain", "gettxoutsetinfo", &gettxoutsetinfo, true },
{ "blockchain", "verifychain", &verifychain, true }, { "blockchain", "verifychain", &verifychain, true },
/* Not shown in help */ /* Not shown in help */
{ "hidden", "invalidateblock", &invalidateblock, true }, { "hidden", "invalidateblock", &invalidateblock, true },
{ "hidden", "reconsiderblock", &reconsiderblock, true }, { "hidden", "reconsiderblock", &reconsiderblock, true },
}; };
void RegisterBlockchainRPCCommands(CRPCTable &tableRPC) void RegisterBlockchainRPCCommands(CRPCTable &tableRPC)

View File

@@ -1,5 +1,6 @@
// Copyright (c) 2010 Satoshi Nakamoto // Copyright (c) 2010 Satoshi Nakamoto
// Copyright (c) 2009-2015 The Bitcoin Core developers // Copyright (c) 2009-2015 The Bitcoin Core developers
// Copyright (c) 2018 The NavCoin Core developers
// Distributed under the MIT software license, see the accompanying // Distributed under the MIT software license, see the accompanying
// file COPYING or http://www.opensource.org/licenses/mit-license.php. // file COPYING or http://www.opensource.org/licenses/mit-license.php.
@@ -18,7 +19,6 @@
#include <net.h> #include <net.h>
#include <pow.h> #include <pow.h>
#include <pos.h> #include <pos.h>
#include "rpc/server.h"
#include <rpc/server.h> #include <rpc/server.h>
#include <txmempool.h> #include <txmempool.h>
#include <util.h> #include <util.h>
@@ -107,6 +107,7 @@ UniValue generateBlocks(std::shared_ptr<CReserveScript> coinbaseScript, int nGen
int nHeightStart = 0; int nHeightStart = 0;
int nHeightEnd = 0; int nHeightEnd = 0;
int nHeight = 0; int nHeight = 0;
{ // Don't keep cs_main locked { // Don't keep cs_main locked
LOCK(cs_main); LOCK(cs_main);
nHeightStart = chainActive.Height(); nHeightStart = chainActive.Height();
@@ -297,7 +298,7 @@ UniValue getstakinginfo(const UniValue& params, bool fHelp)
} }
// NOTE: Unlike wallet RPC (which use BTC values), mining RPCs follow GBT (BIP 22) in using satoshi amounts // NOTE: Unlike wallet RPC (which use BLK values), mining RPCs follow GBT (BIP 22) in using blacktoshi amounts
UniValue prioritisetransaction(const UniValue& params, bool fHelp) UniValue prioritisetransaction(const UniValue& params, bool fHelp)
{ {
if (fHelp || params.size() != 3) if (fHelp || params.size() != 3)

View File

@@ -254,19 +254,18 @@ CScript _createmultisig_redeemScript(const UniValue& params)
{ {
const std::string& ks = keys[i].get_str(); const std::string& ks = keys[i].get_str();
#ifdef ENABLE_WALLET #ifdef ENABLE_WALLET
// Case 1: Bitcoin address and we have full public key: // Case 1: Blackoin address and we have full public key:
CTxDestination dest = DecodeDestination(ks); CTxDestination dest = DecodeDestination(ks);
if (pwalletMain && IsValidDestination(dest)) { if (pwalletMain && IsValidDestination(dest))
{
const CKeyID *keyID = boost::get<CKeyID>(&dest); const CKeyID *keyID = boost::get<CKeyID>(&dest);
if (!keyID) { if (!keyID)
throw std::runtime_error( throw runtime_error(
strprintf("%s does not refer to a key", ks)); strprintf("%s does not refer to a key",ks));
}
CPubKey vchPubKey; CPubKey vchPubKey;
if (!pwalletMain->GetPubKey(*keyID, vchPubKey)) { if (!pwalletMain->GetPubKey(*keyID, vchPubKey))
throw std::runtime_error( throw runtime_error(
strprintf("no full public key for address %s", ks)); strprintf("no full public key for address %s",ks));
}
if (!vchPubKey.IsFullyValid()) if (!vchPubKey.IsFullyValid())
throw runtime_error(" Invalid public key: "+ks); throw runtime_error(" Invalid public key: "+ks);
pubkeys[i] = vchPubKey; pubkeys[i] = vchPubKey;

View File

@@ -344,7 +344,7 @@ UniValue getnettotals(const UniValue& params, bool fHelp)
"{\n" "{\n"
" \"totalbytesrecv\": n, (numeric) Total bytes received\n" " \"totalbytesrecv\": n, (numeric) Total bytes received\n"
" \"totalbytessent\": n, (numeric) Total bytes sent\n" " \"totalbytessent\": n, (numeric) Total bytes sent\n"
" \"timemillis\": t, (numeric) Current UNIX time in milliseconds\n" " \"timemillis\": t, (numeric) Total cpu time\n"
" \"uploadtarget\":\n" " \"uploadtarget\":\n"
" {\n" " {\n"
" \"timeframe\": n, (numeric) Length of the measuring timeframe in seconds\n" " \"timeframe\": n, (numeric) Length of the measuring timeframe in seconds\n"
@@ -484,7 +484,7 @@ UniValue setban(const UniValue& params, bool fHelp)
"\nExamples:\n" "\nExamples:\n"
+ HelpExampleCli("setban", "\"192.168.0.6\" \"add\" 86400") + HelpExampleCli("setban", "\"192.168.0.6\" \"add\" 86400")
+ HelpExampleCli("setban", "\"192.168.0.0/24\" \"add\"") + HelpExampleCli("setban", "\"192.168.0.0/24\" \"add\"")
+ HelpExampleRpc("setban", "\"192.168.0.6\", \"add\", 86400") + HelpExampleRpc("setban", "\"192.168.0.6\", \"add\" 86400")
); );
CSubNet subNet; CSubNet subNet;

View File

@@ -21,9 +21,9 @@
#include <script/script_error.h> #include <script/script_error.h>
#include <script/sign.h> #include <script/sign.h>
#include <script/standard.h> #include <script/standard.h>
#include <timedata.h>
#include <txmempool.h> #include <txmempool.h>
#include <uint256.h> #include <uint256.h>
#include <timedata.h>
#include <utilstrencodings.h> #include <utilstrencodings.h>
#ifdef ENABLE_WALLET #ifdef ENABLE_WALLET
#include <wallet/wallet.h> #include <wallet/wallet.h>
@@ -378,7 +378,7 @@ UniValue createrawtransaction(const UniValue& params, bool fHelp)
throw JSONRPCError(RPC_INVALID_PARAMETER, "Invalid parameter, locktime out of range"); throw JSONRPCError(RPC_INVALID_PARAMETER, "Invalid parameter, locktime out of range");
rawTx.nLockTime = nLockTime; rawTx.nLockTime = nLockTime;
} }
rawTx.nTime = GetAdjustedTime(); rawTx.nTime = GetAdjustedTime();
for (unsigned int idx = 0; idx < inputs.size(); idx++) { for (unsigned int idx = 0; idx < inputs.size(); idx++) {

View File

@@ -137,7 +137,7 @@ public:
}; };
/** /**
* Bitcoin RPC command dispatcher. * Blackcoin RPC command dispatcher.
*/ */
class CRPCTable class CRPCTable
{ {
@@ -186,7 +186,7 @@ extern std::vector<unsigned char> ParseHexO(const UniValue& o, std::string strKe
extern int64_t nWalletUnlockTime; extern int64_t nWalletUnlockTime;
extern CAmount AmountFromValue(const UniValue& value, bool allowZero = false); extern CAmount AmountFromValue(const UniValue& value, bool allowZero = false);
extern UniValue ValueFromAmount(const CAmount& amount); extern UniValue ValueFromAmount(const CAmount& amount);
extern double GetDifficulty(const CBlockIndex* blockindex = NULL); extern double GetDifficulty(const CBlockIndex* blockindex = nullptr);
extern double GetPoSKernelPS(); extern double GetPoSKernelPS();
extern std::string HelpRequiringPassphrase(); extern std::string HelpRequiringPassphrase();
extern std::string HelpExampleCli(const std::string& methodname, const std::string& args); extern std::string HelpExampleCli(const std::string& methodname, const std::string& args);

View File

@@ -1,7 +1,7 @@
[ [
["Format is: [scriptSig, scriptPubKey, flags, expected_scripterror, ... comments]"], ["Format is: [scriptSig, scriptPubKey, flags, expected_scripterror, ... comments]"],
["It is evaluated as if there was a crediting coinbase transaction with two 0"], ["It is evaluated as if there was a crediting coinbase transaction with two 0"],
["pushes as scriptSig, and one output of 0 satoshi and given scriptPubKey,"], ["pushes as scriptSig, and one output of 0 blacktoshi and given scriptPubKey,"],
["followed by a spending transaction which spends this output as only input (and"], ["followed by a spending transaction which spends this output as only input (and"],
["correct prevout hash), using the given scriptSig. All nLockTimes are 0, all"], ["correct prevout hash), using the given scriptSig. All nLockTimes are 0, all"],
["nSequences are max."], ["nSequences are max."],

View File

@@ -101,7 +101,7 @@ void TestPackageSelection(const CChainParams& chainparams, CScript scriptPubKey,
// This tx has a high fee, but depends on the first transaction // This tx has a high fee, but depends on the first transaction
tx.vin[0].prevout.hash = hashParentTx; tx.vin[0].prevout.hash = hashParentTx;
tx.vout[0].nValue = 5000000000LL - 1000 - 50000; // 50k satoshi fee tx.vout[0].nValue = 5000000000LL - 1000 - 50000; // 50k blacktoshi fee
uint256 hashHighFeeTx = tx.GetHash(); uint256 hashHighFeeTx = tx.GetHash();
mempool.addUnchecked(hashHighFeeTx, entry.Fee(50000).Time(GetTime()).SpendsCoinbase(false).FromTx(tx)); mempool.addUnchecked(hashHighFeeTx, entry.Fee(50000).Time(GetTime()).SpendsCoinbase(false).FromTx(tx));
@@ -172,7 +172,7 @@ void TestPackageSelection(const CChainParams& chainparams, CScript scriptPubKey,
// This tx will be mineable, and should cause hashLowFeeTx2 to be selected // This tx will be mineable, and should cause hashLowFeeTx2 to be selected
// as well. // as well.
tx.vin[0].prevout.n = 1; tx.vin[0].prevout.n = 1;
tx.vout[0].nValue = 100000000 - 10000; // 10k satoshi fee tx.vout[0].nValue = 100000000 - 10000; // 10k blacktoshi fee
mempool.addUnchecked(tx.GetHash(), entry.Fee(10000).FromTx(tx)); mempool.addUnchecked(tx.GetHash(), entry.Fee(10000).FromTx(tx));
pblocktemplate = BlockAssembler(chainparams).CreateNewBlock(scriptPubKey); pblocktemplate = BlockAssembler(chainparams).CreateNewBlock(scriptPubKey);
BOOST_CHECK(pblocktemplate->block.vtx[8].GetHash() == hashLowFeeTx2); BOOST_CHECK(pblocktemplate->block.vtx[8].GetHash() == hashLowFeeTx2);

View File

@@ -54,7 +54,7 @@ static int64_t GetStakeCombineThreshold() { return 100 * COIN; }
static int64_t GetStakeSplitThreshold() { return 2 * GetStakeCombineThreshold(); } static int64_t GetStakeSplitThreshold() { return 2 * GetStakeCombineThreshold(); }
/** /**
* Fees smaller than this (in satoshi) are considered zero fee (for transaction creation) * Fees smaller than this (in blacktoshi) are considered zero fee (for transaction creation)
* Override with -mintxfee * Override with -mintxfee
*/ */
CFeeRate CWallet::minTxFee = CFeeRate(DEFAULT_TRANSACTION_MINFEE); CFeeRate CWallet::minTxFee = CFeeRate(DEFAULT_TRANSACTION_MINFEE);