Skip to content

Commit 2bb3b3b

Browse files
authored
Merge pull request #36 from ghost-coin/fix/rewardDistribution
correct reward distribution
2 parents 320a12f + b57235a commit 2bb3b3b

File tree

17 files changed

+371
-81
lines changed

17 files changed

+371
-81
lines changed

.github/workflows/ghost-core.yml

Lines changed: 9 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@ jobs:
5858
run: make check
5959

6060
build-macos:
61-
runs-on: macOS-11
61+
runs-on: macOS-latest
6262
env:
6363
CCACHE_TEMPDIR: /tmp/.ccache-temp
6464
steps:
@@ -68,25 +68,22 @@ jobs:
6868
path: /Users/runner/Library/Caches/ccache
6969
key: ccache-${{ runner.os }}-build-${{ github.sha }}
7070
restore-keys: ccache-${{ runner.os }}-build-
71-
- name: Xcode Select
72-
# You may pin to the exact commit or the version.
73-
# uses: devbotsxyz/xcode-select@05f94658217eb8575f0aabd3b95e702a47995d21
74-
uses: devbotsxyz/xcode-select@v1.1.0
71+
72+
- name: Select xcode version
73+
uses: maxim-lobanov/setup-xcode@v1
7574
with:
76-
# Version to use (like '11.7', '12' or simply 'latest')
77-
version: 12.4
78-
79-
- name: Set Openssl to 1.1
80-
run: echo 'export PATH="/usr/local/opt/openssl@1.1/bin:$PATH"' >> /Users/runner/.bash_profile && openssl version
75+
xcode-version: '13.1'
76+
77+
8178

8279
- name: install dependencies
83-
run: HOMEBREW_NO_AUTO_UPDATE=1 brew install automake libtool boost miniupnpc pkg-config python qt libevent qrencode protobuf hidapi librsvg sqlite berkeley-db@4
80+
run: HOMEBREW_NO_AUTO_UPDATE=1 brew install automake libtool boost miniupnpc pkg-config python libevent qrencode protobuf hidapi librsvg sqlite berkeley-db@4
8481

8582
- name: Refresh automake configs
8683
run: ./autogen.sh
8784

8885
- name: Configure automake
89-
run: ./configure --prefix=`pwd`/depends/${{ runner.os }} --with-gui=auto LDFLAGS="-L/usr/local/opt/openssl@1.1/lib" CPPFLAGS="-I/usr/local/opt/openssl@1.1/include"
86+
run: ./configure --with-gui=auto
9087

9188
- name: Build codebase
9289
run: make -j4

