From 3e7e881e924621cd0c2c24dd9703563ebb112ab5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Piotr=20W=C3=B3jcik?= <3044353+pwojcikdev@users.noreply.github.com> Date: Wed, 1 Mar 2023 22:54:11 +0100 Subject: [PATCH] Verify block work inside `blockprocessor` (#4164) --- nano/node/blockprocessor.cpp | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/nano/node/blockprocessor.cpp b/nano/node/blockprocessor.cpp index 2aec7b7e5..6ef728ca4 100644 --- a/nano/node/blockprocessor.cpp +++ b/nano/node/blockprocessor.cpp @@ -99,11 +99,17 @@ void nano::block_processor::add (nano::unchecked_info const & info_a) { if (full ()) { - node.stats.inc (nano::stat::type::blockprocessor, nano::stat::detail::drop); + node.stats.inc (nano::stat::type::blockprocessor, nano::stat::detail::overfill); return; } + if (node.network_params.work.validate_entry (*info_a.block)) // true => error + { + node.stats.inc (nano::stat::type::blockprocessor, nano::stat::detail::insufficient_work); + return; + } + auto const & block = info_a.block; - debug_assert (!node.network_params.work.validate_entry (*block)); + if (block->type () == nano::block_type::state || block->type () == nano::block_type::open) { state_block_signature_verification.add ({ block }); @@ -122,10 +128,15 @@ void nano::block_processor::add_local (nano::unchecked_info const & info_a) { if (full ()) { - node.stats.inc (nano::stat::type::blockprocessor, nano::stat::detail::drop); + node.stats.inc (nano::stat::type::blockprocessor, nano::stat::detail::overfill); return; } - debug_assert (!node.network_params.work.validate_entry (*info_a.block)); + if (node.network_params.work.validate_entry (*info_a.block)) // true => error + { + node.stats.inc (nano::stat::type::blockprocessor, nano::stat::detail::insufficient_work); + return; + } + state_block_signature_verification.add ({ info_a.block }); }