"getmininginfo\n"
"Returns an object containing mining-related information.");
+ double dStakeKernelsTriedAvg = 0;
+ int nPoWInterval = 72, nPoSInterval = 72, nStakesHandled = 0, nStakesTime = 0;
+ int64 nTargetSpacingWorkMin = 30, nTargetSpacingWork = 30;
+
+ CBlockIndex* pindex = pindexGenesisBlock;
+ CBlockIndex* pindexPrevWork = pindexGenesisBlock;
+ CBlockIndex* pindexPrevStake = NULL;
+
+ 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;
+ }
+
+
+ pindex = pindexBest;
+
+ while (pindex && nStakesHandled < nPoSInterval)
+ {
+ if (pindex->IsProofOfStake())
+ {
+ dStakeKernelsTriedAvg += GetDifficulty(pindex) * 4294967296;
+ nStakesTime += pindexPrevStake ? (pindexPrevStake->nTime - pindex->nTime) : 0;
+ pindexPrevStake = pindex;
+ nStakesHandled++;
+ }
+
+ pindex = pindex->pprev;
+ }
+
+ double dNetworkMhps = GetDifficulty() * 4294.967296 / nTargetSpacingWork;
+ double dNetworkWeight = dStakeKernelsTriedAvg / nStakesTime;
+
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("blockvalue", (uint64_t)GetProofOfWorkReward(GetLastBlockIndex(pindexBest, false)->nBits)));
+ obj.push_back(Pair("netmhashps", dNetworkMhps));
+ obj.push_back(Pair("netstakeweight", dNetworkWeight));
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)));
+ obj.push_back(Pair("stakeweight", (uint64_t)pwalletMain->GetStakeWeight(*pwalletMain, STAKE_NORMAL)));
+ obj.push_back(Pair("minweight", (uint64_t)pwalletMain->GetStakeWeight(*pwalletMain, STAKE_MINWEIGHT)));
+ obj.push_back(Pair("maxweight", (uint64_t)pwalletMain->GetStakeWeight(*pwalletMain, STAKE_MAXWEIGHT)));
+ obj.push_back(Pair("stakeinterest", (uint64_t)GetProofOfStakeReward(0, GetLastBlockIndex(pindexBest, true)->nBits, GetLastBlockIndex(pindexBest, true)->nTime, true)));
obj.push_back(Pair("testnet", fTestNet));
return obj;
}