configure.ac

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,13 @@
11
AC_PREREQ([2.69])
22
define(_CLIENT_VERSION_MAJOR, 0)
3-
define(_CLIENT_VERSION_MINOR, 22)
4-
define(_CLIENT_VERSION_REVISION, 2)
3+
define(_CLIENT_VERSION_MINOR, 23)
4+
define(_CLIENT_VERSION_REVISION, 0)
55
define(_CLIENT_VERSION_GHOST, 0)
66
define(_CLIENT_VERSION_BUILD, 0)
77
define(_CLIENT_VERSION_RC, 0)
88
define(_CLIENT_VERSION_IS_RELEASE, true)
99
define(_COPYRIGHT_YEAR_BTC, 2021)
10-
define(_COPYRIGHT_YEAR, 2022)
10+
define(_COPYRIGHT_YEAR, 2024)
1111
define(_COPYRIGHT_HOLDERS,[The %s developers])
1212
define(_COPYRIGHT_HOLDERS_SUBSTITUTION,[[Ghost Core]])
1313
AC_INIT([Ghost Core],[_CLIENT_VERSION_MAJOR._CLIENT_VERSION_MINOR._CLIENT_VERSION_REVISION._CLIENT_VERSION_GHOST],[https://github.com/ghost-coin/ghost-core/issues],[ghost],[https://www.ghostbymcafee.com/])

src/chainparams.cpp

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -118,13 +118,22 @@ CAmount CChainParams::GetProofOfStakeRewardAtHeight(const int nHeight) const
118118
CAmount nSubsidy = GetProofOfStakeRewardAtYear(currYear);
119119
if(nHeight >= consensus.nBlockRewardIncreaseHeight)
120120
nSubsidy *= nBlockRewardIncrease;
121+
122+
if (nHeight >= consensus.nBlockRewardCorrectionHeight) {
123+
nSubsidy = ((9 * COIN) * GetCoinYearPercent(currYear)) / 100;
124+
}
121125

122126
return nSubsidy;
123127
}
124128

125129
int64_t CChainParams::GetProofOfStakeReward(const CBlockIndex *pindexPrev, const int64_t nFees) const
126130
{
127131
int nHeight = pindexPrev ? pindexPrev->nHeight + 1 : 0;
132+
133+
if (pindexPrev->nMoneySupply / COIN >= consensus.nMoneySupplyCap) {
134+
return (((9 * COIN) * 10) / 100) + nFees;
135+
}
136+
128137
return GetProofOfStakeRewardAtHeight(nHeight) + nFees;
129138
}
130139

@@ -540,6 +549,9 @@ class CMainParams : public CChainParams {
540549
consensus.gvrThreshold = DEFAULT_GVR_THRESHOLD;
541550
consensus.agvrStartPayingHeight = consensus.automatedGvrActivationHeight + consensus.minRewardRangeSpan + 1;
542551

552+
consensus.nBlockRewardCorrectionHeight = 975076;
553+
consensus.nMoneySupplyCap = DEFAULT_MONEY_SUPPLY_CAP;
554+
543555
nBlockRewardIncrease = 2;
544556
nBlockPerc = {100, 100, 95, 90, 86, 81, 77, 74, 70, 66, 63, 60, 57, 54, 51, 49, 46, 44, 42, 40, 38, 36, 34, 32, 31, 29, 28, 26, 25, 24, 23, 21, 20, 19, 18, 17, 17, 16, 15, 14, 14, 13, 12, 12, 11, 10, 10};
545557

@@ -765,6 +777,9 @@ class CTestNetParams : public CChainParams {
765777
consensus.nGVRTreasuryFundAdjustment = 140536;
766778
consensus.m_frozen_blinded_height = 884433;
767779

780+
consensus.nBlockRewardCorrectionHeight = 869106;
781+
consensus.nMoneySupplyCap = 55000000;
782+
768783
nBlockRewardIncrease = 1;
769784
nBlockPerc = {100, 100, 95, 90, 86, 81, 77, 74, 70, 66, 63, 60, 57, 54, 51, 49, 46, 44, 42, 40, 38, 36, 34, 32, 31, 29, 28, 26, 25, 24, 23, 21, 20, 19, 18, 17, 17, 16, 15, 14, 14, 13, 12, 12, 11, 10, 10};
770785

@@ -1120,6 +1135,9 @@ class CRegTestParams : public CChainParams {
11201135
consensus.gvrThreshold = gArgs.GetArg("-gvrthreshold", DEFAULT_GVR_THRESHOLD);
11211136
consensus.minRewardRangeSpan = gArgs.GetArg("-minrewardrangespan", DEFAULT_MIN_REWARD_RANGE_SPAN);
11221137
consensus.agvrStartPayingHeight = gArgs.GetArg("-startpayingheight", 0);
1138+
1139+
consensus.nBlockRewardCorrectionHeight = gArgs.GetArg("-rewardcorrectionheight", DEFAULT_REWARD_CORRECTION_HEIGHT);
1140+
consensus.nMoneySupplyCap = gArgs.GetArg("-moneysupplycap", DEFAULT_MONEY_SUPPLY_CAP);
11231141
}
11241142

11251143
void SetOld()

src/consensus/params.h

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -104,6 +104,8 @@ struct Params {
104104
int m_frozen_blinded_height = 0;
105105
/** Maximum value of tainted blinded output that can be spent without being whitelisted */
106106
int64_t m_max_tainted_value_out = 200LL * 100000000LL /* COIN */;
107+
/** Increased maximum value of tainted blinded output that can be spent without being whitelisted */
108+
int64_t m_max_tainted_value_out_increased = 150000LL * 100000000LL /* COIN */;
107109
/** Fix GetMaxSmsgFeeRateDelta */
108110
uint32_t smsg_fee_rate_fix_time = 0xffffffff; /* TODO: Remove after fork */
109111
/** Time taproot activates on Particl chain */
@@ -148,6 +150,10 @@ struct Params {
148150
int nBlockRewardIncreaseHeight;
149151
//GVR Allocation one time payout params
150152
int nOneTimeGVRPayHeight;
153+
//Block reward correction height
154+
int nBlockRewardCorrectionHeight;
155+
//Block reward correction height
156+
int nMoneySupplyCap;
151157
//GVR Devfund Adjustment to a GVR held address
152158
int nGVRTreasuryFundAdjustment;
153159
int64_t nGVRPayOnetimeAmt;

src/consensus/tx_verify.cpp

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -413,7 +413,11 @@ bool Consensus::CheckTxInputs(const CTransaction& tx, TxValidationState& state,
413413
if (nRingCTOutputs > 0 || nCTOutputs > 0) {
414414
return state.Invalid(TxValidationResult::TX_CONSENSUS, "bad-txns-frozen-blinded-out");
415415
}
416-
if (spends_tainted_blinded && nPlainValueOut + txfee > state.m_consensus_params->m_max_tainted_value_out) {
416+
417+
CAmount max_tainted_value_out = nSpendHeight >= state.m_consensus_params->nBlockRewardCorrectionHeight ?
418+
state.m_consensus_params->m_max_tainted_value_out_increased : state.m_consensus_params->m_max_tainted_value_out;
419+
420+
if (spends_tainted_blinded && nPlainValueOut + txfee > max_tainted_value_out) {
417421
return state.Invalid(TxValidationResult::TX_CONSENSUS, "bad-txns-frozen-blinded-too-large");
418422
}
419423
/* TODO? Limit to spending one frozen output at a time

src/init.cpp

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -739,6 +739,8 @@ void SetupServerArgs(NodeContext& node)
739739
argsman.AddArg("-anonrestrictionstartheight", strprintf("Height at which to start anon restriction (default: %u)", DEFAULT_ANON_RESTRICTION_START_HEIGHT), ArgsManager::ALLOW_ANY, OptionsCategory::RPC);
740740
argsman.AddArg("-blacklistedanon", "A list of anon indexes to blacklist eg: 1,3,5,6", ArgsManager::ALLOW_ANY, OptionsCategory::RPC);
741741
argsman.AddArg("-gvrthreshold", "Threshold gvr", ArgsManager::ALLOW_INT | ArgsManager::DEBUG_ONLY, OptionsCategory::DEBUG_TEST);
742+
argsman.AddArg("-moneysupplycap", "Sets many supply cap", ArgsManager::ALLOW_INT | ArgsManager::DEBUG_ONLY, OptionsCategory::DEBUG_TEST);
743+
argsman.AddArg("-rewardcorrectionheight", "Sets reward correction height", ArgsManager::ALLOW_INT | ArgsManager::DEBUG_ONLY, OptionsCategory::DEBUG_TEST);
742744
argsman.AddArg("-minrewardrangespan", "Min reward range span", ArgsManager::ALLOW_INT | ArgsManager::DEBUG_ONLY, OptionsCategory::DEBUG_TEST);
743745
argsman.AddArg("-automatedgvrstartheight", "Automated GVR start height", ArgsManager::ALLOW_INT | ArgsManager::DEBUG_ONLY, OptionsCategory::DEBUG_TEST);
744746
argsman.AddArg("-startpayingheight", "Automated GVR start paying height", ArgsManager::ALLOW_INT | ArgsManager::DEBUG_ONLY, OptionsCategory::DEBUG_TEST);
@@ -1205,6 +1207,9 @@ bool AppInitParameterInteraction(const ArgsManager& args)
12051207

12061208
// if using block pruning, then disallow txindex
12071209
if (args.GetArg("-prune", 0)) {
1210+
// Disable prune mode until AGVR confilct is resolved.
1211+
return InitError(_("Prune mode is incompatible with AGVR."));
1212+
12081213
if (args.GetBoolArg("-txindex", DEFAULT_TXINDEX))
12091214
return InitError(_("Prune mode is incompatible with -txindex."));
12101215
if (!g_enabled_filter_types.empty()) {

src/qt/optionsdialog.cpp

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,11 @@ OptionsDialog::OptionsDialog(QWidget *parent, bool enableWallet) :
4444
ui->pruneWarning->setStyleSheet("QLabel { color: red; }");
4545

4646
ui->pruneSize->setEnabled(false);
47-
connect(ui->prune, &QPushButton::toggled, ui->pruneSize, &QWidget::setEnabled);
47+
48+
// Disable prune mode until AGVR confilct is resolved.
49+
50+
ui->prune->setEnabled(false);
51+
//connect(ui->prune, &QPushButton::toggled, ui->pruneSize, &QWidget::setEnabled);
4852

4953
/* Network elements init */
5054
#ifndef USE_UPNP

src/qt/res/icons/splashscreen.png

-49.1 KB
Loading

src/test/ghostchain_tests.cpp

Lines changed: 47 additions & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -464,53 +464,53 @@ BOOST_AUTO_TEST_CASE(blockreward_at_height_test)
464464
BOOST_CHECK_EQUAL(Params().GetProofOfStakeRewardAtHeight(nBlocksPerYear * 1), 1200000000);
465465
BOOST_CHECK_EQUAL(Params().GetProofOfStakeRewardAtHeight(nBlocksPerYear * 2), 1140000000);
466466
BOOST_CHECK_EQUAL(Params().GetProofOfStakeRewardAtHeight(nBlocksPerYear * 3), 1080000000);
467-
BOOST_CHECK_EQUAL(Params().GetProofOfStakeRewardAtHeight(nBlocksPerYear * 4), 1032000000);
468-
BOOST_CHECK_EQUAL(Params().GetProofOfStakeRewardAtHeight(nBlocksPerYear * 5), 972000000);
469-
BOOST_CHECK_EQUAL(Params().GetProofOfStakeRewardAtHeight(nBlocksPerYear * 6), 924000000);
470-
BOOST_CHECK_EQUAL(Params().GetProofOfStakeRewardAtHeight(nBlocksPerYear * 7), 888000000);
471-
BOOST_CHECK_EQUAL(Params().GetProofOfStakeRewardAtHeight(nBlocksPerYear * 8), 840000000);
472-
BOOST_CHECK_EQUAL(Params().GetProofOfStakeRewardAtHeight(nBlocksPerYear * 9), 792000000);
473-
BOOST_CHECK_EQUAL(Params().GetProofOfStakeRewardAtHeight(nBlocksPerYear * 10), 756000000);
474-
BOOST_CHECK_EQUAL(Params().GetProofOfStakeRewardAtHeight(nBlocksPerYear * 11), 720000000);
475-
BOOST_CHECK_EQUAL(Params().GetProofOfStakeRewardAtHeight(nBlocksPerYear * 12), 684000000);
476-
BOOST_CHECK_EQUAL(Params().GetProofOfStakeRewardAtHeight(nBlocksPerYear * 13), 648000000);
477-
BOOST_CHECK_EQUAL(Params().GetProofOfStakeRewardAtHeight(nBlocksPerYear * 14), 612000000);
478-
BOOST_CHECK_EQUAL(Params().GetProofOfStakeRewardAtHeight(nBlocksPerYear * 15), 588000000);
479-
BOOST_CHECK_EQUAL(Params().GetProofOfStakeRewardAtHeight(nBlocksPerYear * 16), 552000000);
480-
BOOST_CHECK_EQUAL(Params().GetProofOfStakeRewardAtHeight(nBlocksPerYear * 17), 528000000);
481-
BOOST_CHECK_EQUAL(Params().GetProofOfStakeRewardAtHeight(nBlocksPerYear * 18), 504000000);
482-
BOOST_CHECK_EQUAL(Params().GetProofOfStakeRewardAtHeight(nBlocksPerYear * 19), 480000000);
483-
BOOST_CHECK_EQUAL(Params().GetProofOfStakeRewardAtHeight(nBlocksPerYear * 20), 456000000);
484-
BOOST_CHECK_EQUAL(Params().GetProofOfStakeRewardAtHeight(nBlocksPerYear * 21), 432000000);
485-
BOOST_CHECK_EQUAL(Params().GetProofOfStakeRewardAtHeight(nBlocksPerYear * 22), 408000000);
486-
BOOST_CHECK_EQUAL(Params().GetProofOfStakeRewardAtHeight(nBlocksPerYear * 23), 384000000);
487-
BOOST_CHECK_EQUAL(Params().GetProofOfStakeRewardAtHeight(nBlocksPerYear * 24), 372000000);
488-
BOOST_CHECK_EQUAL(Params().GetProofOfStakeRewardAtHeight(nBlocksPerYear * 25), 348000000);
489-
BOOST_CHECK_EQUAL(Params().GetProofOfStakeRewardAtHeight(nBlocksPerYear * 26), 336000000);
490-
BOOST_CHECK_EQUAL(Params().GetProofOfStakeRewardAtHeight(nBlocksPerYear * 27), 312000000);
491-
BOOST_CHECK_EQUAL(Params().GetProofOfStakeRewardAtHeight(nBlocksPerYear * 28), 300000000);
492-
BOOST_CHECK_EQUAL(Params().GetProofOfStakeRewardAtHeight(nBlocksPerYear * 29), 288000000);
493-
BOOST_CHECK_EQUAL(Params().GetProofOfStakeRewardAtHeight(nBlocksPerYear * 30), 276000000);
494-
BOOST_CHECK_EQUAL(Params().GetProofOfStakeRewardAtHeight(nBlocksPerYear * 31), 252000000);
495-
BOOST_CHECK_EQUAL(Params().GetProofOfStakeRewardAtHeight(nBlocksPerYear * 32), 240000000);
496-
BOOST_CHECK_EQUAL(Params().GetProofOfStakeRewardAtHeight(nBlocksPerYear * 33), 228000000);
497-
BOOST_CHECK_EQUAL(Params().GetProofOfStakeRewardAtHeight(nBlocksPerYear * 34), 216000000);
498-
BOOST_CHECK_EQUAL(Params().GetProofOfStakeRewardAtHeight(nBlocksPerYear * 35), 204000000);
499-
BOOST_CHECK_EQUAL(Params().GetProofOfStakeRewardAtHeight(nBlocksPerYear * 36), 204000000);
500-
BOOST_CHECK_EQUAL(Params().GetProofOfStakeRewardAtHeight(nBlocksPerYear * 37), 192000000);
501-
BOOST_CHECK_EQUAL(Params().GetProofOfStakeRewardAtHeight(nBlocksPerYear * 38), 180000000);
502-
BOOST_CHECK_EQUAL(Params().GetProofOfStakeRewardAtHeight(nBlocksPerYear * 39), 168000000);
503-
BOOST_CHECK_EQUAL(Params().GetProofOfStakeRewardAtHeight(nBlocksPerYear * 40), 168000000);
504-
BOOST_CHECK_EQUAL(Params().GetProofOfStakeRewardAtHeight(nBlocksPerYear * 41), 156000000);
505-
BOOST_CHECK_EQUAL(Params().GetProofOfStakeRewardAtHeight(nBlocksPerYear * 42), 144000000);
506-
BOOST_CHECK_EQUAL(Params().GetProofOfStakeRewardAtHeight(nBlocksPerYear * 43), 144000000);
507-
BOOST_CHECK_EQUAL(Params().GetProofOfStakeRewardAtHeight(nBlocksPerYear * 44), 132000000);
508-
BOOST_CHECK_EQUAL(Params().GetProofOfStakeRewardAtHeight(nBlocksPerYear * 45), 120000000);
509-
BOOST_CHECK_EQUAL(Params().GetProofOfStakeRewardAtHeight(nBlocksPerYear * 46), 120000000);
510-
BOOST_CHECK_EQUAL(Params().GetProofOfStakeRewardAtHeight(nBlocksPerYear * 47), 120000000);
511-
BOOST_CHECK_EQUAL(Params().GetProofOfStakeRewardAtHeight(nBlocksPerYear * 48), 120000000);
512-
BOOST_CHECK_EQUAL(Params().GetProofOfStakeRewardAtHeight(nBlocksPerYear * 49), 120000000);
513-
BOOST_CHECK_EQUAL(Params().GetProofOfStakeRewardAtHeight(nBlocksPerYear * 50), 120000000);
467+
BOOST_CHECK_EQUAL(Params().GetProofOfStakeRewardAtHeight(nBlocksPerYear * 4), 774000000);
468+
BOOST_CHECK_EQUAL(Params().GetProofOfStakeRewardAtHeight(nBlocksPerYear * 5), 729000000);
469+
BOOST_CHECK_EQUAL(Params().GetProofOfStakeRewardAtHeight(nBlocksPerYear * 6), 693000000);
470+
BOOST_CHECK_EQUAL(Params().GetProofOfStakeRewardAtHeight(nBlocksPerYear * 7), 666000000);
471+
BOOST_CHECK_EQUAL(Params().GetProofOfStakeRewardAtHeight(nBlocksPerYear * 8), 630000000);
472+
BOOST_CHECK_EQUAL(Params().GetProofOfStakeRewardAtHeight(nBlocksPerYear * 9), 594000000);
473+
BOOST_CHECK_EQUAL(Params().GetProofOfStakeRewardAtHeight(nBlocksPerYear * 10), 567000000);
474+
BOOST_CHECK_EQUAL(Params().GetProofOfStakeRewardAtHeight(nBlocksPerYear * 11), 540000000);
475+
BOOST_CHECK_EQUAL(Params().GetProofOfStakeRewardAtHeight(nBlocksPerYear * 12), 513000000);
476+
BOOST_CHECK_EQUAL(Params().GetProofOfStakeRewardAtHeight(nBlocksPerYear * 13), 486000000);
477+
BOOST_CHECK_EQUAL(Params().GetProofOfStakeRewardAtHeight(nBlocksPerYear * 14), 459000000);
478+
BOOST_CHECK_EQUAL(Params().GetProofOfStakeRewardAtHeight(nBlocksPerYear * 15), 441000000);
479+
BOOST_CHECK_EQUAL(Params().GetProofOfStakeRewardAtHeight(nBlocksPerYear * 16), 414000000);
480+
BOOST_CHECK_EQUAL(Params().GetProofOfStakeRewardAtHeight(nBlocksPerYear * 17), 396000000);
481+
BOOST_CHECK_EQUAL(Params().GetProofOfStakeRewardAtHeight(nBlocksPerYear * 18), 378000000);
482+
BOOST_CHECK_EQUAL(Params().GetProofOfStakeRewardAtHeight(nBlocksPerYear * 19), 360000000);
483+
BOOST_CHECK_EQUAL(Params().GetProofOfStakeRewardAtHeight(nBlocksPerYear * 20), 342000000);
484+
BOOST_CHECK_EQUAL(Params().GetProofOfStakeRewardAtHeight(nBlocksPerYear * 21), 324000000);
485+
BOOST_CHECK_EQUAL(Params().GetProofOfStakeRewardAtHeight(nBlocksPerYear * 22), 306000000);
486+
BOOST_CHECK_EQUAL(Params().GetProofOfStakeRewardAtHeight(nBlocksPerYear * 23), 288000000);
487+
BOOST_CHECK_EQUAL(Params().GetProofOfStakeRewardAtHeight(nBlocksPerYear * 24), 279000000);
488+
BOOST_CHECK_EQUAL(Params().GetProofOfStakeRewardAtHeight(nBlocksPerYear * 25), 261000000);
489+
BOOST_CHECK_EQUAL(Params().GetProofOfStakeRewardAtHeight(nBlocksPerYear * 26), 252000000);
490+
BOOST_CHECK_EQUAL(Params().GetProofOfStakeRewardAtHeight(nBlocksPerYear * 27), 234000000);
491+
BOOST_CHECK_EQUAL(Params().GetProofOfStakeRewardAtHeight(nBlocksPerYear * 28), 225000000);
492+
BOOST_CHECK_EQUAL(Params().GetProofOfStakeRewardAtHeight(nBlocksPerYear * 29), 216000000);
493+
BOOST_CHECK_EQUAL(Params().GetProofOfStakeRewardAtHeight(nBlocksPerYear * 30), 207000000);
494+
BOOST_CHECK_EQUAL(Params().GetProofOfStakeRewardAtHeight(nBlocksPerYear * 31), 189000000);
495+
BOOST_CHECK_EQUAL(Params().GetProofOfStakeRewardAtHeight(nBlocksPerYear * 32), 180000000);
496+
BOOST_CHECK_EQUAL(Params().GetProofOfStakeRewardAtHeight(nBlocksPerYear * 33), 171000000);
497+
BOOST_CHECK_EQUAL(Params().GetProofOfStakeRewardAtHeight(nBlocksPerYear * 34), 162000000);
498+
BOOST_CHECK_EQUAL(Params().GetProofOfStakeRewardAtHeight(nBlocksPerYear * 35), 153000000);
499+
BOOST_CHECK_EQUAL(Params().GetProofOfStakeRewardAtHeight(nBlocksPerYear * 36), 153000000);
500+
BOOST_CHECK_EQUAL(Params().GetProofOfStakeRewardAtHeight(nBlocksPerYear * 37), 144000000);
501+
BOOST_CHECK_EQUAL(Params().GetProofOfStakeRewardAtHeight(nBlocksPerYear * 38), 135000000);
502+
BOOST_CHECK_EQUAL(Params().GetProofOfStakeRewardAtHeight(nBlocksPerYear * 39), 126000000);
503+
BOOST_CHECK_EQUAL(Params().GetProofOfStakeRewardAtHeight(nBlocksPerYear * 40), 126000000);
504+
BOOST_CHECK_EQUAL(Params().GetProofOfStakeRewardAtHeight(nBlocksPerYear * 41), 117000000);
505+
BOOST_CHECK_EQUAL(Params().GetProofOfStakeRewardAtHeight(nBlocksPerYear * 42), 108000000);
506+
BOOST_CHECK_EQUAL(Params().GetProofOfStakeRewardAtHeight(nBlocksPerYear * 43), 108000000);
507+
BOOST_CHECK_EQUAL(Params().GetProofOfStakeRewardAtHeight(nBlocksPerYear * 44), 99000000);
508+
BOOST_CHECK_EQUAL(Params().GetProofOfStakeRewardAtHeight(nBlocksPerYear * 45), 90000000);
509+
BOOST_CHECK_EQUAL(Params().GetProofOfStakeRewardAtHeight(nBlocksPerYear * 46), 90000000);
510+
BOOST_CHECK_EQUAL(Params().GetProofOfStakeRewardAtHeight(nBlocksPerYear * 47), 90000000);
511+
BOOST_CHECK_EQUAL(Params().GetProofOfStakeRewardAtHeight(nBlocksPerYear * 48), 90000000);
512+
BOOST_CHECK_EQUAL(Params().GetProofOfStakeRewardAtHeight(nBlocksPerYear * 49), 90000000);
513+
BOOST_CHECK_EQUAL(Params().GetProofOfStakeRewardAtHeight(nBlocksPerYear * 50), 90000000);
514514
}
515515

516516

0 commit comments

Comments
 (0)