update rpc section
This commit is contained in:
@@ -3,23 +3,29 @@
|
||||
// Distributed under the MIT software license, see the accompanying
|
||||
// file COPYING or http://www.opensource.org/licenses/mit-license.php.
|
||||
|
||||
#include "amount.h"
|
||||
#include "chain.h"
|
||||
#include "chainparams.h"
|
||||
#include "checkpoints.h"
|
||||
#include "coins.h"
|
||||
#include "consensus/validation.h"
|
||||
#include "dstencode.h"
|
||||
#include "main.h"
|
||||
#include "policy/policy.h"
|
||||
#include "primitives/transaction.h"
|
||||
#include "rpc/server.h"
|
||||
#include "streams.h"
|
||||
#include "sync.h"
|
||||
#include "txmempool.h"
|
||||
#include "util.h"
|
||||
#include "utilstrencodings.h"
|
||||
#include "hash.h"
|
||||
#include <amount.h>
|
||||
#include <base58.h>
|
||||
#include <chain.h>
|
||||
#include <chainparams.h>
|
||||
#include <checkpoints.h>
|
||||
#include <coins.h>
|
||||
#include <consensus/validation.h>
|
||||
#include <dstencode.h>
|
||||
#include <main.h>
|
||||
#include <policy/policy.h>
|
||||
#include <primitives/transaction.h>
|
||||
#include <rpc/server.h>
|
||||
#include <script/script.h>
|
||||
#include <script/script_error.h>
|
||||
#include <script/sign.h>
|
||||
#include <script/standard.h>
|
||||
#include <streams.h>
|
||||
#include <sync.h>
|
||||
#include <txmempool.h>
|
||||
#include <util.h>
|
||||
#include <utilstrencodings.h>
|
||||
#include <hash.h>
|
||||
#include <pos.h>
|
||||
|
||||
#include <stdint.h>
|
||||
|
||||
@@ -144,7 +150,7 @@ UniValue blockToJSON(const CBlock& block, const CBlockIndex* blockindex, bool tx
|
||||
result.push_back(Pair("versionHex", strprintf("%08x", block.nVersion)));
|
||||
result.push_back(Pair("merkleroot", block.hashMerkleRoot.GetHex()));
|
||||
UniValue txs(UniValue::VARR);
|
||||
BOOST_FOREACH(const CTransaction&tx, block.vtx)
|
||||
for(const CTransaction&tx: block.vtx)
|
||||
{
|
||||
if(txDetails)
|
||||
{
|
||||
@@ -212,7 +218,7 @@ UniValue getbestblockhash(const UniValue& params, bool fHelp)
|
||||
UniValue getdifficulty(const UniValue& params, bool fHelp)
|
||||
{
|
||||
if (fHelp || params.size() != 0)
|
||||
throw runtime_error(
|
||||
throw runtime_error(
|
||||
"getdifficulty\n"
|
||||
"\nReturns the difficulty as a multiple of the minimum difficulty.\n"
|
||||
"\nResult:\n"
|
||||
@@ -272,14 +278,14 @@ void entryToJSON(UniValue &info, const CTxMemPoolEntry &e)
|
||||
info.push_back(Pair("ancestorfees", e.GetModFeesWithAncestors()));
|
||||
const CTransaction& tx = e.GetTx();
|
||||
set<string> setDepends;
|
||||
BOOST_FOREACH(const CTxIn& txin, tx.vin)
|
||||
for(const CTxIn& txin: tx.vin)
|
||||
{
|
||||
if (mempool.exists(txin.prevout.hash))
|
||||
setDepends.insert(txin.prevout.hash.ToString());
|
||||
}
|
||||
|
||||
UniValue depends(UniValue::VARR);
|
||||
BOOST_FOREACH(const string& dep, setDepends)
|
||||
for(const string& dep: setDepends)
|
||||
{
|
||||
depends.push_back(dep);
|
||||
}
|
||||
@@ -293,7 +299,7 @@ UniValue mempoolToJSON(bool fVerbose = false)
|
||||
{
|
||||
LOCK(mempool.cs);
|
||||
UniValue o(UniValue::VOBJ);
|
||||
BOOST_FOREACH(const CTxMemPoolEntry& e, mempool.mapTx)
|
||||
for(const CTxMemPoolEntry& e: mempool.mapTx)
|
||||
{
|
||||
const uint256& hash = e.GetTx().GetHash();
|
||||
UniValue info(UniValue::VOBJ);
|
||||
@@ -308,7 +314,7 @@ UniValue mempoolToJSON(bool fVerbose = false)
|
||||
mempool.queryHashes(vtxid);
|
||||
|
||||
UniValue a(UniValue::VARR);
|
||||
BOOST_FOREACH(const uint256& hash, vtxid)
|
||||
for(const uint256& hash: vtxid)
|
||||
a.push_back(hash.ToString());
|
||||
|
||||
return a;
|
||||
@@ -392,14 +398,14 @@ UniValue getmempoolancestors(const UniValue& params, bool fHelp)
|
||||
|
||||
if (!fVerbose) {
|
||||
UniValue o(UniValue::VARR);
|
||||
BOOST_FOREACH(CTxMemPool::txiter ancestorIt, setAncestors) {
|
||||
for(CTxMemPool::txiter ancestorIt: setAncestors) {
|
||||
o.push_back(ancestorIt->GetTx().GetHash().ToString());
|
||||
}
|
||||
|
||||
return o;
|
||||
} else {
|
||||
UniValue o(UniValue::VOBJ);
|
||||
BOOST_FOREACH(CTxMemPool::txiter ancestorIt, setAncestors) {
|
||||
for(CTxMemPool::txiter ancestorIt: setAncestors) {
|
||||
const CTxMemPoolEntry &e = *ancestorIt;
|
||||
const uint256& hash = e.GetTx().GetHash();
|
||||
UniValue info(UniValue::VOBJ);
|
||||
@@ -456,14 +462,14 @@ UniValue getmempooldescendants(const UniValue& params, bool fHelp)
|
||||
|
||||
if (!fVerbose) {
|
||||
UniValue o(UniValue::VARR);
|
||||
BOOST_FOREACH(CTxMemPool::txiter descendantIt, setDescendants) {
|
||||
for(CTxMemPool::txiter descendantIt: setDescendants) {
|
||||
o.push_back(descendantIt->GetTx().GetHash().ToString());
|
||||
}
|
||||
|
||||
return o;
|
||||
} else {
|
||||
UniValue o(UniValue::VOBJ);
|
||||
BOOST_FOREACH(CTxMemPool::txiter descendantIt, setDescendants) {
|
||||
for(CTxMemPool::txiter descendantIt: setDescendants) {
|
||||
const CTxMemPoolEntry &e = *descendantIt;
|
||||
const uint256& hash = e.GetTx().GetHash();
|
||||
UniValue info(UniValue::VOBJ);
|
||||
@@ -871,7 +877,7 @@ static UniValue SoftForkMajorityDesc(int minVersion, CBlockIndex* pindex, int nR
|
||||
{
|
||||
int nFound = 0;
|
||||
CBlockIndex* pstart = pindex;
|
||||
for (int i = 0; i < consensusParams.nMajorityWindow && pstart != NULL; i++)
|
||||
for (int i = 0; i < consensusParams.nMajorityWindow && pstart != nullptr; i++)
|
||||
{
|
||||
if (pstart->nVersion >= minVersion)
|
||||
++nFound;
|
||||
@@ -1018,7 +1024,7 @@ struct CompareBlocksByHeight
|
||||
equal. Use the pointers themselves to make a distinction. */
|
||||
|
||||
if (a->nHeight != b->nHeight)
|
||||
return (a->nHeight > b->nHeight);
|
||||
return (a->nHeight > b->nHeight);
|
||||
|
||||
return a < b;
|
||||
}
|
||||
@@ -1070,7 +1076,7 @@ UniValue getchaintips(const UniValue& params, bool fHelp)
|
||||
std::set<const CBlockIndex*> setOrphans;
|
||||
std::set<const CBlockIndex*> setPrevs;
|
||||
|
||||
BOOST_FOREACH(const PAIRTYPE(const uint256, CBlockIndex*)& item, mapBlockIndex)
|
||||
for(const PAIRTYPE(const uint256, CBlockIndex*)& item: mapBlockIndex)
|
||||
{
|
||||
if (!chainActive.Contains(item.second)) {
|
||||
setOrphans.insert(item.second);
|
||||
@@ -1090,7 +1096,7 @@ UniValue getchaintips(const UniValue& params, bool fHelp)
|
||||
|
||||
/* Construct the output array. */
|
||||
UniValue res(UniValue::VARR);
|
||||
BOOST_FOREACH(const CBlockIndex* block, setTips)
|
||||
for(const CBlockIndex* block: setTips)
|
||||
{
|
||||
UniValue obj(UniValue::VOBJ);
|
||||
obj.push_back(Pair("height", block->nHeight));
|
||||
|
||||
@@ -3,9 +3,9 @@
|
||||
// Distributed under the MIT software license, see the accompanying
|
||||
// file COPYING or http://www.opensource.org/licenses/mit-license.php.
|
||||
|
||||
#include "rpc/client.h"
|
||||
#include "rpc/protocol.h"
|
||||
#include "util.h"
|
||||
#include <rpc/client.h>
|
||||
#include <rpc/protocol.h>
|
||||
#include <util.h>
|
||||
|
||||
#include <set>
|
||||
#include <stdint.h>
|
||||
@@ -144,6 +144,7 @@ static CRPCConvertTable rpcCvtTable;
|
||||
UniValue ParseNonRFCJSONValue(const std::string& strVal)
|
||||
{
|
||||
UniValue jVal;
|
||||
|
||||
if (!jVal.read(std::string("[")+strVal+std::string("]")) ||
|
||||
!jVal.isArray() || jVal.size()!=1)
|
||||
throw runtime_error(string("Error parsing JSON:")+strVal);
|
||||
|
||||
@@ -3,34 +3,35 @@
|
||||
// Distributed under the MIT software license, see the accompanying
|
||||
// file COPYING or http://www.opensource.org/licenses/mit-license.php.
|
||||
|
||||
#include "base58.h"
|
||||
#include "amount.h"
|
||||
#include "chain.h"
|
||||
#include "chainparams.h"
|
||||
#include "consensus/consensus.h"
|
||||
#include "consensus/params.h"
|
||||
#include "consensus/validation.h"
|
||||
#include "core_io.h"
|
||||
#include "dstencode.h"
|
||||
#include "init.h"
|
||||
#include "main.h"
|
||||
#include "miner.h"
|
||||
#include "net.h"
|
||||
#include "pow.h"
|
||||
#include "pos.h"
|
||||
#include <base58.h>
|
||||
#include <amount.h>
|
||||
#include <chain.h>
|
||||
#include <chainparams.h>
|
||||
#include <consensus/consensus.h>
|
||||
#include <consensus/params.h>
|
||||
#include <consensus/validation.h>
|
||||
#include <core_io.h>
|
||||
#include <dstencode.h>
|
||||
#include <init.h>
|
||||
#include <main.h>
|
||||
#include <miner.h>
|
||||
#include <net.h>
|
||||
#include <pow.h>
|
||||
#include <pos.h>
|
||||
#include "rpc/server.h"
|
||||
#include "txmempool.h"
|
||||
#include "timedata.h"
|
||||
#include "util.h"
|
||||
#include "utilstrencodings.h"
|
||||
#include "validationinterface.h"
|
||||
#include <rpc/server.h>
|
||||
#include <txmempool.h>
|
||||
#include <util.h>
|
||||
#include <utilstrencodings.h>
|
||||
#include <validationinterface.h>
|
||||
#ifdef ENABLE_WALLET
|
||||
#include "wallet/wallet.h"
|
||||
#include <wallet/wallet.h>
|
||||
#endif
|
||||
|
||||
#include <stdint.h>
|
||||
|
||||
#include <boost/assign/list_of.hpp>
|
||||
#include <boost/shared_ptr.hpp>
|
||||
|
||||
#include <univalue.h>
|
||||
|
||||
@@ -136,7 +137,7 @@ UniValue generateBlocks(std::shared_ptr<CReserveScript> coinbaseScript, int nGen
|
||||
}
|
||||
CValidationState state;
|
||||
uint256 hash = pblock->GetHash();
|
||||
if (!ProcessNewBlock(state, Params(), NULL, pblock, true, NULL, false))
|
||||
if (!ProcessNewBlock(state, Params(), nullptr, pblock, true, nullptr, false))
|
||||
throw JSONRPCError(RPC_INTERNAL_ERROR, "ProcessNewBlock, block not accepted");
|
||||
++nHeight;
|
||||
blockHashes.push_back(hash.GetHex());
|
||||
@@ -194,7 +195,7 @@ UniValue generatetoaddress(const UniValue& params, bool fHelp)
|
||||
"\nMine blocks immediately to a specified address (before the RPC call returns)\n"
|
||||
"\nArguments:\n"
|
||||
"1. numblocks (numeric, required) How many blocks are generated immediately.\n"
|
||||
"2. address (string, required) The address to send the newly generated bitcoin to.\n"
|
||||
"2. address (string, required) The address to send the newly generated blackcoin to.\n"
|
||||
"3. maxtries (numeric, optional) How many iterations to try (default = 1000000).\n"
|
||||
"\nResult\n"
|
||||
"[ blockhashes ] (array) hashes of blocks generated\n"
|
||||
@@ -502,10 +503,10 @@ UniValue getblocktemplate(const UniValue& params, bool fHelp)
|
||||
throw JSONRPCError(RPC_INVALID_PARAMETER, "Invalid mode");
|
||||
|
||||
if (vNodes.empty())
|
||||
throw JSONRPCError(RPC_CLIENT_NOT_CONNECTED, "Bitcoin is not connected!");
|
||||
throw JSONRPCError(RPC_CLIENT_NOT_CONNECTED, "Blackcoin is not connected!");
|
||||
|
||||
if (IsInitialBlockDownload())
|
||||
throw JSONRPCError(RPC_CLIENT_IN_INITIAL_DOWNLOAD, "Bitcoin is downloading blocks...");
|
||||
throw JSONRPCError(RPC_CLIENT_IN_INITIAL_DOWNLOAD, "Blackcoin is downloading blocks...");
|
||||
|
||||
if (chainActive.Tip()->nHeight > Params().GetConsensus().nLastPOWBlock)
|
||||
throw JSONRPCError(RPC_MISC_ERROR, "No more PoW blocks");
|
||||
@@ -566,7 +567,7 @@ UniValue getblocktemplate(const UniValue& params, bool fHelp)
|
||||
(mempool.GetTransactionsUpdated() != nTransactionsUpdatedLast && GetTime() - nStart > 5))
|
||||
{
|
||||
// Clear pindexPrev so future calls make a new block, despite any failures from here on
|
||||
pindexPrev = NULL;
|
||||
pindexPrev = nullptr;
|
||||
|
||||
// Store the pindexBest used before CreateNewBlock, to avoid races
|
||||
nTransactionsUpdatedLast = mempool.GetTransactionsUpdated();
|
||||
@@ -577,7 +578,7 @@ UniValue getblocktemplate(const UniValue& params, bool fHelp)
|
||||
if(pblocktemplate)
|
||||
{
|
||||
delete pblocktemplate;
|
||||
pblocktemplate = NULL;
|
||||
pblocktemplate = nullptr;
|
||||
}
|
||||
CScript scriptDummy = CScript() << OP_TRUE;
|
||||
pblocktemplate = BlockAssembler(Params()).CreateNewBlock(scriptDummy, 0, false);
|
||||
@@ -599,7 +600,7 @@ UniValue getblocktemplate(const UniValue& params, bool fHelp)
|
||||
UniValue transactions(UniValue::VARR);
|
||||
map<uint256, int64_t> setTxIndex;
|
||||
int i = 0;
|
||||
BOOST_FOREACH (CTransaction& tx, pblock->vtx) {
|
||||
for(CTransaction& tx: pblock->vtx) {
|
||||
uint256 txHash = tx.GetHash();
|
||||
setTxIndex[txHash] = i++;
|
||||
|
||||
@@ -612,7 +613,7 @@ UniValue getblocktemplate(const UniValue& params, bool fHelp)
|
||||
entry.push_back(Pair("hash", txHash.GetHex()));
|
||||
|
||||
UniValue deps(UniValue::VARR);
|
||||
BOOST_FOREACH (const CTxIn &in, tx.vin)
|
||||
for(const CTxIn &in: tx.vin)
|
||||
{
|
||||
if (setTxIndex.count(in.prevout.hash))
|
||||
deps.push_back(setTxIndex[in.prevout.hash]);
|
||||
@@ -774,7 +775,7 @@ UniValue submitblock(const UniValue& params, bool fHelp)
|
||||
CValidationState state;
|
||||
submitblock_StateCatcher sc(hash);
|
||||
RegisterValidationInterface(&sc);
|
||||
bool fAccepted = ProcessNewBlock(state, Params(), NULL, &block, true, NULL, false);
|
||||
bool fAccepted = ProcessNewBlock(state, Params(), nullptr, &block, true, nullptr, false);
|
||||
UnregisterValidationInterface(&sc);
|
||||
if (fBlockPresent)
|
||||
{
|
||||
@@ -958,7 +959,7 @@ UniValue estimatesmartfee(const UniValue& params, bool fHelp)
|
||||
"1. nblocks (numeric)\n"
|
||||
"\nResult:\n"
|
||||
"{\n"
|
||||
" \"feerate\" : x.x, (numeric) estimate fee-per-kilobyte (in BTC)\n"
|
||||
" \"feerate\" : x.x, (numeric) estimate fee-per-kilobyte (in BLK)\n"
|
||||
" \"blocks\" : n (numeric) block number where estimate was found\n"
|
||||
"}\n"
|
||||
"\n"
|
||||
|
||||
@@ -3,20 +3,21 @@
|
||||
// Distributed under the MIT software license, see the accompanying
|
||||
// file COPYING or http://www.opensource.org/licenses/mit-license.php.
|
||||
|
||||
#include "base58.h"
|
||||
#include "clientversion.h"
|
||||
#include "dstencode.h"
|
||||
#include "init.h"
|
||||
#include "main.h"
|
||||
#include "net.h"
|
||||
#include "netbase.h"
|
||||
#include "rpc/server.h"
|
||||
#include "timedata.h"
|
||||
#include "util.h"
|
||||
#include "utilstrencodings.h"
|
||||
#include <base58.h>
|
||||
#include <clientversion.h>
|
||||
#include <dstencode.h>
|
||||
#include <init.h>
|
||||
#include <main.h>
|
||||
#include <net.h>
|
||||
#include <netbase.h>
|
||||
#include <rpc/server.h>
|
||||
#include <timedata.h>
|
||||
#include <txmempool.h>
|
||||
#include <util.h>
|
||||
#include <utilstrencodings.h>
|
||||
#ifdef ENABLE_WALLET
|
||||
#include "wallet/wallet.h"
|
||||
#include "wallet/walletdb.h"
|
||||
#include <wallet/wallet.h>
|
||||
#include <wallet/walletdb.h>
|
||||
#endif
|
||||
|
||||
#include <stdint.h>
|
||||
@@ -45,7 +46,7 @@ UniValue getinfo(const UniValue& params, bool fHelp)
|
||||
if (fHelp || params.size() != 0)
|
||||
throw runtime_error(
|
||||
"getinfo\n"
|
||||
"\nDEPRECATED. Returns an object containing various state info.\n"
|
||||
"Returns an object containing various state info.\n"
|
||||
"\nResult:\n"
|
||||
"{\n"
|
||||
" \"version\": xxxxx, (numeric) the server version\n"
|
||||
@@ -74,7 +75,7 @@ UniValue getinfo(const UniValue& params, bool fHelp)
|
||||
);
|
||||
|
||||
#ifdef ENABLE_WALLET
|
||||
LOCK2(cs_main, pwalletMain ? &pwalletMain->cs_wallet : NULL);
|
||||
LOCK2(cs_main, pwalletMain ? &pwalletMain->cs_wallet : nullptr);
|
||||
#else
|
||||
LOCK(cs_main);
|
||||
#endif
|
||||
@@ -160,14 +161,14 @@ UniValue validateaddress(const UniValue& params, bool fHelp)
|
||||
{
|
||||
if (fHelp || params.size() != 1)
|
||||
throw runtime_error(
|
||||
"validateaddress \"bitcoinaddress\"\n"
|
||||
"\nReturn information about the given bitcoin address.\n"
|
||||
"validateaddress \"blackcoinaddress\"\n"
|
||||
"\nReturn information about the given blackcoin address.\n"
|
||||
"\nArguments:\n"
|
||||
"1. \"bitcoinaddress\" (string, required) The bitcoin address to validate\n"
|
||||
"1. \"blackcoinaddress\" (string, required) The blackcoin address to validate\n"
|
||||
"\nResult:\n"
|
||||
"{\n"
|
||||
" \"isvalid\" : true|false, (boolean) If the address is valid or not. If not, this is the only property returned.\n"
|
||||
" \"address\" : \"bitcoinaddress\", (string) The bitcoin address validated\n"
|
||||
" \"address\" : \"blackcoinaddress\", (string) The blackcoin address validated\n"
|
||||
" \"scriptPubKey\" : \"hex\", (string) The hex encoded scriptPubKey generated by the address\n"
|
||||
" \"ismine\" : true|false, (boolean) If the address is yours or not\n"
|
||||
" \"iswatchonly\" : true|false, (boolean) If the address is watchonly\n"
|
||||
@@ -179,12 +180,12 @@ UniValue validateaddress(const UniValue& params, bool fHelp)
|
||||
" \"hdmasterkeyid\" : \"<hash160>\" (string, optional) The Hash160 of the HD master pubkey\n"
|
||||
"}\n"
|
||||
"\nExamples:\n"
|
||||
+ HelpExampleCli("validateaddress", "\"1PSSGeFHDnKNxiEyFrD1wcEaHr9hrQDDWc\"")
|
||||
+ HelpExampleRpc("validateaddress", "\"1PSSGeFHDnKNxiEyFrD1wcEaHr9hrQDDWc\"")
|
||||
+ HelpExampleCli("validateaddress", "\"BPSSGeFHDnKNxiEyFrD1wcEaHr9hrQDDWc\"")
|
||||
+ HelpExampleRpc("validateaddress", "\"BPSSGeFHDnKNxiEyFrD1wcEaHr9hrQDDWc\"")
|
||||
);
|
||||
|
||||
#ifdef ENABLE_WALLET
|
||||
LOCK2(cs_main, pwalletMain ? &pwalletMain->cs_wallet : NULL);
|
||||
LOCK2(cs_main, pwalletMain ? &pwalletMain->cs_wallet : nullptr);
|
||||
#else
|
||||
LOCK(cs_main);
|
||||
#endif
|
||||
@@ -305,9 +306,9 @@ UniValue createmultisig(const UniValue& params, bool fHelp)
|
||||
|
||||
"\nArguments:\n"
|
||||
"1. nrequired (numeric, required) The number of required signatures out of the n keys or addresses.\n"
|
||||
"2. \"keys\" (string, required) A json array of keys which are bitcoin addresses or hex-encoded public keys\n"
|
||||
"2. \"keys\" (string, required) A json array of keys which are blackcoin addresses or hex-encoded public keys\n"
|
||||
" [\n"
|
||||
" \"key\" (string) bitcoin address or hex-encoded public key\n"
|
||||
" \"key\" (string) blackcoin address or hex-encoded public key\n"
|
||||
" ,...\n"
|
||||
" ]\n"
|
||||
|
||||
@@ -319,9 +320,9 @@ UniValue createmultisig(const UniValue& params, bool fHelp)
|
||||
|
||||
"\nExamples:\n"
|
||||
"\nCreate a multisig address from 2 addresses\n"
|
||||
+ HelpExampleCli("createmultisig", "2 \"[\\\"16sSauSf5pF2UkUwvKGq4qjNRzBZYqgEL5\\\",\\\"171sgjn4YtPu27adkKGrdDwzRTxnRkBfKV\\\"]\"") +
|
||||
+ HelpExampleCli("createmultisig", "2 \"[\\\"B6sSauSf5pF2UkUwvKGq4qjNRzBZYqgEL5\\\",\\\"B71sgjn4YtPu27adkKGrdDwzRTxnRkBfKV\\\"]\"") +
|
||||
"\nAs a json rpc call\n"
|
||||
+ HelpExampleRpc("createmultisig", "2, \"[\\\"16sSauSf5pF2UkUwvKGq4qjNRzBZYqgEL5\\\",\\\"171sgjn4YtPu27adkKGrdDwzRTxnRkBfKV\\\"]\"")
|
||||
+ HelpExampleRpc("createmultisig", "2, \"[\\\"B6sSauSf5pF2UkUwvKGq4qjNRzBZYqgEL5\\\",\\\"B71sgjn4YtPu27adkKGrdDwzRTxnRkBfKV\\\"]\"")
|
||||
;
|
||||
throw runtime_error(msg);
|
||||
}
|
||||
@@ -459,7 +460,7 @@ UniValue setmocktime(const UniValue& params, bool fHelp)
|
||||
SetMockTime(params[0].get_int64());
|
||||
|
||||
uint64_t t = GetTime();
|
||||
BOOST_FOREACH(CNode* pnode, vNodes) {
|
||||
for(CNode* pnode: vNodes) {
|
||||
pnode->nLastSend = pnode->nLastRecv = t;
|
||||
}
|
||||
|
||||
|
||||
@@ -2,22 +2,22 @@
|
||||
// Distributed under the MIT software license, see the accompanying
|
||||
// file COPYING or http://www.opensource.org/licenses/mit-license.php.
|
||||
|
||||
#include "rpc/server.h"
|
||||
#include <rpc/server.h>
|
||||
|
||||
#include "chainparams.h"
|
||||
#include "clientversion.h"
|
||||
#include "main.h"
|
||||
#include "net.h"
|
||||
#include "netbase.h"
|
||||
#include "protocol.h"
|
||||
#include "sync.h"
|
||||
#include "timedata.h"
|
||||
#include "ui_interface.h"
|
||||
#include "util.h"
|
||||
#include "utilstrencodings.h"
|
||||
#include "version.h"
|
||||
|
||||
#include <boost/foreach.hpp>
|
||||
#include <chainparams.h>
|
||||
#include <clientversion.h>
|
||||
#include <main.h>
|
||||
#include <miner.h>
|
||||
#include <net.h>
|
||||
#include <netbase.h>
|
||||
#include <rpc/protocol.h>
|
||||
#include <sync.h>
|
||||
#include <timedata.h>
|
||||
#include <ui_interface.h>
|
||||
#include <util.h>
|
||||
#include <utilstrencodings.h>
|
||||
#include <version.h>
|
||||
#include <wallet/wallet.h>
|
||||
|
||||
#include <univalue.h>
|
||||
|
||||
@@ -57,7 +57,7 @@ UniValue ping(const UniValue& params, bool fHelp)
|
||||
// Request that each node send a ping during next message processing pass
|
||||
LOCK2(cs_main, cs_vNodes);
|
||||
|
||||
BOOST_FOREACH(CNode* pNode, vNodes) {
|
||||
for(CNode* pNode: vNodes) {
|
||||
pNode->fPingQueued = true;
|
||||
}
|
||||
|
||||
@@ -70,7 +70,7 @@ static void CopyNodeStats(std::vector<CNodeStats>& vstats)
|
||||
|
||||
LOCK(cs_vNodes);
|
||||
vstats.reserve(vNodes.size());
|
||||
BOOST_FOREACH(CNode* pnode, vNodes) {
|
||||
for(CNode* pnode: vNodes) {
|
||||
CNodeStats stats;
|
||||
pnode->copyStats(stats);
|
||||
vstats.push_back(stats);
|
||||
@@ -134,7 +134,7 @@ UniValue getpeerinfo(const UniValue& params, bool fHelp)
|
||||
|
||||
UniValue ret(UniValue::VARR);
|
||||
|
||||
BOOST_FOREACH(const CNodeStats& stats, vstats) {
|
||||
for(const CNodeStats& stats: vstats) {
|
||||
UniValue obj(UniValue::VOBJ);
|
||||
CNodeStateStats statestats;
|
||||
bool fStateStats = GetNodeStateStats(stats.nodeid, statestats);
|
||||
@@ -168,7 +168,7 @@ UniValue getpeerinfo(const UniValue& params, bool fHelp)
|
||||
obj.push_back(Pair("synced_headers", statestats.nSyncHeight));
|
||||
obj.push_back(Pair("synced_blocks", statestats.nCommonHeight));
|
||||
UniValue heights(UniValue::VARR);
|
||||
BOOST_FOREACH(int height, statestats.vHeightInFlight) {
|
||||
for(int height: statestats.vHeightInFlight) {
|
||||
heights.push_back(height);
|
||||
}
|
||||
obj.push_back(Pair("inflight", heights));
|
||||
@@ -176,14 +176,14 @@ UniValue getpeerinfo(const UniValue& params, bool fHelp)
|
||||
obj.push_back(Pair("whitelisted", stats.fWhitelisted));
|
||||
|
||||
UniValue sendPerMsgCmd(UniValue::VOBJ);
|
||||
BOOST_FOREACH(const mapMsgCmdSize::value_type &i, stats.mapSendBytesPerMsgCmd) {
|
||||
for(const mapMsgCmdSize::value_type &i: stats.mapSendBytesPerMsgCmd) {
|
||||
if (i.second > 0)
|
||||
sendPerMsgCmd.push_back(Pair(i.first, i.second));
|
||||
}
|
||||
obj.push_back(Pair("bytessent_per_msg", sendPerMsgCmd));
|
||||
|
||||
UniValue recvPerMsgCmd(UniValue::VOBJ);
|
||||
BOOST_FOREACH(const mapMsgCmdSize::value_type &i, stats.mapRecvBytesPerMsgCmd) {
|
||||
for(const mapMsgCmdSize::value_type &i: stats.mapRecvBytesPerMsgCmd) {
|
||||
if (i.second > 0)
|
||||
recvPerMsgCmd.push_back(Pair(i.first, i.second));
|
||||
}
|
||||
@@ -210,8 +210,8 @@ UniValue addnode(const UniValue& params, bool fHelp)
|
||||
"1. \"node\" (string, required) The node (see getpeerinfo for nodes)\n"
|
||||
"2. \"command\" (string, required) 'add' to add a node to the list, 'remove' to remove a node from the list, 'onetry' to try a connection to the node once\n"
|
||||
"\nExamples:\n"
|
||||
+ HelpExampleCli("addnode", "\"192.168.0.6:8333\" \"onetry\"")
|
||||
+ HelpExampleRpc("addnode", "\"192.168.0.6:8333\", \"onetry\"")
|
||||
+ HelpExampleCli("addnode", "\"192.168.0.6:15714\" \"onetry\"")
|
||||
+ HelpExampleRpc("addnode", "\"192.168.0.6:15714\", \"onetry\"")
|
||||
);
|
||||
|
||||
string strNode = params[0].get_str();
|
||||
@@ -219,7 +219,7 @@ UniValue addnode(const UniValue& params, bool fHelp)
|
||||
if (strCommand == "onetry")
|
||||
{
|
||||
CAddress addr;
|
||||
OpenNetworkConnection(addr, false, NULL, strNode.c_str());
|
||||
OpenNetworkConnection(addr, false, nullptr, strNode.c_str());
|
||||
return NullUniValue;
|
||||
}
|
||||
|
||||
@@ -254,12 +254,12 @@ UniValue disconnectnode(const UniValue& params, bool fHelp)
|
||||
"\nArguments:\n"
|
||||
"1. \"node\" (string, required) The node (see getpeerinfo for nodes)\n"
|
||||
"\nExamples:\n"
|
||||
+ HelpExampleCli("disconnectnode", "\"192.168.0.6:8333\"")
|
||||
+ HelpExampleRpc("disconnectnode", "\"192.168.0.6:8333\"")
|
||||
+ HelpExampleCli("disconnectnode", "\"192.168.0.6:15714\"")
|
||||
+ HelpExampleRpc("disconnectnode", "\"192.168.0.6:15714\"")
|
||||
);
|
||||
|
||||
CNode* pNode = FindNode(params[0].get_str());
|
||||
if (pNode == NULL)
|
||||
if (pNode == nullptr)
|
||||
throw JSONRPCError(RPC_CLIENT_NODE_NOT_CONNECTED, "Node not found in connected nodes");
|
||||
|
||||
pNode->fDisconnect = true;
|
||||
@@ -284,7 +284,7 @@ UniValue getaddednodeinfo(const UniValue& params, bool fHelp)
|
||||
" \"connected\" : true|false, (boolean) If connected\n"
|
||||
" \"addresses\" : [ (list of objects) Only when connected = true\n"
|
||||
" {\n"
|
||||
" \"address\" : \"192.168.0.201:8333\", (string) The blackcoin server IP and port we're connected to\n"
|
||||
" \"address\" : \"192.168.0.201:15714\", (string) The blackcoin server IP and port we're connected to\n"
|
||||
" \"connected\" : \"outbound\" (string) connection, inbound or outbound\n"
|
||||
" }\n"
|
||||
" ]\n"
|
||||
@@ -452,7 +452,7 @@ UniValue getnetworkinfo(const UniValue& params, bool fHelp)
|
||||
UniValue localAddresses(UniValue::VARR);
|
||||
{
|
||||
LOCK(cs_mapLocalHost);
|
||||
BOOST_FOREACH(const PAIRTYPE(CNetAddr, LocalServiceInfo) &item, mapLocalHost)
|
||||
for(const PAIRTYPE(CNetAddr, LocalServiceInfo) &item: mapLocalHost)
|
||||
{
|
||||
UniValue rec(UniValue::VOBJ);
|
||||
rec.push_back(Pair("address", item.first.ToString()));
|
||||
|
||||
@@ -3,14 +3,14 @@
|
||||
// Distributed under the MIT software license, see the accompanying
|
||||
// file COPYING or http://www.opensource.org/licenses/mit-license.php.
|
||||
|
||||
#include "rpc/protocol.h"
|
||||
#include <rpc/protocol.h>
|
||||
|
||||
#include "random.h"
|
||||
#include "tinyformat.h"
|
||||
#include "util.h"
|
||||
#include "utilstrencodings.h"
|
||||
#include "utiltime.h"
|
||||
#include "version.h"
|
||||
#include <random.h>
|
||||
#include <tinyformat.h>
|
||||
#include <util.h>
|
||||
#include <utilstrencodings.h>
|
||||
#include <utiltime.h>
|
||||
#include <version.h>
|
||||
|
||||
#include <stdint.h>
|
||||
#include <fstream>
|
||||
@@ -18,10 +18,10 @@
|
||||
using namespace std;
|
||||
|
||||
/**
|
||||
* JSON-RPC protocol. Bitcoin speaks version 1.0 for maximum compatibility,
|
||||
* JSON-RPC protocol. Blackcoin speaks version 1.0 for maximum compatibility,
|
||||
* but uses JSON-RPC 1.1/2.0 standards for parts of the 1.0 standard that were
|
||||
* unspecified (HTTP errors and contents of 'error').
|
||||
*
|
||||
*
|
||||
* 1.0 spec: http://json-rpc.org/wiki/specification
|
||||
* 1.2 spec: http://jsonrpc.org/historical/json-rpc-over-http.html
|
||||
*/
|
||||
|
||||
@@ -27,7 +27,7 @@ enum HTTPStatusCode
|
||||
HTTP_SERVICE_UNAVAILABLE = 503,
|
||||
};
|
||||
|
||||
//! Bitcoin RPC error codes
|
||||
//! Blackcoin RPC error codes
|
||||
enum RPCErrorCode
|
||||
{
|
||||
//! Standard JSON-RPC 2.0 errors
|
||||
@@ -38,18 +38,18 @@ enum RPCErrorCode
|
||||
RPC_PARSE_ERROR = -32700,
|
||||
|
||||
//! General application defined errors
|
||||
RPC_MISC_ERROR = -1, //!< std::exception thrown in command handling
|
||||
RPC_FORBIDDEN_BY_SAFE_MODE = -2, //!< Server is in safe mode, and command is not allowed in safe mode
|
||||
RPC_TYPE_ERROR = -3, //!< Unexpected type was passed as parameter
|
||||
RPC_INVALID_ADDRESS_OR_KEY = -5, //!< Invalid address or key
|
||||
RPC_OUT_OF_MEMORY = -7, //!< Ran out of memory during operation
|
||||
RPC_INVALID_PARAMETER = -8, //!< Invalid, missing or duplicate parameter
|
||||
RPC_DATABASE_ERROR = -20, //!< Database error
|
||||
RPC_DESERIALIZATION_ERROR = -22, //!< Error parsing or validating structure in raw format
|
||||
RPC_VERIFY_ERROR = -25, //!< General error during transaction or block submission
|
||||
RPC_VERIFY_REJECTED = -26, //!< Transaction or block was rejected by network rules
|
||||
RPC_VERIFY_ALREADY_IN_CHAIN = -27, //!< Transaction already in chain
|
||||
RPC_IN_WARMUP = -28, //!< Client still warming up
|
||||
RPC_MISC_ERROR = -1, //! std::exception thrown in command handling
|
||||
RPC_FORBIDDEN_BY_SAFE_MODE = -2, //! Server is in safe mode, and command is not allowed in safe mode
|
||||
RPC_TYPE_ERROR = -3, //! Unexpected type was passed as parameter
|
||||
RPC_INVALID_ADDRESS_OR_KEY = -5, //! Invalid address or key
|
||||
RPC_OUT_OF_MEMORY = -7, //! Ran out of memory during operation
|
||||
RPC_INVALID_PARAMETER = -8, //! Invalid, missing or duplicate parameter
|
||||
RPC_DATABASE_ERROR = -20, //! Database error
|
||||
RPC_DESERIALIZATION_ERROR = -22, //! Error parsing or validating structure in raw format
|
||||
RPC_VERIFY_ERROR = -25, //! General error during transaction or block submission
|
||||
RPC_VERIFY_REJECTED = -26, //! Transaction or block was rejected by network rules
|
||||
RPC_VERIFY_ALREADY_IN_CHAIN = -27, //! Transaction already in chain
|
||||
RPC_IN_WARMUP = -28, //! Client still warming up
|
||||
|
||||
//! Aliases for backward compatibility
|
||||
RPC_TRANSACTION_ERROR = RPC_VERIFY_ERROR,
|
||||
@@ -57,23 +57,23 @@ enum RPCErrorCode
|
||||
RPC_TRANSACTION_ALREADY_IN_CHAIN= RPC_VERIFY_ALREADY_IN_CHAIN,
|
||||
|
||||
//! P2P client errors
|
||||
RPC_CLIENT_NOT_CONNECTED = -9, //!< Bitcoin is not connected
|
||||
RPC_CLIENT_IN_INITIAL_DOWNLOAD = -10, //!< Still downloading initial blocks
|
||||
RPC_CLIENT_NODE_ALREADY_ADDED = -23, //!< Node is already added
|
||||
RPC_CLIENT_NODE_NOT_ADDED = -24, //!< Node has not been added before
|
||||
RPC_CLIENT_NODE_NOT_CONNECTED = -29, //!< Node to disconnect not found in connected nodes
|
||||
RPC_CLIENT_INVALID_IP_OR_SUBNET = -30, //!< Invalid IP/Subnet
|
||||
RPC_CLIENT_NOT_CONNECTED = -9, //! NavCoin is not connected
|
||||
RPC_CLIENT_IN_INITIAL_DOWNLOAD = -10, //! Still downloading initial blocks
|
||||
RPC_CLIENT_NODE_ALREADY_ADDED = -23, //! Node is already added
|
||||
RPC_CLIENT_NODE_NOT_ADDED = -24, //! Node has not been added before
|
||||
RPC_CLIENT_NODE_NOT_CONNECTED = -29, //! Node to disconnect not found in connected nodes
|
||||
RPC_CLIENT_INVALID_IP_OR_SUBNET = -30, //! Invalid IP/Subnet
|
||||
|
||||
//! Wallet errors
|
||||
RPC_WALLET_ERROR = -4, //!< Unspecified problem with wallet (key not found etc.)
|
||||
RPC_WALLET_INSUFFICIENT_FUNDS = -6, //!< Not enough funds in wallet or account
|
||||
RPC_WALLET_INVALID_ACCOUNT_NAME = -11, //!< Invalid account name
|
||||
RPC_WALLET_KEYPOOL_RAN_OUT = -12, //!< Keypool ran out, call keypoolrefill first
|
||||
RPC_WALLET_UNLOCK_NEEDED = -13, //!< Enter the wallet passphrase with walletpassphrase first
|
||||
RPC_WALLET_PASSPHRASE_INCORRECT = -14, //!< The wallet passphrase entered was incorrect
|
||||
RPC_WALLET_WRONG_ENC_STATE = -15, //!< Command given in wrong wallet encryption state (encrypting an encrypted wallet etc.)
|
||||
RPC_WALLET_ENCRYPTION_FAILED = -16, //!< Failed to encrypt the wallet
|
||||
RPC_WALLET_ALREADY_UNLOCKED = -17, //!< Wallet is already unlocked
|
||||
RPC_WALLET_ERROR = -4, //! Unspecified problem with wallet (key not found etc.)
|
||||
RPC_WALLET_INSUFFICIENT_FUNDS = -6, //! Not enough funds in wallet or account
|
||||
RPC_WALLET_INVALID_ACCOUNT_NAME = -11, //! Invalid account name
|
||||
RPC_WALLET_KEYPOOL_RAN_OUT = -12, //! Keypool ran out, call keypoolrefill first
|
||||
RPC_WALLET_UNLOCK_NEEDED = -13, //! Enter the wallet passphrase with walletpassphrase first
|
||||
RPC_WALLET_PASSPHRASE_INCORRECT = -14, //! The wallet passphrase entered was incorrect
|
||||
RPC_WALLET_WRONG_ENC_STATE = -15, //! Command given in wrong wallet encryption state (encrypting an encrypted wallet etc.)
|
||||
RPC_WALLET_ENCRYPTION_FAILED = -16, //! Failed to encrypt the wallet
|
||||
RPC_WALLET_ALREADY_UNLOCKED = -17, //! Wallet is already unlocked
|
||||
};
|
||||
|
||||
std::string JSONRPCRequest(const std::string& strMethod, const UniValue& params, const UniValue& id);
|
||||
|
||||
@@ -3,30 +3,30 @@
|
||||
// Distributed under the MIT software license, see the accompanying
|
||||
// file COPYING or http://www.opensource.org/licenses/mit-license.php.
|
||||
|
||||
#include "base58.h"
|
||||
#include "chain.h"
|
||||
#include "coins.h"
|
||||
#include "consensus/validation.h"
|
||||
#include "core_io.h"
|
||||
#include "dstencode.h"
|
||||
#include "init.h"
|
||||
#include "keystore.h"
|
||||
#include "main.h"
|
||||
#include "merkleblock.h"
|
||||
#include "net.h"
|
||||
#include "policy/policy.h"
|
||||
#include "primitives/transaction.h"
|
||||
#include "rpc/server.h"
|
||||
#include "script/script.h"
|
||||
#include "script/script_error.h"
|
||||
#include "script/sign.h"
|
||||
#include "script/standard.h"
|
||||
#include "timedata.h"
|
||||
#include "txmempool.h"
|
||||
#include "uint256.h"
|
||||
#include "utilstrencodings.h"
|
||||
#include <base58.h>
|
||||
#include <chain.h>
|
||||
#include <coins.h>
|
||||
#include <consensus/validation.h>
|
||||
#include <core_io.h>
|
||||
#include <dstencode.h>
|
||||
#include <init.h>
|
||||
#include <keystore.h>
|
||||
#include <main.h>
|
||||
#include <merkleblock.h>
|
||||
#include <net.h>
|
||||
#include <policy/policy.h>
|
||||
#include <primitives/transaction.h>
|
||||
#include <rpc/server.h>
|
||||
#include <script/script.h>
|
||||
#include <script/script_error.h>
|
||||
#include <script/sign.h>
|
||||
#include <script/standard.h>
|
||||
#include <timedata.h>
|
||||
#include <txmempool.h>
|
||||
#include <uint256.h>
|
||||
#include <utilstrencodings.h>
|
||||
#ifdef ENABLE_WALLET
|
||||
#include "wallet/wallet.h"
|
||||
#include <wallet/wallet.h>
|
||||
#endif
|
||||
|
||||
#include <stdint.h>
|
||||
@@ -194,6 +194,7 @@ UniValue getrawtransaction(const UniValue& params, bool fHelp)
|
||||
fVerbose = (params[1].get_int() != 0);
|
||||
|
||||
CTransaction tx;
|
||||
|
||||
uint256 hashBlock;
|
||||
if (!GetTransaction(hash, tx, Params().GetConsensus(), hashBlock, true))
|
||||
throw JSONRPCError(RPC_INVALID_ADDRESS_OR_KEY, "No information available about transaction");
|
||||
@@ -247,7 +248,7 @@ UniValue gettxoutproof(const UniValue& params, bool fHelp)
|
||||
|
||||
LOCK(cs_main);
|
||||
|
||||
CBlockIndex* pblockindex = NULL;
|
||||
CBlockIndex* pblockindex = nullptr;
|
||||
|
||||
uint256 hashBlock;
|
||||
if (params.size() > 1)
|
||||
@@ -262,7 +263,7 @@ UniValue gettxoutproof(const UniValue& params, bool fHelp)
|
||||
pblockindex = chainActive[coins.nHeight];
|
||||
}
|
||||
|
||||
if (pblockindex == NULL)
|
||||
if (pblockindex == nullptr)
|
||||
{
|
||||
CTransaction tx;
|
||||
if (!GetTransaction(oneTxid, tx, Params().GetConsensus(), hashBlock, false) || hashBlock.IsNull())
|
||||
@@ -277,7 +278,7 @@ UniValue gettxoutproof(const UniValue& params, bool fHelp)
|
||||
throw JSONRPCError(RPC_INTERNAL_ERROR, "Can't read block from disk");
|
||||
|
||||
unsigned int ntxFound = 0;
|
||||
BOOST_FOREACH(const CTransaction&tx, block.vtx)
|
||||
for(const CTransaction&tx: block.vtx)
|
||||
if (setTxids.count(tx.GetHash()))
|
||||
ntxFound++;
|
||||
if (ntxFound != setTxids.size())
|
||||
@@ -319,7 +320,7 @@ UniValue verifytxoutproof(const UniValue& params, bool fHelp)
|
||||
if (!mapBlockIndex.count(merkleBlock.header.GetHash()) || !chainActive.Contains(mapBlockIndex[merkleBlock.header.GetHash()]))
|
||||
throw JSONRPCError(RPC_INVALID_ADDRESS_OR_KEY, "Block not found in chain");
|
||||
|
||||
BOOST_FOREACH(const uint256& hash, vMatch)
|
||||
for(const uint256& hash: vMatch)
|
||||
res.push_back(hash.GetHex());
|
||||
return res;
|
||||
}
|
||||
@@ -482,7 +483,7 @@ UniValue decoderawtransaction(const UniValue& params, bool fHelp)
|
||||
" \"reqSigs\" : n, (numeric) The required sigs\n"
|
||||
" \"type\" : \"pubkeyhash\", (string) The type, eg 'pubkeyhash'\n"
|
||||
" \"addresses\" : [ (json array of string)\n"
|
||||
" \"12tvKAXCxZjSmdNbao16dKXC8tRWfcF5oc\" (string) bitcoin address\n"
|
||||
" \"B2tvKAXCxZjSmdNbao16dKXC8tRWfcF5oc\" (string) blackcoin address\n"
|
||||
" ,...\n"
|
||||
" ]\n"
|
||||
" }\n"
|
||||
@@ -525,7 +526,7 @@ UniValue decodescript(const UniValue& params, bool fHelp)
|
||||
" \"type\":\"type\", (string) The output type\n"
|
||||
" \"reqSigs\": n, (numeric) The required signatures\n"
|
||||
" \"addresses\": [ (json array of string)\n"
|
||||
" \"address\" (string) bitcoin address\n"
|
||||
" \"address\" (string) blackcoin address\n"
|
||||
" ,...\n"
|
||||
" ],\n"
|
||||
" \"p2sh\",\"address\" (string) address of P2SH script wrapping this redeem script (not returned if the script is already a P2SH).\n"
|
||||
@@ -648,7 +649,7 @@ UniValue signrawtransaction(const UniValue& params, bool fHelp)
|
||||
);
|
||||
|
||||
#ifdef ENABLE_WALLET
|
||||
LOCK2(cs_main, pwalletMain ? &pwalletMain->cs_wallet : NULL);
|
||||
LOCK2(cs_main, pwalletMain ? &pwalletMain->cs_wallet : nullptr);
|
||||
#else
|
||||
LOCK(cs_main);
|
||||
#endif
|
||||
@@ -684,7 +685,7 @@ UniValue signrawtransaction(const UniValue& params, bool fHelp)
|
||||
CCoinsViewMemPool viewMempool(&viewChain, mempool);
|
||||
view.SetBackend(viewMempool); // temporarily switch cache backend to db+mempool view
|
||||
|
||||
BOOST_FOREACH(const CTxIn& txin, mergedTx.vin) {
|
||||
for(const CTxIn& txin: mergedTx.vin) {
|
||||
const uint256& prevHash = txin.prevout.hash;
|
||||
CCoins coins;
|
||||
view.AccessCoins(prevHash); // this is certainly allowed to fail
|
||||
@@ -827,7 +828,7 @@ UniValue signrawtransaction(const UniValue& params, bool fHelp)
|
||||
ProduceSignature(MutableTransactionSignatureCreator(&keystore, &mergedTx, i, amount, nHashType), prevPubKey, sigdata);
|
||||
|
||||
// ... and merge in other signatures:
|
||||
BOOST_FOREACH(const CMutableTransaction& txv, txVariants) {
|
||||
for(const CMutableTransaction& txv: txVariants) {
|
||||
if (txv.vin.size() > i) {
|
||||
sigdata = CombineSignatures(prevPubKey, TransactionSignatureChecker(&txConst, i, amount), sigdata, DataFromTransaction(txv, i));
|
||||
}
|
||||
@@ -923,7 +924,7 @@ static const CRPCCommand commands[] =
|
||||
{ "rawtransactions", "decodescript", &decodescript, true },
|
||||
{ "rawtransactions", "sendrawtransaction", &sendrawtransaction, false },
|
||||
{ "rawtransactions", "signrawtransaction", &signrawtransaction, false }, /* uses wallet if enabled */
|
||||
{ "rawtransactions", "getnormalizedtxid", &getnormalizedtxid, true },
|
||||
{ "rawtransactions", "getnormalizedtxid", &getnormalizedtxid, true },
|
||||
|
||||
{ "blockchain", "gettxoutproof", &gettxoutproof, true },
|
||||
{ "blockchain", "verifytxoutproof", &verifytxoutproof, true },
|
||||
|
||||
Reference in New Issue
Block a user