Optimize block_amount
lookup
This commit is contained in:
parent
eb141ba940
commit
929581855a
3 changed files with 10 additions and 4 deletions
|
@ -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);
|
||||
|
|
|
@ -89,12 +89,17 @@ std::optional<nano::amount> 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::amount> nano::ledger_set_any::block_amount (secure::transaction const & transaction, std::shared_ptr<nano::block> 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;
|
||||
|
|
|
@ -48,6 +48,7 @@ public: // Operations on accounts
|
|||
public: // Operations on blocks
|
||||
std::optional<nano::account> block_account (secure::transaction const & transaction, nano::block_hash const & hash) const;
|
||||
std::optional<nano::amount> block_amount (secure::transaction const & transaction, nano::block_hash const & hash) const;
|
||||
std::optional<nano::amount> block_amount (secure::transaction const & transaction, std::shared_ptr<nano::block> const & block) const;
|
||||
std::optional<nano::amount> 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;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue