From 9fd1cee859b0889b816e0bfb5724d7e6c285de5d Mon Sep 17 00:00:00 2001 From: alex Date: Sat, 29 Jun 2013 17:14:36 +0400 Subject: [PATCH] Fix integer division-related issue in stake rewards calculation --- src/main.cpp | 8 ++++++-- 1 files changed, 6 insertions(+), 2 deletions(-) diff --git a/src/main.cpp b/src/main.cpp index fbc785a..9023014 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -996,7 +996,7 @@ int64 GetProofOfWorkReward(unsigned int nBits) // miner's coin stake reward based on nBits and coin age spent (coin-days) int64 GetProofOfStakeReward(int64 nCoinAge, unsigned int nBits, unsigned int nTime, bool bCoinYearOnly) { - int64 nRewardCoinYear; + int64 nRewardCoinYear, nSubsidy; if(fTestNet || nTime > STAKE_SWITCH_TIME) { @@ -1041,7 +1041,11 @@ int64 GetProofOfStakeReward(int64 nCoinAge, unsigned int nBits, unsigned int nTi if(bCoinYearOnly) return nRewardCoinYear; - int64 nSubsidy = nCoinAge * 33 / (365 * 33 + 8) * nRewardCoinYear; + // Fix problem with proof-of-stake rewards calculation since 20 Sep 2013 + if(nTime < CHAINCHECKS_SWITCH_TIME) + nSubsidy = nCoinAge * 33 / (365 * 33 + 8) * nRewardCoinYear; + else + nSubsidy = nCoinAge * nRewardCoinYear * 33 / (365 * 33 + 8); if (fDebug && GetBoolArg("-printcreation")) printf("GetProofOfStakeReward(): create=%s nCoinAge=%"PRI64d" nBits=%d\n", FormatMoney(nSubsidy).c_str(), nCoinAge, nBits); -- 1.7.1