Browse Source

add daily snapshot address to getsnapshot (top = -1)

z_createrawtransaction
blackjok3r 5 years ago
parent
commit
ec185b7226
  1. 3
      src/rpc/misc.cpp
  2. 19
      src/txdb.cpp

3
src/rpc/misc.cpp

@ -1282,7 +1282,8 @@ UniValue getsnapshot(const UniValue& params, bool fHelp)
if (params.size() > 0 && !params[0].isNull()) {
top = atoi(params[0].get_str().c_str());
if (top <= 0)
throw JSONRPCError(RPC_INVALID_PARAMETER, "Invalid parameter, top must be a positive integer");
//throw JSONRPCError(RPC_INVALID_PARAMETER, "Invalid parameter, top must be a positive integer");
top = -1;
}
if ( fHelp || params.size() > 1)

19
src/txdb.cpp

@ -555,6 +555,8 @@ bool CBlockTreeDB::Snapshot2(std::map <std::string, CAmount> &addressAmounts, Un
return true;
}
extern std::vector <std::pair<CAmount, CTxDestination>> vAddressSnapshot;
UniValue CBlockTreeDB::Snapshot(int top)
{
int topN = 0;
@ -564,11 +566,20 @@ UniValue CBlockTreeDB::Snapshot(int top)
UniValue result(UniValue::VOBJ);
UniValue addressesSorted(UniValue::VARR);
result.push_back(Pair("start_time", (int) time(NULL)));
if ( Snapshot2(addressAmounts,&result) )
if ( (vAddressSnapshot.size() > 0 && top < 0) || (Snapshot2(addressAmounts,&result) && top > 0) )
{
for (std::pair<std::string, CAmount> element : addressAmounts)
vaddr.push_back( make_pair(element.second, element.first) );
std::sort(vaddr.rbegin(), vaddr.rend());
if ( top > 0 )
{
for (std::pair<std::string, CAmount> element : addressAmounts)
vaddr.push_back( make_pair(element.second, element.first) );
std::sort(vaddr.rbegin(), vaddr.rend());
}
else
{
for ( auto address : vAddressSnapshot )
vaddr.push_back(make_pair(address.first, CBitcoinAddress(address.second).ToString()));
top = vAddressSnapshot.size();
}
int topN = 0;
for (std::vector<std::pair<CAmount, std::string>>::iterator it = vaddr.begin(); it!=vaddr.end(); ++it)
{

Loading…
Cancel
Save