10 #include "validation.h" 27 #include <boost/assign/list_of.hpp> 28 #include <boost/algorithm/string.hpp> 49 if (fHelp || params.
size() != 0)
52 "Returns an object containing various state info.\n" 55 " \"version\": xxxxx, (numeric) the server version\n" 56 " \"protocolversion\": xxxxx, (numeric) the protocol version\n" 57 " \"walletversion\": xxxxx, (numeric) the wallet version\n" 58 " \"balance\": xxxxxxx, (numeric) the total dash balance of the wallet\n" 59 " \"privatesend_balance\": xxxxxx, (numeric) the anonymized dash balance of the wallet\n" 60 " \"blocks\": xxxxxx, (numeric) the current number of blocks processed in the server\n" 61 " \"timeoffset\": xxxxx, (numeric) the time offset\n" 62 " \"connections\": xxxxx, (numeric) the number of connections\n" 63 " \"proxy\": \"host:port\", (string, optional) the proxy used by the server\n" 64 " \"difficulty\": xxxxxx, (numeric) the current difficulty\n" 65 " \"testnet\": true|false, (boolean) if the server is using testnet or not\n" 66 " \"keypoololdest\": xxxxxx, (numeric) the timestamp (seconds since GMT epoch) of the oldest pre-generated key in the key pool\n" 67 " \"keypoolsize\": xxxx, (numeric) how many new keys are pre-generated\n" 68 " \"unlocked_until\": ttt, (numeric) the timestamp in seconds since epoch (midnight Jan 1 1970 GMT) that the wallet is unlocked for transfers, or 0 if the wallet is locked\n" 69 " \"paytxfee\": x.xxxx, (numeric) the transaction fee set in " +
CURRENCY_UNIT +
"/kB\n" 70 " \"relayfee\": x.xxxx, (numeric) minimum relay fee for non-free transactions in " +
CURRENCY_UNIT +
"/kB\n" 71 " \"errors\": \"...\" (string) any error messages\n" 121 if (fHelp || params.
size() != 1)
123 "debug ( 0|1|addrman|alert|bench|coindb|db|lock|rand|rpc|selectcoins|mempool" 124 "|mempoolrej|net|proxy|prune|http|libevent|tor|zmq|" 125 "dash|privatesend|instantsend|masternode|spork|keepass|mnpayments|gobject )\n" 126 "Change debug category on the fly. Specify single category or use comma to specify many.\n" 132 std::string strMode = params[0].
get_str();
135 boost::split(
mapMultiArgs[
"-debug"], strMode, boost::is_any_of(
","));
140 return "Debug mode: " + (
fDebug ? strMode :
"off");
145 if (fHelp || params.
size() != 1)
147 "mnsync [status|next|reset]\n" 148 "Returns the sync status, updates to the next step or resets it entirely.\n" 151 std::string strMode = params[0].
get_str();
153 if(strMode ==
"status") {
167 if(strMode ==
"next")
173 if(strMode ==
"reset")
183 class DescribeAddressVisitor :
public boost::static_visitor<UniValue>
191 obj.push_back(
Pair(
"isscript",
false));
193 obj.push_back(
Pair(
"pubkey",
HexStr(vchPubKey)));
204 std::vector<CTxDestination> addresses;
213 obj.push_back(
Pair(
"addresses", a));
215 obj.push_back(
Pair(
"sigsrequired", nRequired));
227 if(params.
size() == 1 && params[0].
get_str() ==
"show"){
234 }
else if(params.
size() == 1 && params[0].
get_str() ==
"active"){
241 }
else if (params.
size() == 2){
244 return "Invalid spork name";
264 "spork <name> [<value>]\n" 265 "<name> is the corresponding spork name, or 'show' to show all current spork settings, active to show which sporks are active" 266 "<value> is a epoch datetime to enable or disable spork" 272 if (fHelp || params.
size() != 1)
274 "validateaddress \"dashaddress\"\n" 275 "\nReturn information about the given dash address.\n" 277 "1. \"dashaddress\" (string, required) The dash address to validate\n" 280 " \"isvalid\" : true|false, (boolean) If the address is valid or not. If not, this is the only property returned.\n" 281 " \"address\" : \"dashaddress\", (string) The dash address validated\n" 282 " \"scriptPubKey\" : \"hex\", (string) The hex encoded scriptPubKey generated by the address\n" 283 " \"ismine\" : true|false, (boolean) If the address is yours or not\n" 284 " \"iswatchonly\" : true|false, (boolean) If the address is watchonly\n" 285 " \"isscript\" : true|false, (boolean) If the key is a script\n" 286 " \"pubkey\" : \"publickeyhex\", (string) The hex value of the raw public key\n" 287 " \"iscompressed\" : true|false, (boolean) If the address is compressed\n" 288 " \"account\" : \"account\" (string) DEPRECATED. The account associated with the address, \"\" is the default account\n" 289 " \"hdkeypath\" : \"keypath\" (string, optional) The HD keypath if the key is HD and available\n" 290 " \"hdchainid\" : \"<hash>\" (string, optional) The ID of the HD chain\n" 293 +
HelpExampleCli(
"validateaddress",
"\"XwnLY9Tf7Zsef8gMGL2fhWA9ZmMjt4KPwg\"")
294 +
HelpExampleRpc(
"validateaddress",
"\"XwnLY9Tf7Zsef8gMGL2fhWA9ZmMjt4KPwg\"")
304 bool isValid = address.
IsValid();
311 string currentAddress = address.
ToString();
321 UniValue detail = boost::apply_visitor(DescribeAddressVisitor(), dest);
342 int nRequired = params[0].
get_int();
347 throw runtime_error(
"a multisignature address must require at least one key to redeem");
348 if ((
int)keys.
size() < nRequired)
351 "(got %u keys, but need at least %d to redeem)", keys.
size(), nRequired));
352 if (keys.
size() > 16)
353 throw runtime_error(
"Number of addresses involved in the multisignature address creation > 16\nReduce the number");
354 std::vector<CPubKey> pubkeys;
355 pubkeys.resize(keys.
size());
356 for (
unsigned int i = 0; i < keys.
size(); i++)
358 const std::string& ks = keys[i].
get_str();
367 strprintf(
"%s does not refer to a key",ks));
371 strprintf(
"no full public key for address %s",ks));
373 throw runtime_error(
" Invalid public key: "+ks);
374 pubkeys[i] = vchPubKey;
384 throw runtime_error(
" Invalid public key: "+ks);
385 pubkeys[i] = vchPubKey;
389 throw runtime_error(
" Invalid public key: "+ks);
403 if (fHelp || params.
size() < 2 || params.
size() > 2)
405 string msg =
"createmultisig nrequired [\"key\",...]\n" 406 "\nCreates a multi-signature address with n signature of m keys required.\n" 407 "It returns a json object with the address and redeemScript.\n" 410 "1. nrequired (numeric, required) The number of required signatures out of the n keys or addresses.\n" 411 "2. \"keys\" (string, required) A json array of keys which are dash addresses or hex-encoded public keys\n" 413 " \"key\" (string) dash address or hex-encoded public key\n" 419 " \"address\":\"multisigaddress\", (string) The value of the new multisig address.\n" 420 " \"redeemScript\":\"script\" (string) The string value of the hex-encoded redemption script.\n" 424 "\nCreate a multisig address from 2 addresses\n" 425 +
HelpExampleCli(
"createmultisig",
"2 \"[\\\"Xt4qk9uKvQYAonVGSZNXqxeDmtjaEWgfrs\\\",\\\"XoSoWQkpgLpppPoyyzbUFh1fq2RBvW6UK1\\\"]\"") +
426 "\nAs a json rpc call\n" 427 +
HelpExampleRpc(
"createmultisig",
"2, \"[\\\"Xt4qk9uKvQYAonVGSZNXqxeDmtjaEWgfrs\\\",\\\"XoSoWQkpgLpppPoyyzbUFh1fq2RBvW6UK1\\\"]\"")
429 throw runtime_error(
msg);
446 if (fHelp || params.
size() != 3)
448 "verifymessage \"dashaddress\" \"signature\" \"message\"\n" 449 "\nVerify a signed message\n" 451 "1. \"dashaddress\" (string, required) The dash address to use for the signature.\n" 452 "2. \"signature\" (string, required) The signature provided by the signer in base 64 encoding (see signmessage).\n" 453 "3. \"message\" (string, required) The message that was signed.\n" 455 "true|false (boolean) If the signature is verified or not.\n" 457 "\nUnlock the wallet for 30 seconds\n" 459 "\nCreate the signature\n" 460 +
HelpExampleCli(
"signmessage",
"\"XwnLY9Tf7Zsef8gMGL2fhWA9ZmMjt4KPwg\" \"my message\"") +
461 "\nVerify the signature\n" 462 +
HelpExampleCli(
"verifymessage",
"\"XwnLY9Tf7Zsef8gMGL2fhWA9ZmMjt4KPwg\" \"signature\" \"my message\"") +
464 +
HelpExampleRpc(
"verifymessage",
"\"XwnLY9Tf7Zsef8gMGL2fhWA9ZmMjt4KPwg\", \"signature\", \"my message\"")
469 string strAddress = params[0].
get_str();
470 string strSign = params[1].
get_str();
471 string strMessage = params[2].
get_str();
481 bool fInvalid =
false;
482 vector<unsigned char> vchSig =
DecodeBase64(strSign.c_str(), &fInvalid);
495 return (pubkey.
GetID() == keyID);
500 if (fHelp || params.
size() != 1)
502 "setmocktime timestamp\n" 503 "\nSet the local time to given timestamp (-regtest only)\n" 505 "1. timestamp (integer, required) Unix seconds-since-epoch timestamp\n" 506 " Pass 0 to go back to using the system time." 510 throw runtime_error(
"setmocktime for regression testing (-regtest mode) only");
529 }
else if (type == 1) {
539 if (params[0].isStr()) {
546 addresses.push_back(std::make_pair(hashBytes, type));
547 }
else if (params[0].isObject()) {
550 if (!addressValues.
isArray()) {
554 std::vector<UniValue> values = addressValues.
getValues();
556 for (std::vector<UniValue>::iterator it = values.begin(); it != values.end(); ++it) {
561 if (!address.GetIndexKey(hashBytes, type)) {
564 addresses.push_back(std::make_pair(hashBytes, type));
573 bool heightSort(std::pair<CAddressUnspentKey, CAddressUnspentValue> a,
574 std::pair<CAddressUnspentKey, CAddressUnspentValue> b) {
575 return a.second.blockHeight < b.second.blockHeight;
578 bool timestampSort(std::pair<CMempoolAddressDeltaKey, CMempoolAddressDelta> a,
579 std::pair<CMempoolAddressDeltaKey, CMempoolAddressDelta> b) {
580 return a.second.time < b.second.time;
585 if (fHelp || params.
size() != 1)
587 "getaddressmempool\n" 588 "\nReturns all mempool deltas for an address (requires addressindex to be enabled).\n" 593 " \"address\" (string) The base58check encoded address\n" 600 " \"address\" (string) The base58check encoded address\n" 601 " \"txid\" (string) The related txid\n" 602 " \"index\" (number) The related input or output index\n" 603 " \"satoshis\" (number) The difference of duffs\n" 604 " \"timestamp\" (number) The time the transaction entered the mempool (seconds)\n" 605 " \"prevtxid\" (string) The previous txid (if spending)\n" 606 " \"prevout\" (string) The previous transaction output index (if spending)\n" 610 +
HelpExampleCli(
"getaddressmempool",
"'{\"addresses\": [\"XwnLY9Tf7Zsef8gMGL2fhWA9ZmMjt4KPwg\"]}'")
611 +
HelpExampleRpc(
"getaddressmempool",
"{\"addresses\": [\"XwnLY9Tf7Zsef8gMGL2fhWA9ZmMjt4KPwg\"]}")
614 std::vector<std::pair<uint160, int> > addresses;
620 std::vector<std::pair<CMempoolAddressDeltaKey, CMempoolAddressDelta> > indexes;
630 for (std::vector<std::pair<CMempoolAddressDeltaKey, CMempoolAddressDelta> >::iterator it = indexes.begin();
631 it != indexes.end(); it++) {
644 if (it->second.amount < 0) {
645 delta.
push_back(
Pair(
"prevtxid", it->second.prevhash.GetHex()));
656 if (fHelp || params.
size() != 1)
659 "\nReturns all unspent outputs for an address (requires addressindex to be enabled).\n" 664 " \"address\" (string) The base58check encoded address\n" 671 " \"address\" (string) The address base58check encoded\n" 672 " \"txid\" (string) The output txid\n" 673 " \"outputIndex\" (number) The output index\n" 674 " \"script\" (string) The script hex encoded\n" 675 " \"satoshis\" (number) The number of duffs of the output\n" 676 " \"height\" (number) The block height\n" 680 +
HelpExampleCli(
"getaddressutxos",
"'{\"addresses\": [\"XwnLY9Tf7Zsef8gMGL2fhWA9ZmMjt4KPwg\"]}'")
681 +
HelpExampleRpc(
"getaddressutxos",
"{\"addresses\": [\"XwnLY9Tf7Zsef8gMGL2fhWA9ZmMjt4KPwg\"]}")
684 std::vector<std::pair<uint160, int> > addresses;
690 std::vector<std::pair<CAddressUnspentKey, CAddressUnspentValue> > unspentOutputs;
692 for (std::vector<std::pair<uint160, int> >::iterator it = addresses.begin(); it != addresses.end(); it++) {
698 std::sort(unspentOutputs.begin(), unspentOutputs.end(),
heightSort);
702 for (std::vector<std::pair<CAddressUnspentKey, CAddressUnspentValue> >::const_iterator it=unspentOutputs.begin(); it!=unspentOutputs.end(); it++) {
712 output.
push_back(
Pair(
"script",
HexStr(it->second.script.begin(), it->second.script.end())));
723 if (fHelp || params.
size() != 1 || !params[0].
isObject())
726 "\nReturns all changes for an address (requires addressindex to be enabled).\n" 731 " \"address\" (string) The base58check encoded address\n" 734 " \"start\" (number) The start block height\n" 735 " \"end\" (number) The end block height\n" 740 " \"satoshis\" (number) The difference of duffs\n" 741 " \"txid\" (string) The related txid\n" 742 " \"index\" (number) The related input or output index\n" 743 " \"blockindex\" (number) The related block index\n" 744 " \"height\" (number) The block height\n" 745 " \"address\" (string) The base58check encoded address\n" 749 +
HelpExampleCli(
"getaddressdeltas",
"'{\"addresses\": [\"XwnLY9Tf7Zsef8gMGL2fhWA9ZmMjt4KPwg\"]}'")
750 +
HelpExampleRpc(
"getaddressdeltas",
"{\"addresses\": [\"XwnLY9Tf7Zsef8gMGL2fhWA9ZmMjt4KPwg\"]}")
768 std::vector<std::pair<uint160, int> > addresses;
774 std::vector<std::pair<CAddressIndexKey, CAmount> > addressIndex;
776 for (std::vector<std::pair<uint160, int> >::iterator it = addresses.begin(); it != addresses.end(); it++) {
777 if (start > 0 && end > 0) {
778 if (!
GetAddressIndex((*it).first, (*it).second, addressIndex, start, end)) {
790 for (std::vector<std::pair<CAddressIndexKey, CAmount> >::const_iterator it=addressIndex.begin(); it!=addressIndex.end(); it++) {
811 if (fHelp || params.
size() != 1)
813 "getaddressbalance\n" 814 "\nReturns the balance for an address(es) (requires addressindex to be enabled).\n" 819 " \"address\" (string) The base58check encoded address\n" 825 " \"balance\" (string) The current balance in duffs\n" 826 " \"received\" (string) The total number of duffs received (including change)\n" 829 +
HelpExampleCli(
"getaddressbalance",
"'{\"addresses\": [\"XwnLY9Tf7Zsef8gMGL2fhWA9ZmMjt4KPwg\"]}'")
830 +
HelpExampleRpc(
"getaddressbalance",
"{\"addresses\": [\"XwnLY9Tf7Zsef8gMGL2fhWA9ZmMjt4KPwg\"]}")
833 std::vector<std::pair<uint160, int> > addresses;
839 std::vector<std::pair<CAddressIndexKey, CAmount> > addressIndex;
841 for (std::vector<std::pair<uint160, int> >::iterator it = addresses.begin(); it != addresses.end(); it++) {
850 for (std::vector<std::pair<CAddressIndexKey, CAmount> >::const_iterator it=addressIndex.begin(); it!=addressIndex.end(); it++) {
851 if (it->second > 0) {
852 received += it->second;
854 balance += it->second;
867 if (fHelp || params.
size() != 1)
870 "\nReturns the txids for an address(es) (requires addressindex to be enabled).\n" 875 " \"address\" (string) The base58check encoded address\n" 878 " \"start\" (number) The start block height\n" 879 " \"end\" (number) The end block height\n" 883 " \"transactionid\" (string) The transaction id\n" 887 +
HelpExampleCli(
"getaddresstxids",
"'{\"addresses\": [\"XwnLY9Tf7Zsef8gMGL2fhWA9ZmMjt4KPwg\"]}'")
888 +
HelpExampleRpc(
"getaddresstxids",
"{\"addresses\": [\"XwnLY9Tf7Zsef8gMGL2fhWA9ZmMjt4KPwg\"]}")
891 std::vector<std::pair<uint160, int> > addresses;
899 if (params[0].isObject()) {
908 std::vector<std::pair<CAddressIndexKey, CAmount> > addressIndex;
910 for (std::vector<std::pair<uint160, int> >::iterator it = addresses.begin(); it != addresses.end(); it++) {
911 if (start > 0 && end > 0) {
912 if (!
GetAddressIndex((*it).first, (*it).second, addressIndex, start, end)) {
922 std::set<std::pair<int, std::string> > txids;
925 for (std::vector<std::pair<CAddressIndexKey, CAmount> >::const_iterator it=addressIndex.begin(); it!=addressIndex.end(); it++) {
926 int height = it->first.blockHeight;
927 std::string txid = it->first.txhash.GetHex();
929 if (addresses.size() > 1) {
930 txids.insert(std::make_pair(height, txid));
932 if (txids.insert(std::make_pair(height, txid)).second) {
938 if (addresses.size() > 1) {
939 for (std::set<std::pair<int, std::string> >::const_iterator it=txids.begin(); it!=txids.end(); it++) {
940 result.push_back(it->second);
951 if (fHelp || params.
size() != 1 || !params[0].
isObject())
954 "\nReturns the txid and index where an output is spent.\n" 957 " \"txid\" (string) The hex string of the txid\n" 958 " \"index\" (number) The start block height\n" 962 " \"txid\" (string) The transaction id\n" 963 " \"index\" (number) The spending input index\n" 967 +
HelpExampleCli(
"getspentinfo",
"'{\"txid\": \"0437cd7f8525ceed2324359c2d0ba26006d92d856a9c20fa0241106ee5a597c9\", \"index\": 0}'")
968 +
HelpExampleRpc(
"getspentinfo",
"{\"txid\": \"0437cd7f8525ceed2324359c2d0ba26006d92d856a9c20fa0241106ee5a597c9\", \"index\": 0}")
974 if (!txidValue.
isStr() || !indexValue.
isNum()) {
979 int outputIndex = indexValue.
get_int();
virtual bool GetCScript(const CScriptID &hash, CScript &redeemScriptOut) const
UniValue spork(const UniValue ¶ms, bool fHelp)
unsigned int GetKeyPoolSize()
UniValue getaddressbalance(const UniValue ¶ms, bool fHelp)
boost::variant< CNoDestination, CKeyID, CScriptID > CTxDestination
CMasternodeSync masternodeSync
CAmount GetAnonymizedBalance() const
UniValue getaddresstxids(const UniValue ¶ms, bool fHelp)
bool GetAddressUnspent(uint160 addressHash, int type, std::vector< std::pair< CAddressUnspentKey, CAddressUnspentValue > > &unspentOutputs)
CCriticalSection cs_wallet
bool IsFullyValid() const
fully validate whether this is a valid public key (more expensive than IsValid()) ...
int64_t GetAssetStartTime()
const std::string CURRENCY_UNIT
UniValue getaddressdeltas(const UniValue ¶ms, bool fHelp)
UniValue validateaddress(const UniValue ¶ms, bool fHelp)
void SetMockTime(int64_t nMockTimeIn)
isminetype IsMine(const CKeyStore &keystore, const CTxDestination &dest)
std::string HexStr(const T itbegin, const T itend, bool fSpaces=false)
UniValue getspentinfo(const UniValue ¶ms, bool fHelp)
std::string HelpExampleRpc(const std::string &methodname, const std::string &args)
bool ExtractDestinations(const CScript &scriptPubKey, txnouttype &typeRet, vector< CTxDestination > &addressRet, int &nRequiredRet)
bool IsHex(const string &str)
double GetDifficulty(const CBlockIndex *blockindex)
int GetSporkIDByName(std::string strName)
bool IsWinnersListSynced()
static const unsigned int MAX_SCRIPT_ELEMENT_SIZE
std::string GetSporkNameByID(int nSporkID)
bool push_back(const UniValue &val)
bool GetPubKey(const CKeyID &address, CPubKey &vchPubKeyOut) const
GetPubKey implementation that also checks the mapHdPubKeys.
CKeyID GetID() const
Get the KeyID of this public key (hash of its serialization)
UniValue ValueFromAmount(const CAmount &amount)
const UniValue & find_value(const UniValue &obj, const std::string &name)
UniValue getaddressutxos(const UniValue ¶ms, bool fHelp)
std::string ToString() const
int64_t get_int64() const
bool RecoverCompact(const uint256 &hash, const std::vector< unsigned char > &vchSig)
Recover a public key from a compact signature.
int GetVersion()
get the current wallet format (the oldest client version guaranteed to understand this wallet) ...
bool GetHDChain(CHDChain &hdChainRet) const
CAmount GetBalance() const
void push_back(const T &value)
int64_t GetOldestKeyPoolTime()
std::string ToStringIPPort(bool fUseGetnameinfo=true) const
vector< unsigned char > DecodeBase64(const char *p, bool *pfInvalid)
std::string GetAssetName()
CScript _createmultisig_redeemScript(const UniValue ¶ms)
static const int SPORK_END
int64_t nWalletUnlockTime
CAmount GetFeePerK() const
Server is in safe mode, and command is not allowed in safe mode.
vector< unsigned char > ParseHex(const char *psz)
const char * GetTxnOutputType(txnouttype t)
UniValue createmultisig(const UniValue ¶ms, bool fHelp)
UniValue getinfo(const UniValue ¶ms, bool fHelp)
Unexpected type was passed as parameter.
CScript GetScriptForDestination(const CTxDestination &dest)
std::string HelpExampleCli(const std::string &methodname, const std::string &args)
std::string HelpRequiringPassphrase()
bool GetSpentIndex(CSpentIndexKey &key, CSpentIndexValue &value)
static std::pair< std::string, UniValue > Pair(const char *cKey, const char *cVal)
std::map< CKeyID, CHDPubKey > mapHdPubKeys
bool pushKVs(const UniValue &obj)
uint256 ParseHashV(const UniValue &v, string strName)
bool UpdateSpork(int nSporkID, int64_t nValue, CConnman &connman)
bool heightSort(std::pair< CAddressUnspentKey, CAddressUnspentValue > a, std::pair< CAddressUnspentKey, CAddressUnspentValue > b)
CSporkManager sporkManager
bool getAddressIndex(std::vector< std::pair< uint160, int > > &addresses, std::vector< std::pair< CMempoolAddressDeltaKey, CMempoolAddressDelta > > &results)
CTxDestination Get() const
void RPCTypeCheck(const UniValue ¶ms, const list< UniValue::VType > &typesExpected, bool fAllowNull)
UniValue getaddressmempool(const UniValue ¶ms, bool fHelp)
std::string GetWarnings(const std::string &strFor)
bool IsCompressed() const
Check whether this is a compressed public key.
void SwitchToNextAsset(CConnman &connman)
const CChainParams & Params()
static const int PROTOCOL_VERSION
bool IsBlockchainSynced()
std::string GetHex() const
std::unique_ptr< CConnman > g_connman
const UniValue NullUniValue
CFeeRate payTxFee(DEFAULT_TRANSACTION_FEE)
bool GetKeyID(CKeyID &keyID) const
void ExecuteSpork(int nSporkID, int nValue)
std::map< CTxDestination, CAddressBookData > mapAddressBook
bool GetIndexKey(uint160 &hashBytes, int &type) const
UniValue mnsync(const UniValue ¶ms, bool fHelp)
bool GetAddressIndex(uint160 addressHash, int type, std::vector< std::pair< CAddressIndexKey, CAmount > > &addressIndex, int start, int end)
bool getAddressFromIndex(const int &type, const uint160 &hash, std::string &address)
CScript GetScriptForMultisig(int nRequired, const std::vector< CPubKey > &keys)
bool GetProxy(enum Network net, proxyType &proxyInfoOut)
UniValue verifymessage(const UniValue ¶ms, bool fHelp)
bool IsSporkActive(int nSporkID)
static const int SPORK_START
UniValue setmocktime(const UniValue ¶ms, bool fHelp)
int64_t GetSporkValue(int nSporkID)
const string strMessageMagic
map< string, vector< string > > mapMultiArgs
static const int CLIENT_VERSION
UniValue debug(const UniValue ¶ms, bool fHelp)
bool MineBlocksOnDemand() const
bool IsMasternodeListSynced()
UniValue JSONRPCError(int code, const string &message)
bool getAddressesFromParams(const UniValue ¶ms, std::vector< std::pair< uint160, int > > &addresses)
const UniValue & get_array() const
bool timestampSort(std::pair< CMempoolAddressDeltaKey, CMempoolAddressDelta > a, std::pair< CMempoolAddressDeltaKey, CMempoolAddressDelta > b)
std::string get_str() const
map< string, string > mapArgs
std::vector< UniValue > getValues() const