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