diff --git a/src/cryptonote_config.h b/src/cryptonote_config.h index 1ac8ab32..fd52f2e8 100644 --- a/src/cryptonote_config.h +++ b/src/cryptonote_config.h @@ -57,6 +57,7 @@ // COIN - number of smallest units in one coin #define COIN ((uint64_t)1000000000000) // pow(10, 12) #define DEFAULT_FEE ((uint64_t)100000000000) // 5 * pow(10, 11) +#define FEE_PER_KB ((uint64_t)10000000000) // pow(10, 10) #define ORPHANED_BLOCKS_MAX_COUNT 100 diff --git a/src/cryptonote_core/tx_pool.cpp b/src/cryptonote_core/tx_pool.cpp index 81f93201..f623037e 100644 --- a/src/cryptonote_core/tx_pool.cpp +++ b/src/cryptonote_core/tx_pool.cpp @@ -86,9 +86,12 @@ namespace cryptonote } uint64_t fee = inputs_amount - outputs_amount; - if (!kept_by_block && fee < DEFAULT_FEE) + uint64_t needed_fee = blob_size / 1024; + needed_fee += (blob_size % 1024) ? 1 : 0; + needed_fee *= FEE_PER_KB; + if (!kept_by_block && fee < needed_fee) { - LOG_PRINT_L1("transaction fee is not enough: " << print_money(fee) << ", minumim fee: " << print_money(DEFAULT_FEE)); + LOG_PRINT_L1("transaction fee is not enough: " << print_money(fee) << ", minumim fee: " << print_money(needed_fee)); tvc.m_verifivation_failed = true; return false; } diff --git a/src/wallet/wallet2.cpp b/src/wallet/wallet2.cpp index 5af9a71b..5b247ff4 100644 --- a/src/wallet/wallet2.cpp +++ b/src/wallet/wallet2.cpp @@ -954,7 +954,22 @@ std::vector wallet2::create_transactions(std::vector