diff --git a/nano/node/active_elections.cpp b/nano/node/active_elections.cpp index b0e35073..47a4ed1a 100644 --- a/nano/node/active_elections.cpp +++ b/nano/node/active_elections.cpp @@ -129,7 +129,7 @@ void nano::active_elections::notify_observers (nano::secure::read_transaction co { auto block = status.winner; auto account = block->account (); - auto amount = node.ledger.any.block_amount (transaction, block->hash ()).value_or (0).number (); + auto amount = node.ledger.any.block_amount (transaction, block).value_or (0).number (); auto is_state_send = block->type () == block_type::state && block->is_send (); auto is_state_epoch = block->type () == block_type::state && block->is_epoch (); node.observers.blocks.notify (status, votes, account, amount, is_state_send, is_state_epoch); diff --git a/nano/secure/ledger_set_any.cpp b/nano/secure/ledger_set_any.cpp index 39b7d6de..13e3b2c1 100644 --- a/nano/secure/ledger_set_any.cpp +++ b/nano/secure/ledger_set_any.cpp @@ -89,12 +89,17 @@ std::optional nano::ledger_set_any::block_amount (secure::transact { return std::nullopt; } - auto block_balance = block_l->balance (); - if (block_l->previous ().is_zero ()) + return block_amount (transaction, block_l); +} + +std::optional nano::ledger_set_any::block_amount (secure::transaction const & transaction, std::shared_ptr const & block) const +{ + auto block_balance = block->balance (); + if (block->previous ().is_zero ()) { return block_balance.number (); } - auto previous_balance = this->block_balance (transaction, block_l->previous ()); + auto previous_balance = this->block_balance (transaction, block->previous ()); if (!previous_balance) { return std::nullopt; diff --git a/nano/secure/ledger_set_any.hpp b/nano/secure/ledger_set_any.hpp index 193b13b5..f61f8532 100644 --- a/nano/secure/ledger_set_any.hpp +++ b/nano/secure/ledger_set_any.hpp @@ -48,6 +48,7 @@ public: // Operations on accounts public: // Operations on blocks std::optional block_account (secure::transaction const & transaction, nano::block_hash const & hash) const; std::optional block_amount (secure::transaction const & transaction, nano::block_hash const & hash) const; + std::optional block_amount (secure::transaction const & transaction, std::shared_ptr const & block) const; std::optional block_balance (secure::transaction const & transaction, nano::block_hash const & hash) const; bool block_exists (secure::transaction const & transaction, nano::block_hash const & hash) const; bool block_exists_or_pruned (secure::transaction const & transaction, nano::block_hash const & hash) const;