#include "main.h"
#include "db.h"
-#include "txdb.h"
+#include "txdb-leveldb.h"
#include "init.h"
#include "miner.h"
#include "kernel.h"
#include "bitcoinrpc.h"
-#include <boost/format.hpp>
-#include <boost/assign/list_of.hpp>
-
using namespace json_spirit;
using namespace std;
" days - time window, 90 days by default.\n"
);
- RPCTypeCheck(params, boost::assign::list_of(obj_type));
+ RPCTypeCheck(params, { obj_type });
Object scanParams = params[0].get_obj();
if (inputs_v.type() == array_type)
{
Array inputs = inputs_v.get_array();
- BOOST_FOREACH(const Value &v_out, inputs)
+ for (const Value &v_out : inputs)
{
int nOut = v_out.get_int();
if (nOut < 0 || nOut > (int)tx.vout.size() - 1)
{
stringstream strErrorMsg;
- strErrorMsg << boost::format("Invalid parameter, input number %d is out of range") % nOut;
+ strErrorMsg << "Invalid parameter, input number " << to_string(nOut) << " is out of range";
throw JSONRPCError(RPC_INVALID_PARAMETER, strErrorMsg.str());
}
if (nOut < 0 || nOut > (int)tx.vout.size() - 1)
{
stringstream strErrorMsg;
- strErrorMsg << boost::format("Invalid parameter, input number %d is out of range") % nOut;
+ strErrorMsg << "Invalid parameter, input number " << to_string(nOut) << " is out of range";
throw JSONRPCError(RPC_INVALID_PARAMETER, strErrorMsg.str());
}
interval.second = interval.first + nDays * nOneDay;
Array results;
- BOOST_FOREACH(const int &nOut, vInputs)
+ for (const int &nOut : vInputs)
{
// Check for spent flag
// It doesn't make sense to scan spent inputs.
std::vector<std::pair<uint256, uint32_t> > result;
if (ScanKernelForward((unsigned char *)&itK[0], nBits, tx.nTime, tx.vout[nOut].nValue, interval, result))
{
- BOOST_FOREACH(const PAIRTYPE(uint256, uint32_t) solution, result)
+ for (const auto &solution : result)
{
Object item;
item.push_back(Pair("nout", nOut));
if (IsInitialBlockDownload())
throw JSONRPCError(-10, "NovaCoin is downloading blocks...");
- typedef map<uint256, pair<CBlock*, CScript> > mapNewBlock_t;
+ typedef map<uint256, pair<shared_ptr<CBlock>, CScript> > mapNewBlock_t;
static mapNewBlock_t mapNewBlock;
- static vector<CBlock*> vNewBlock;
+ static vector<std::shared_ptr<CBlock>> vNewBlock;
static CReserveKey reservekey(pwalletMain);
if (params.size() == 0)
static unsigned int nTransactionsUpdatedLast;
static CBlockIndex* pindexPrev;
static int64_t nStart;
- static CBlock* pblock;
+ static shared_ptr<CBlock> pblock;
if (pindexPrev != pindexBest ||
(nTransactionsUpdated != nTransactionsUpdatedLast && GetTime() - nStart > 60))
{
{
// Deallocate old blocks since they're obsolete now
mapNewBlock.clear();
- BOOST_FOREACH(CBlock* pblock, vNewBlock)
- delete pblock;
vNewBlock.clear();
}
nTransactionsUpdatedLast = nTransactionsUpdated;
Array merkle_arr;
- BOOST_FOREACH(uint256 merkleh, merkle) {
+ for (uint256 merkleh : merkle) {
merkle_arr.push_back(HexStr(BEGIN(merkleh), END(merkleh)));
}
// Get saved block
if (!mapNewBlock.count(pdata->hashMerkleRoot))
return false;
- CBlock* pblock = mapNewBlock[pdata->hashMerkleRoot].first;
+ std::shared_ptr<CBlock> pblock = mapNewBlock[pdata->hashMerkleRoot].first;
pblock->nTime = pdata->nTime;
pblock->nNonce = pdata->nNonce;
if (IsInitialBlockDownload())
throw JSONRPCError(RPC_CLIENT_IN_INITIAL_DOWNLOAD, "NovaCoin is downloading blocks...");
- typedef map<uint256, pair<CBlock*, CScript> > mapNewBlock_t;
+ typedef map<uint256, pair<shared_ptr<CBlock>, CScript> > mapNewBlock_t;
static mapNewBlock_t mapNewBlock; // FIXME: thread safety
- static vector<CBlock*> vNewBlock;
+ static vector<shared_ptr<CBlock>> vNewBlock;
static CReserveKey reservekey(pwalletMain);
if (params.size() == 0)
static unsigned int nTransactionsUpdatedLast;
static CBlockIndex* pindexPrev;
static int64_t nStart;
- static CBlock* pblock;
+ static shared_ptr<CBlock> pblock;
if (pindexPrev != pindexBest ||
(nTransactionsUpdated != nTransactionsUpdatedLast && GetTime() - nStart > 60))
{
{
// Deallocate old blocks since they're obsolete now
mapNewBlock.clear();
- BOOST_FOREACH(CBlock* pblock, vNewBlock)
- delete pblock;
vNewBlock.clear();
}
// Get saved block
if (!mapNewBlock.count(pdata->hashMerkleRoot))
return false;
- CBlock* pblock = mapNewBlock[pdata->hashMerkleRoot].first;
+ std::shared_ptr<CBlock> pblock = mapNewBlock[pdata->hashMerkleRoot].first;
pblock->nTime = pdata->nTime;
pblock->nNonce = pdata->nNonce;
static unsigned int nTransactionsUpdatedLast;
static CBlockIndex* pindexPrev;
static int64_t nStart;
- static CBlock* pblock;
+ static std::shared_ptr<CBlock> pblock;
if (pindexPrev != pindexBest ||
(nTransactionsUpdated != nTransactionsUpdatedLast && GetTime() - nStart > 5))
{
// Create new block
if(pblock)
{
- delete pblock;
- pblock = NULL;
+ pblock.reset();
}
pblock = CreateNewBlock(pwalletMain);
if (!pblock)
map<uint256, int64_t> setTxIndex;
int i = 0;
CTxDB txdb("r");
- BOOST_FOREACH (CTransaction& tx, pblock->vtx)
+ for (CTransaction& tx : pblock->vtx)
{
uint256 txHash = tx.GetHash();
setTxIndex[txHash] = i++;
entry.push_back(Pair("fee", (int64_t)(tx.GetValueIn(mapInputs) - tx.GetValueOut())));
Array deps;
- BOOST_FOREACH (MapPrevTx::value_type& inp, mapInputs)
+ for (MapPrevTx::value_type& inp : mapInputs)
{
if (setTxIndex.count(inp.first))
deps.push_back(setTxIndex[inp.first]);