точность вычислений
[novacoin.git] / src / kernelrecord.cpp
index eb68dd4..8c1d778 100644 (file)
@@ -77,11 +77,14 @@ int64 KernelRecord::getAge() const
 
 double KernelRecord::getProbToMintStake(double difficulty, int timeOffset) const
 {
-    double maxTarget = pow(static_cast<double>(2), 224);
-    double target = maxTarget / difficulty;
-    int dayWeight = (min((GetAdjustedTime() - nTime) + timeOffset, (int64)(nStakeMinAge+nStakeMaxAge)) - nStakeMinAge) / 86400;
-    uint64 coinAge = max(nValue * dayWeight / COIN, (int64)0);
-    return target * coinAge / pow(static_cast<double>(2), 256);
+    //double maxTarget = pow(static_cast<double>(2), 224);
+    //double target = maxTarget / difficulty;
+    //int dayWeight = (min((GetAdjustedTime() - nTime) + timeOffset, (int64)(nStakeMinAge+nStakeMaxAge)) - nStakeMinAge) / 86400;
+    //uint64 coinAge = max(nValue * dayWeight / COIN, (int64)0);
+    //return target * coinAge / pow(static_cast<double>(2), 256);
+    int Weight = (min((GetAdjustedTime() - nTime) + timeOffset, (int64)(nStakeMinAge+nStakeMaxAge)) - nStakeMinAge);
+    uint64 coinAge = max(nValue * Weight / (COIN * 86400), (int64)0);
+    return coinAge / (pow(static_cast<double>(2),32) * difficulty);
 }
 
 double KernelRecord::getProbToMintWithinNMinutes(double difficulty, int minutes)