aboutsummaryrefslogtreecommitdiff
path: root/src/cryptonote_core
diff options
context:
space:
mode:
Diffstat (limited to 'src/cryptonote_core')
-rw-r--r--src/cryptonote_core/blockchain.cpp21
-rw-r--r--src/cryptonote_core/cryptonote_basic_impl.cpp2
2 files changed, 21 insertions, 2 deletions
diff --git a/src/cryptonote_core/blockchain.cpp b/src/cryptonote_core/blockchain.cpp
index c2ccf3db0..64694fe81 100644
--- a/src/cryptonote_core/blockchain.cpp
+++ b/src/cryptonote_core/blockchain.cpp
@@ -73,6 +73,9 @@ extern "C" void slow_hash_free_state();
DISABLE_VS_WARNINGS(4267)
+// used to overestimate the block reward when estimating a per kB to use
+#define BLOCK_REWARD_OVERESTIMATE (10 * 1000000000000)
+
static const struct {
uint8_t version;
uint64_t height;
@@ -2231,6 +2234,19 @@ bool Blockchain::check_tx_outputs(const transaction& tx, tx_verification_context
}
}
+ // from v4, forbid invalid pubkeys
+ if (m_hardfork->get_current_version() >= 4) {
+ for (const auto &o: tx.vout) {
+ if (o.target.type() == typeid(txout_to_key)) {
+ const txout_to_key& out_to_key = boost::get<txout_to_key>(o.target);
+ if (!crypto::check_key(out_to_key.key)) {
+ tvc.m_invalid_output = true;
+ return false;
+ }
+ }
+ }
+ }
+
return true;
}
//------------------------------------------------------------------
@@ -2783,7 +2799,10 @@ uint64_t Blockchain::get_dynamic_per_kb_fee_estimate(uint64_t grace_blocks) cons
uint64_t already_generated_coins = m_db->height() ? m_db->get_block_already_generated_coins(m_db->height() - 1) : 0;
uint64_t base_reward;
if (!get_block_reward(median, 1, already_generated_coins, base_reward, version))
- return false;
+ {
+ LOG_PRINT_L1("Failed to determine block reward, using placeholder " << print_money(BLOCK_REWARD_OVERESTIMATE) << " as a high bound");
+ base_reward = BLOCK_REWARD_OVERESTIMATE;
+ }
uint64_t fee = get_dynamic_per_kb_fee(base_reward, median);
LOG_PRINT_L2("Estimating " << grace_blocks << "-block fee at " << print_money(fee) << "/kB");
diff --git a/src/cryptonote_core/cryptonote_basic_impl.cpp b/src/cryptonote_core/cryptonote_basic_impl.cpp
index 74f44e2af..4f35b8298 100644
--- a/src/cryptonote_core/cryptonote_basic_impl.cpp
+++ b/src/cryptonote_core/cryptonote_basic_impl.cpp
@@ -199,7 +199,7 @@ namespace cryptonote {
uint64_t prefix;
if (!tools::base58::decode_addr(str, prefix, data))
{
- LOG_PRINT_L1("Invalid address format");
+ LOG_PRINT_L2("Invalid address format");
return false;
}