"getmininginfo\n"
"Returns an object containing mining-related information.");
+ int64 nTargetSpacingWorkMin = 30;
+ int64 nTargetSpacingWork = nTargetSpacingWorkMin;
+ int64 nPoWInterval = 72;
+ int64 nTargetSpacingStake = 10;
+
+ CBlockIndex* pindex = pindexGenesisBlock;
+ CBlockIndex* pindexPrevWork = pindexGenesisBlock;
+
+ while (pindex)
+ {
+ if (pindex->IsProofOfWork())
+ {
+ int64 nActualSpacingWork = pindex->GetBlockTime() - pindexPrevWork->GetBlockTime();
+ nTargetSpacingWork = ((nPoWInterval - 1) * nTargetSpacingWork + nActualSpacingWork + nActualSpacingWork) / (nPoWInterval + 1);
+ nTargetSpacingWork = max(nTargetSpacingWork, nTargetSpacingWorkMin);
+ pindexPrevWork = pindex;
+ }
+
+ pindex = pindex->pnext;
+ }
+
+ double dNetworkMhps = GetDifficulty() * 4294.967296 / nTargetSpacingWork;
+ int nNetworkWeight = GetDifficulty(GetLastBlockIndex(pindexBest, true)) * 4294967296 / nTargetSpacingStake;
+
Object obj;
obj.push_back(Pair("blocks", (int)nBestHeight));
obj.push_back(Pair("currentblocksize",(uint64_t)nLastBlockSize));
obj.push_back(Pair("currentblocktx",(uint64_t)nLastBlockTx));
obj.push_back(Pair("difficulty", (double)GetDifficulty()));
+ obj.push_back(Pair("netmhashps", dNetworkMhps));
+ obj.push_back(Pair("netstakeweight", nNetworkWeight));
obj.push_back(Pair("errors", GetWarnings("statusbar")));
obj.push_back(Pair("pooledtx", (uint64_t)mempool.size()));
obj.push_back(Pair("stakepower", (uint64_t)pwalletMain->GetStakeMintPower(*pwalletMain)));