fork_interval_tests.cpp raw
1 // Copyright (c) 2025 The Limenka developers
2 // Distributed under the MIT software license, see the accompanying
3 // file COPYING or http://www.opensource.org/licenses/mit-license.php.
4
5 #include <test/fork_util.h>
6
7 #include <consensus/consensus.h>
8 #include <consensus/params.h>
9 #include <primitives/block.h>
10
11 #include <boost/test/unit_test.hpp>
12
13 BOOST_FIXTURE_TEST_SUITE(fork_interval_tests, ForkTestingSetup)
14
15 BOOST_AUTO_TEST_CASE(fork_interval_target)
16 {
17 const auto& p = ForkConsensus();
18 BOOST_CHECK_EQUAL(p.nForkIntervalTarget, 617);
19 }
20
21 BOOST_AUTO_TEST_CASE(fork_block_subsidy)
22 {
23 const int halving_interval = 210000;
24 int64_t agg_seconds = 0;
25
26 // Time-proportional reward at the full interval: 50 BTC coinbase.
27 CAmount sub = GetForkBlockSubsidy(600, agg_seconds, halving_interval);
28 BOOST_CHECK_EQUAL(sub, 50 * COIN);
29
30 // Post-halving: after 4 years of aggregate seconds.
31 agg_seconds = 600LL * halving_interval + 1;
32 CAmount sub_halved = GetForkBlockSubsidy(600, agg_seconds, halving_interval);
33 BOOST_CHECK_EQUAL(sub_halved, sub / 2);
34
35 // Second halving.
36 agg_seconds = 600LL * halving_interval * 2 + 1;
37 CAmount sub_quarter = GetForkBlockSubsidy(600, agg_seconds, halving_interval);
38 BOOST_CHECK_EQUAL(sub_quarter, sub / 4);
39 }
40
41 BOOST_AUTO_TEST_CASE(fork_block_weight_limit)
42 {
43 // Fork blocks have no fixed weight cap (time-proportional payload).
44 BOOST_CHECK_GT(MAX_BLOCK_WEIGHT, 0);
45 BOOST_CHECK_LE(MAX_BLOCK_WEIGHT, int64_t(4'000'000));
46 }
47
48 BOOST_AUTO_TEST_SUITE_END()
49