|
|
|
@ -12,24 +12,28 @@ using namespace json_spirit;
@@ -12,24 +12,28 @@ using namespace json_spirit;
|
|
|
|
|
using namespace std; |
|
|
|
|
|
|
|
|
|
// Litecoin: Return average network hashes per second based on last number of blocks.
|
|
|
|
|
Value GetNetworkHashPS(int lookup) { |
|
|
|
|
if (pindexBest == NULL) |
|
|
|
|
Value GetNetworkHashPS(int lookup, int height) { |
|
|
|
|
CBlockIndex *pb = pindexBest; |
|
|
|
|
|
|
|
|
|
if (height >= 0 && height < nBestHeight) |
|
|
|
|
pb = FindBlockByHeight(height); |
|
|
|
|
|
|
|
|
|
if (pb == NULL || !pb->nHeight) |
|
|
|
|
return 0; |
|
|
|
|
|
|
|
|
|
// If lookup is -1, then use blocks since last difficulty change.
|
|
|
|
|
if (lookup <= 0) |
|
|
|
|
lookup = pindexBest->nHeight % 2016 + 1; |
|
|
|
|
lookup = pb->nHeight % 2016 + 1; |
|
|
|
|
|
|
|
|
|
// If lookup is larger than chain, then set it to chain length.
|
|
|
|
|
if (lookup > pindexBest->nHeight) |
|
|
|
|
lookup = pindexBest->nHeight; |
|
|
|
|
if (lookup > pb->nHeight) |
|
|
|
|
lookup = pb->nHeight; |
|
|
|
|
|
|
|
|
|
CBlockIndex* pindexPrev = pindexBest; |
|
|
|
|
double sum = 0.0; |
|
|
|
|
for (int i = 0; i < lookup; i++) |
|
|
|
|
{ |
|
|
|
|
sum += (pindexPrev->GetBlockTime() - pindexPrev->pprev->GetBlockTime()) / GetDifficulty(pindexPrev); |
|
|
|
|
pindexPrev = pindexPrev->pprev; |
|
|
|
|
sum += (pb->GetBlockTime() - pb->pprev->GetBlockTime()) / GetDifficulty(pb); |
|
|
|
|
pb = pb->pprev; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
return (boost::int64_t)(pow(2.0, 32) / (sum / lookup)); |
|
|
|
@ -37,13 +41,14 @@ Value GetNetworkHashPS(int lookup) {
@@ -37,13 +41,14 @@ Value GetNetworkHashPS(int lookup) {
|
|
|
|
|
|
|
|
|
|
Value getnetworkhashps(const Array& params, bool fHelp) |
|
|
|
|
{ |
|
|
|
|
if (fHelp || params.size() > 1) |
|
|
|
|
if (fHelp || params.size() > 2) |
|
|
|
|
throw runtime_error( |
|
|
|
|
"getnetworkhashps [blocks]\n" |
|
|
|
|
"getnetworkhashps [blocks] [height]\n" |
|
|
|
|
"Returns the estimated network hashes per second based on the last 120 blocks.\n" |
|
|
|
|
"Pass in [blocks] to override # of blocks, -1 specifies since last difficulty change."); |
|
|
|
|
"Pass in [blocks] to override # of blocks, -1 specifies since last difficulty change.\n" |
|
|
|
|
"Pass in [height] to estimate the network speed at the time when a certain block was found."); |
|
|
|
|
|
|
|
|
|
return GetNetworkHashPS(params.size() > 0 ? params[0].get_int() : 120); |
|
|
|
|
return GetNetworkHashPS(params.size() > 0 ? params[0].get_int() : 120, params.size() > 1 ? params[1].get_int() : -1); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
Value getmininginfo(const Array& params, bool fHelp) |
|
|
|
|