From 868ec8679a95dec99c456a6d329d0a4f05fdaa4e Mon Sep 17 00:00:00 2001 From: clemahieu Date: Mon, 9 Aug 2021 00:10:02 +0100 Subject: [PATCH] Moving work_validate from a free function to a member of nano::work_thresholds. --- nano/lib/config.cpp | 5 +++++ nano/lib/config.hpp | 1 + nano/lib/work.cpp | 6 ------ nano/lib/work.hpp | 1 - nano/node/wallet.cpp | 2 +- 5 files changed, 7 insertions(+), 8 deletions(-) diff --git a/nano/lib/config.cpp b/nano/lib/config.cpp index 2470d457..90627a50 100644 --- a/nano/lib/config.cpp +++ b/nano/lib/config.cpp @@ -194,6 +194,11 @@ uint64_t nano::work_thresholds::difficulty (nano::work_version const version_a, return result; } +bool nano::work_thresholds::validate_entry (nano::work_version const version_a, nano::root const & root_a, uint64_t const work_a) +{ + return difficulty (version_a, root_a, work_a) < threshold_entry (version_a, nano::block_type::state); +} + namespace nano { const char * network_constants::active_network_err_msg = "Invalid network. Valid values are live, test, beta and dev."; diff --git a/nano/lib/config.hpp b/nano/lib/config.hpp index 2629bd0b..4c11b731 100644 --- a/nano/lib/config.hpp +++ b/nano/lib/config.hpp @@ -119,6 +119,7 @@ public: double normalized_multiplier (double const, uint64_t const); double denormalized_multiplier (double const, uint64_t const); uint64_t difficulty (nano::work_version const, nano::root const &, uint64_t const); + bool validate_entry (nano::work_version const, nano::root const &, uint64_t const); /** Network work thresholds. Define these inline as constexpr when moving to cpp17. */ static const nano::work_thresholds publish_full; diff --git a/nano/lib/work.cpp b/nano/lib/work.cpp index c5079972..90af2490 100644 --- a/nano/lib/work.cpp +++ b/nano/lib/work.cpp @@ -28,12 +28,6 @@ bool nano::work_validate_entry (nano::block const & block_a) return block_a.difficulty () < network_constants.publish_thresholds.threshold_entry (block_a.work_version (), block_a.type ()); } -bool nano::work_validate_entry (nano::work_version const version_a, nano::root const & root_a, uint64_t const work_a) -{ - static nano::network_constants network_constants; - return network_constants.publish_thresholds.difficulty (version_a, root_a, work_a) < network_constants.publish_thresholds.threshold_entry (version_a, nano::block_type::state); -} - nano::work_pool::work_pool (nano::network_constants & network_constants, unsigned max_threads_a, std::chrono::nanoseconds pow_rate_limiter_a, std::function (nano::work_version const, nano::root const &, uint64_t, std::atomic &)> opencl_a) : network_constants{ network_constants }, ticket (0), diff --git a/nano/lib/work.hpp b/nano/lib/work.hpp index d97c9b20..b8c5518c 100644 --- a/nano/lib/work.hpp +++ b/nano/lib/work.hpp @@ -19,7 +19,6 @@ class block; class block_details; enum class block_type : uint8_t; bool work_validate_entry (nano::block const &); -bool work_validate_entry (nano::work_version const, nano::root const &, uint64_t const); class opencl_work; class work_item final diff --git a/nano/node/wallet.cpp b/nano/node/wallet.cpp index d953c8d3..32a53b0c 100644 --- a/nano/node/wallet.cpp +++ b/nano/node/wallet.cpp @@ -1130,7 +1130,7 @@ void nano::wallet::send_async (nano::account const & source_a, nano::account con // Update work for account if latest root is root_a void nano::wallet::work_update (nano::transaction const & transaction_a, nano::account const & account_a, nano::root const & root_a, uint64_t work_a) { - debug_assert (!nano::work_validate_entry (nano::work_version::work_1, root_a, work_a)); + debug_assert (!wallets.node.network_params.network.publish_thresholds.validate_entry (nano::work_version::work_1, root_a, work_a)); debug_assert (store.exists (transaction_a, account_a)); auto block_transaction (wallets.node.store.tx_begin_read ()); auto latest (wallets.node.ledger.latest_root (block_transaction, account_a));