Removing ::balance_calculated as balance is stored in sideband.

This commit is contained in:
Colin LeMahieu 2023-09-14 14:02:00 +01:00
commit b7f23708e8
No known key found for this signature in database
GPG key ID: 43708520C8DFB938
8 changed files with 36 additions and 75 deletions

View file

@ -161,38 +161,6 @@ nano::store_iterator<nano::block_hash, nano::block_w_sideband> nano::lmdb::block
return nano::store_iterator<nano::block_hash, nano::block_w_sideband> (nullptr);
}
nano::uint128_t nano::lmdb::block_store::balance (nano::transaction const & transaction_a, nano::block_hash const & hash_a)
{
auto block (get (transaction_a, hash_a));
release_assert (block);
nano::uint128_t result (balance_calculated (block));
return result;
}
nano::uint128_t nano::lmdb::block_store::balance_calculated (std::shared_ptr<nano::block> const & block_a) const
{
nano::uint128_t result;
switch (block_a->type ())
{
case nano::block_type::open:
case nano::block_type::receive:
case nano::block_type::change:
result = block_a->sideband ().balance.number ();
break;
case nano::block_type::send:
result = boost::polymorphic_downcast<nano::send_block *> (block_a.get ())->hashables.balance.number ();
break;
case nano::block_type::state:
result = boost::polymorphic_downcast<nano::state_block *> (block_a.get ())->hashables.balance.number ();
break;
case nano::block_type::invalid:
case nano::block_type::not_a_block:
release_assert (false);
break;
}
return result;
}
nano::epoch nano::lmdb::block_store::version (nano::transaction const & transaction_a, nano::block_hash const & hash_a)
{
auto block = get (transaction_a, hash_a);

View file

@ -31,8 +31,6 @@ namespace lmdb
nano::store_iterator<nano::block_hash, nano::block_w_sideband> begin (nano::transaction const & transaction_a) const override;
nano::store_iterator<nano::block_hash, nano::block_w_sideband> begin (nano::transaction const & transaction_a, nano::block_hash const & hash_a) const override;
nano::store_iterator<nano::block_hash, nano::block_w_sideband> end () const override;
nano::uint128_t balance (nano::transaction const & transaction_a, nano::block_hash const & hash_a) override;
nano::uint128_t balance_calculated (std::shared_ptr<nano::block> const & block_a) const override;
nano::epoch version (nano::transaction const & transaction_a, nano::block_hash const & hash_a) override;
void for_each_par (std::function<void (nano::read_transaction const &, nano::store_iterator<nano::block_hash, block_w_sideband>, nano::store_iterator<nano::block_hash, block_w_sideband>)> const & action_a) const override;
// Converts a block hash to a block height

View file

@ -1061,11 +1061,11 @@ boost::optional<nano::mdb_val> nano::lmdb::store::block_raw_get_by_type_v18 (nan
return result;
}
nano::uint128_t nano::lmdb::store::block_balance_v18 (nano::transaction const & transaction_a, nano::block_hash const & hash_a) const
nano::uint128_t nano::lmdb::store::block_balance_v18 (nano::transaction const & transaction, nano::block_hash const & hash) const
{
auto block (block_get_v18 (transaction_a, hash_a));
release_assert (block);
nano::uint128_t result (this->block.balance_calculated (block));
auto block_l = block_get_v18 (transaction, hash);
release_assert (block_l);
nano::uint128_t result = block.balance (*block_l);
return result;
}

View file

@ -1344,7 +1344,7 @@ void nano::node::process_confirmed_data (nano::transaction const & transaction_a
auto previous (block_a->previous ());
bool error (false);
auto previous_balance (ledger.balance_safe (transaction_a, previous, error));
auto block_balance (store.block.balance_calculated (block_a));
auto block_balance = store.block.balance (*block_a);
if (hash_a != ledger.constants.genesis->account ())
{
if (!error)

View file

@ -161,38 +161,6 @@ nano::store_iterator<nano::block_hash, nano::block_w_sideband> nano::rocksdb::bl
return nano::store_iterator<nano::block_hash, nano::block_w_sideband> (nullptr);
}
nano::uint128_t nano::rocksdb::block_store::balance (nano::transaction const & transaction_a, nano::block_hash const & hash_a)
{
auto block (get (transaction_a, hash_a));
release_assert (block);
nano::uint128_t result (balance_calculated (block));
return result;
}
nano::uint128_t nano::rocksdb::block_store::balance_calculated (std::shared_ptr<nano::block> const & block_a) const
{
nano::uint128_t result;
switch (block_a->type ())
{
case nano::block_type::open:
case nano::block_type::receive:
case nano::block_type::change:
result = block_a->sideband ().balance.number ();
break;
case nano::block_type::send:
result = boost::polymorphic_downcast<nano::send_block *> (block_a.get ())->hashables.balance.number ();
break;
case nano::block_type::state:
result = boost::polymorphic_downcast<nano::state_block *> (block_a.get ())->hashables.balance.number ();
break;
case nano::block_type::invalid:
case nano::block_type::not_a_block:
release_assert (false);
break;
}
return result;
}
nano::epoch nano::rocksdb::block_store::version (nano::transaction const & transaction_a, nano::block_hash const & hash_a)
{
auto block = get (transaction_a, hash_a);

View file

@ -31,8 +31,6 @@ namespace rocksdb
nano::store_iterator<nano::block_hash, nano::block_w_sideband> begin (nano::transaction const & transaction_a) const override;
nano::store_iterator<nano::block_hash, nano::block_w_sideband> begin (nano::transaction const & transaction_a, nano::block_hash const & hash_a) const override;
nano::store_iterator<nano::block_hash, nano::block_w_sideband> end () const override;
nano::uint128_t balance (nano::transaction const & transaction_a, nano::block_hash const & hash_a) override;
nano::uint128_t balance_calculated (std::shared_ptr<nano::block> const & block_a) const override;
nano::epoch version (nano::transaction const & transaction_a, nano::block_hash const & hash_a) override;
void for_each_par (std::function<void (nano::read_transaction const &, nano::store_iterator<nano::block_hash, block_w_sideband>, nano::store_iterator<nano::block_hash, block_w_sideband>)> const & action_a) const override;
// Converts a block hash to a block height

View file

@ -125,6 +125,35 @@ nano::account nano::block_store::account (nano::transaction const & transaction,
return account (*block);
}
nano::uint128_t nano::block_store::balance (nano::block const & block) const
{
nano::uint128_t result;
switch (block.type ())
{
case nano::block_type::open:
case nano::block_type::receive:
case nano::block_type::change:
result = block.sideband ().balance.number ();
break;
case nano::block_type::send:
case nano::block_type::state:
result = block.balance ().number ();
break;
case nano::block_type::invalid:
case nano::block_type::not_a_block:
release_assert (false);
break;
}
return result;
}
nano::uint128_t nano::block_store::balance (nano::transaction const & transaction, nano::block_hash const & hash) const
{
auto block = get (transaction, hash);
debug_assert (block != nullptr);
return balance (*block);
}
// clang-format off
nano::store::store (
nano::block_store & block_store_a,

View file

@ -758,8 +758,8 @@ public:
virtual nano::store_iterator<nano::block_hash, block_w_sideband> begin (nano::transaction const &, nano::block_hash const &) const = 0;
virtual nano::store_iterator<nano::block_hash, block_w_sideband> begin (nano::transaction const &) const = 0;
virtual nano::store_iterator<nano::block_hash, block_w_sideband> end () const = 0;
virtual nano::uint128_t balance (nano::transaction const &, nano::block_hash const &) = 0;
virtual nano::uint128_t balance_calculated (std::shared_ptr<nano::block> const &) const = 0;
nano::uint128_t balance (nano::block const & block) const;
nano::uint128_t balance (nano::transaction const & transaction, nano::block_hash const & hash) const;
virtual nano::epoch version (nano::transaction const &, nano::block_hash const &) = 0;
virtual void for_each_par (std::function<void (nano::read_transaction const &, nano::store_iterator<nano::block_hash, block_w_sideband>, nano::store_iterator<nano::block_hash, block_w_sideband>)> const & action_a) const = 0;
virtual uint64_t account_height (nano::transaction const & transaction_a, nano::block_hash const & hash_a) const = 0;