From b7f23708e8305930be5aac440cd06ca6846aac1b Mon Sep 17 00:00:00 2001 From: Colin LeMahieu Date: Thu, 14 Sep 2023 14:02:00 +0100 Subject: [PATCH] Removing ::balance_calculated as balance is stored in sideband. --- nano/node/lmdb/block_store.cpp | 32 ------------------------------- nano/node/lmdb/block_store.hpp | 2 -- nano/node/lmdb/lmdb.cpp | 8 ++++---- nano/node/node.cpp | 2 +- nano/node/rocksdb/block_store.cpp | 32 ------------------------------- nano/node/rocksdb/block_store.hpp | 2 -- nano/secure/store.cpp | 29 ++++++++++++++++++++++++++++ nano/secure/store.hpp | 4 ++-- 8 files changed, 36 insertions(+), 75 deletions(-) diff --git a/nano/node/lmdb/block_store.cpp b/nano/node/lmdb/block_store.cpp index 23a4f299..d3e26749 100644 --- a/nano/node/lmdb/block_store.cpp +++ b/nano/node/lmdb/block_store.cpp @@ -161,38 +161,6 @@ nano::store_iterator nano::lmdb::block return nano::store_iterator (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 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 (block_a.get ())->hashables.balance.number (); - break; - case nano::block_type::state: - result = boost::polymorphic_downcast (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); diff --git a/nano/node/lmdb/block_store.hpp b/nano/node/lmdb/block_store.hpp index 8b133510..f6fc8499 100644 --- a/nano/node/lmdb/block_store.hpp +++ b/nano/node/lmdb/block_store.hpp @@ -31,8 +31,6 @@ namespace lmdb nano::store_iterator begin (nano::transaction const & transaction_a) const override; nano::store_iterator begin (nano::transaction const & transaction_a, nano::block_hash const & hash_a) const override; nano::store_iterator 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 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, nano::store_iterator)> const & action_a) const override; // Converts a block hash to a block height diff --git a/nano/node/lmdb/lmdb.cpp b/nano/node/lmdb/lmdb.cpp index 00c60ad3..4c6183a9 100644 --- a/nano/node/lmdb/lmdb.cpp +++ b/nano/node/lmdb/lmdb.cpp @@ -1061,11 +1061,11 @@ boost::optional 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; } diff --git a/nano/node/node.cpp b/nano/node/node.cpp index 59180367..ad3b6dbe 100644 --- a/nano/node/node.cpp +++ b/nano/node/node.cpp @@ -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) diff --git a/nano/node/rocksdb/block_store.cpp b/nano/node/rocksdb/block_store.cpp index a7b5f8ca..64d2a987 100644 --- a/nano/node/rocksdb/block_store.cpp +++ b/nano/node/rocksdb/block_store.cpp @@ -161,38 +161,6 @@ nano::store_iterator nano::rocksdb::bl return nano::store_iterator (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 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 (block_a.get ())->hashables.balance.number (); - break; - case nano::block_type::state: - result = boost::polymorphic_downcast (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); diff --git a/nano/node/rocksdb/block_store.hpp b/nano/node/rocksdb/block_store.hpp index fc9a8aae..91c64519 100644 --- a/nano/node/rocksdb/block_store.hpp +++ b/nano/node/rocksdb/block_store.hpp @@ -31,8 +31,6 @@ namespace rocksdb nano::store_iterator begin (nano::transaction const & transaction_a) const override; nano::store_iterator begin (nano::transaction const & transaction_a, nano::block_hash const & hash_a) const override; nano::store_iterator 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 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, nano::store_iterator)> const & action_a) const override; // Converts a block hash to a block height diff --git a/nano/secure/store.cpp b/nano/secure/store.cpp index 78c36e2d..45cd33d8 100644 --- a/nano/secure/store.cpp +++ b/nano/secure/store.cpp @@ -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, diff --git a/nano/secure/store.hpp b/nano/secure/store.hpp index 7237d1c2..2bcc7250 100644 --- a/nano/secure/store.hpp +++ b/nano/secure/store.hpp @@ -758,8 +758,8 @@ public: virtual nano::store_iterator begin (nano::transaction const &, nano::block_hash const &) const = 0; virtual nano::store_iterator begin (nano::transaction const &) const = 0; virtual nano::store_iterator 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 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, nano::store_iterator)> const & action_a) const = 0; virtual uint64_t account_height (nano::transaction const & transaction_a, nano::block_hash const & hash_a) const = 0;