diff options
| author | Riccardo Spagni <ric@spagni.net> | 2015-11-18 10:37:22 +0200 |
|---|---|---|
| committer | Riccardo Spagni <ric@spagni.net> | 2015-11-18 10:37:27 +0200 |
| commit | 0d09e15a1c0cc02255bf0c091efd3b28bbeb0a9f (patch) | |
| tree | 1947d9588336b76724e9f046d97ede321cafe572 /src/cryptonote_core/cryptonote_basic_impl.cpp | |
| parent | bc7aa988a67f1762a79015c5647aa8d2783be405 (diff) | |
| parent | baf101ef4a05ae4d24ed717c16be929456775969 (diff) | |
| download | monzero-core-0d09e15a1c0cc02255bf0c091efd3b28bbeb0a9f.tar.gz monzero-core-0d09e15a1c0cc02255bf0c091efd3b28bbeb0a9f.tar.xz monzero-core-0d09e15a1c0cc02255bf0c091efd3b28bbeb0a9f.zip | |
Merge pull request #490
baf101e More changes for 2-min blocks Use the correct block time for realtime fuzz on locktime Use the correct block time to calculate next_difficulty on alt chains (will not work as-is with voting) Lock unit tests to original block time for now (Javier Smooth)
4fea1a5 Adjust difficulty target (2 min) and full reward zone (60 kbytes) for block version 2 (Javier Smooth)
Diffstat (limited to 'src/cryptonote_core/cryptonote_basic_impl.cpp')
| -rw-r--r-- | src/cryptonote_core/cryptonote_basic_impl.cpp | 19 |
1 files changed, 13 insertions, 6 deletions
diff --git a/src/cryptonote_core/cryptonote_basic_impl.cpp b/src/cryptonote_core/cryptonote_basic_impl.cpp index bd0b8a304..73e8d8fb9 100644 --- a/src/cryptonote_core/cryptonote_basic_impl.cpp +++ b/src/cryptonote_core/cryptonote_basic_impl.cpp @@ -73,16 +73,23 @@ namespace cryptonote { return CRYPTONOTE_MAX_TX_SIZE; } //----------------------------------------------------------------------------------------------- - bool get_block_reward(size_t median_size, size_t current_block_size, uint64_t already_generated_coins, uint64_t &reward) { - uint64_t base_reward = (MONEY_SUPPLY - already_generated_coins) >> EMISSION_SPEED_FACTOR; - if (base_reward < FINAL_SUBSIDY_PER_MINUTE) + bool get_block_reward(size_t median_size, size_t current_block_size, uint64_t already_generated_coins, uint64_t &reward, uint8_t version) { + static_assert(DIFFICULTY_TARGET%60==0&&DIFFICULTY_TARGET_V1%60==0,"difficulty targets must be a multiple of 60"); + const int target = version < 2 ? DIFFICULTY_TARGET_V1 : DIFFICULTY_TARGET; + const int target_minutes = target / 60; + const int emission_speed_factor = EMISSION_SPEED_FACTOR_PER_MINUTE - (target_minutes-1); + + uint64_t base_reward = (MONEY_SUPPLY - already_generated_coins) >> emission_speed_factor; + if (base_reward < FINAL_SUBSIDY_PER_MINUTE*target_minutes) { - base_reward = FINAL_SUBSIDY_PER_MINUTE; + base_reward = FINAL_SUBSIDY_PER_MINUTE*target_minutes; } + uint64_t full_reward_zone = version < 2 ? CRYPTONOTE_BLOCK_GRANTED_FULL_REWARD_ZONE_V1 : CRYPTONOTE_BLOCK_GRANTED_FULL_REWARD_ZONE; + //make it soft - if (median_size < CRYPTONOTE_BLOCK_GRANTED_FULL_REWARD_ZONE) { - median_size = CRYPTONOTE_BLOCK_GRANTED_FULL_REWARD_ZONE; + if (median_size < full_reward_zone) { + median_size = full_reward_zone; } if (current_block_size <= median_size) { |
