diff --git a/nano/node/election.cpp b/nano/node/election.cpp index 8481bb045..09ae2f2b2 100644 --- a/nano/node/election.cpp +++ b/nano/node/election.cpp @@ -152,7 +152,7 @@ bool nano::election::state_change (nano::election::state_t expected_a, nano::ele void nano::election::send_confirm_req (nano::confirmation_solicitor & solicitor_a) { - if (last_req + std::chrono::seconds (15) < std::chrono::steady_clock::now ()) + if (base_latency () * 5 < std::chrono::steady_clock::now () - last_req) { if (!solicitor_a.add (*this)) { @@ -181,14 +181,7 @@ void nano::election::transition_active () void nano::election::transition_active_impl () { - if (!state_change (nano::election::state_t::idle, nano::election::state_t::active)) - { - if (base_latency () * 5 < std::chrono::steady_clock::now () - last_block) - { - last_block = std::chrono::steady_clock::now (); - node.network.flood_block (status.winner); - } - } + state_change (nano::election::state_t::idle, nano::election::state_t::active); } bool nano::election::idle () const @@ -247,7 +240,7 @@ void nano::election::activate_dependencies () void nano::election::broadcast_block (nano::confirmation_solicitor & solicitor_a) { - if (base_latency () * 5 < std::chrono::steady_clock::now () - last_block) + if (base_latency () * 20 < std::chrono::steady_clock::now () - last_block) { if (!solicitor_a.broadcast (*this)) { diff --git a/nano/node/election.hpp b/nano/node/election.hpp index 6ea73c11c..16b500b98 100644 --- a/nano/node/election.hpp +++ b/nano/node/election.hpp @@ -47,7 +47,7 @@ private: // State management expired_unconfirmed }; static int constexpr passive_duration_factor = 5; - static int constexpr active_duration_factor = 20; + static int constexpr active_duration_factor = 30; static int constexpr confirmed_duration_factor = 10; static int constexpr confirmed_duration_factor_saturated = 1; std::atomic state_m = { state_t::idle }; @@ -55,8 +55,7 @@ private: // State management // Protects state_start, last_vote and last_block std::mutex timepoints_mutex; std::chrono::steady_clock::time_point state_start = { std::chrono::steady_clock::now () }; - std::chrono::steady_clock::time_point last_vote = { std::chrono::steady_clock::time_point () }; - std::chrono::steady_clock::time_point last_block = { std::chrono::steady_clock::time_point () }; + std::chrono::steady_clock::time_point last_block = { std::chrono::steady_clock::now () }; std::chrono::steady_clock::time_point last_req = { std::chrono::steady_clock::time_point () }; bool valid_change (nano::election::state_t, nano::election::state_t) const;