undo attempt at hs/s for staking chains
This commit is contained in:
@@ -59,22 +59,9 @@ arith_uint256 komodo_PoWtarget(int32_t *percPoSp,arith_uint256 target,int32_t he
|
||||
* Return average network hashes per second based on the last 'lookup' blocks,
|
||||
* or over the difficulty averaging window if 'lookup' is nonpositive.
|
||||
* If 'height' is nonnegative, compute the estimate at the time when a given block was found.
|
||||
time =0, lastBlockTime=time_of_last_block, PoWblocks=0
|
||||
for x = 1 to 100
|
||||
get block info
|
||||
if PoS then
|
||||
lastBlockTime = ThisBlockTime
|
||||
next x
|
||||
else
|
||||
PoWblocks += 1
|
||||
some var/array about diff
|
||||
newTime = timeNow - lastBlockTime
|
||||
totalTime = totalTime + newTime
|
||||
lastBlockTime = newTime
|
||||
next x
|
||||
do math of num PoW blocks over PoW active Time with stored diff info
|
||||
*/
|
||||
int64_t GetNetworkHashPS(int lookup, int height) {
|
||||
int64_t GetNetworkHashPS(int lookup, int height)
|
||||
{
|
||||
CBlockIndex *pb = chainActive.LastTip();
|
||||
|
||||
if (height >= 0 && height < chainActive.Height())
|
||||
@@ -93,36 +80,21 @@ int64_t GetNetworkHashPS(int lookup, int height) {
|
||||
|
||||
CBlockIndex *pb0 = pb;
|
||||
int64_t minTime = pb0->GetBlockTime();
|
||||
int64_t timeoffset = 0, n=0,i=0;
|
||||
int64_t maxTime = minTime;
|
||||
for (i = 0; i < lookup; i++) {
|
||||
for (int i = 0; i < lookup; i++) {
|
||||
pb0 = pb0->pprev;
|
||||
// if PoW block save block time, and skip the hash.
|
||||
if ( pb0->segid >= 0 && pb0->segid != -2 )
|
||||
{
|
||||
n++;
|
||||
// only staking chains should ever set this.
|
||||
|
||||
timeoffset += pb0->GetBlockTime() - pb0->pprev->GetBlockTime();
|
||||
//fprintf(stderr, "staking tx.%li segid.%i blocktime.%li\n", n, pb0->segid, (pb0->GetBlockTime() - pb0->pprev->GetBlockTime()));
|
||||
if ( lookup > pb->GetHeight() )
|
||||
break;
|
||||
lookup++;
|
||||
continue;
|
||||
}
|
||||
int64_t time = pb0->GetBlockTime();
|
||||
minTime = std::min(time, minTime);
|
||||
maxTime = std::max(time, maxTime);
|
||||
}
|
||||
//fprintf(stderr, "number blocks scanned.%li\n",i );
|
||||
|
||||
// In case there's a situation where minTime == maxTime, we don't want a divide by zero exception.
|
||||
if (minTime == maxTime)
|
||||
return 0;
|
||||
|
||||
arith_uint256 workDiff = pb->chainPower.chainWork - pb0->chainPower.chainWork;
|
||||
int64_t timeDiff = maxTime - minTime;// - timeoffset;
|
||||
fprintf(stderr, "timediff.%li timeoffset.%li mintime.%li maxtime.%li\n", timeDiff, timeoffset, minTime, maxTime);
|
||||
int64_t timeDiff = maxTime - minTime;
|
||||
|
||||
return (int64_t)(workDiff.getdouble() / timeDiff);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user