aboutsummaryrefslogtreecommitdiff
path: root/src/cryptonote_core/cryptonote_basic_impl.cpp
diff options
context:
space:
mode:
authorJavier Smooth <iamjaviersmooth@gmail.com>2015-11-05 01:58:47 -0800
committerJavier Smooth <iamjaviersmooth@gmail.com>2015-11-13 00:30:45 -0800
commit4fea1a5fe7de41ebf0fb40be856d8a3f1775e7c6 (patch)
treeb02df52888738745cc68df6674e6886f8d44f970 /src/cryptonote_core/cryptonote_basic_impl.cpp
parentea7380aa7f3906be6f319044e6ce1d207d1ae576 (diff)
downloadmonzero-core-4fea1a5fe7de41ebf0fb40be856d8a3f1775e7c6.tar.gz
monzero-core-4fea1a5fe7de41ebf0fb40be856d8a3f1775e7c6.tar.xz
monzero-core-4fea1a5fe7de41ebf0fb40be856d8a3f1775e7c6.zip
Adjust difficulty target (2 min) and full reward zone (60 kbytes) for block version 2
Diffstat (limited to 'src/cryptonote_core/cryptonote_basic_impl.cpp')
-rw-r--r--src/cryptonote_core/cryptonote_basic_impl.cpp19
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) {