diff --git a/nano/node/node.cpp b/nano/node/node.cpp index bb9d064e0..d707393a3 100644 --- a/nano/node/node.cpp +++ b/nano/node/node.cpp @@ -176,7 +176,7 @@ nano::node::node (boost::asio::io_context & io_ctx_a, std::filesystem::path cons application_path (application_path_a), port_mapping (*this), rep_crawler (*this), - vote_processor (checker, active, observers, stats, config, flags, logger, online_reps, rep_crawler, ledger, network_params), + vote_processor (active, observers, stats, config, flags, logger, online_reps, rep_crawler, ledger, network_params), warmed_up (0), block_processor (*this, write_database_queue), online_reps (ledger, config), diff --git a/nano/node/vote_processor.cpp b/nano/node/vote_processor.cpp index fd6d5696c..34b86f70f 100644 --- a/nano/node/vote_processor.cpp +++ b/nano/node/vote_processor.cpp @@ -7,7 +7,6 @@ #include #include #include -#include #include #include #include @@ -17,8 +16,7 @@ #include using namespace std::chrono_literals; -nano::vote_processor::vote_processor (nano::signature_checker & checker_a, nano::active_transactions & active_a, nano::node_observers & observers_a, nano::stats & stats_a, nano::node_config & config_a, nano::node_flags & flags_a, nano::logger_mt & logger_a, nano::online_reps & online_reps_a, nano::rep_crawler & rep_crawler_a, nano::ledger & ledger_a, nano::network_params & network_params_a) : - checker (checker_a), +nano::vote_processor::vote_processor (nano::active_transactions & active_a, nano::node_observers & observers_a, nano::stats & stats_a, nano::node_config & config_a, nano::node_flags & flags_a, nano::logger_mt & logger_a, nano::online_reps & online_reps_a, nano::rep_crawler & rep_crawler_a, nano::ledger & ledger_a, nano::network_params & network_params_a) : active (active_a), observers (observers_a), stats (stats_a), @@ -134,36 +132,12 @@ bool nano::vote_processor::vote (std::shared_ptr const & vote_a, std void nano::vote_processor::verify_votes (decltype (votes) const & votes_a) { - auto size (votes_a.size ()); - std::vector messages; - messages.reserve (size); - std::vector hashes; - hashes.reserve (size); - std::vector lengths (size, sizeof (nano::block_hash)); - std::vector pub_keys; - pub_keys.reserve (size); - std::vector signatures; - signatures.reserve (size); - std::vector verifications; - verifications.resize (size); for (auto const & vote : votes_a) { - hashes.push_back (vote.first->hash ()); - messages.push_back (hashes.back ().bytes.data ()); - pub_keys.push_back (vote.first->account.bytes.data ()); - signatures.push_back (vote.first->signature.bytes.data ()); - } - nano::signature_check_set check = { size, messages.data (), lengths.data (), pub_keys.data (), signatures.data (), verifications.data () }; - checker.verify (check); - auto i (0); - for (auto const & vote : votes_a) - { - debug_assert (verifications[i] == 1 || verifications[i] == 0); - if (verifications[i] == 1) + if (!nano::validate_message (vote.first->account, vote.first->hash (), vote.first->signature)) { vote_blocking (vote.first, vote.second, true); } - ++i; } } diff --git a/nano/node/vote_processor.hpp b/nano/node/vote_processor.hpp index 0ffb39dd0..4ee3c6f0e 100644 --- a/nano/node/vote_processor.hpp +++ b/nano/node/vote_processor.hpp @@ -36,7 +36,7 @@ namespace transport class vote_processor final { public: - vote_processor (nano::signature_checker & checker_a, nano::active_transactions & active_a, nano::node_observers & observers_a, nano::stats & stats_a, nano::node_config & config_a, nano::node_flags & flags_a, nano::logger_mt & logger_a, nano::online_reps & online_reps_a, nano::rep_crawler & rep_crawler_a, nano::ledger & ledger_a, nano::network_params & network_params_a); + vote_processor (nano::active_transactions & active_a, nano::node_observers & observers_a, nano::stats & stats_a, nano::node_config & config_a, nano::node_flags & flags_a, nano::logger_mt & logger_a, nano::online_reps & online_reps_a, nano::rep_crawler & rep_crawler_a, nano::ledger & ledger_a, nano::network_params & network_params_a); /** Returns false if the vote was processed */ bool vote (std::shared_ptr const &, std::shared_ptr const &); @@ -56,7 +56,6 @@ public: private: void process_loop (); - nano::signature_checker & checker; nano::active_transactions & active; nano::node_observers & observers; nano::stats & stats;