From dcb4dbc34b17016d473397ccd4f48bbe6a2c38b9 Mon Sep 17 00:00:00 2001 From: Colin LeMahieu Date: Thu, 14 Sep 2023 13:26:14 +0100 Subject: [PATCH] Removing block_store::account_calculated as this value is cached in sideband. --- nano/core_test/ledger.cpp | 10 +++++----- nano/node/lmdb/block_store.cpp | 19 ------------------- nano/node/lmdb/block_store.hpp | 2 -- nano/node/rocksdb/block_store.cpp | 19 ------------------- nano/node/rocksdb/block_store.hpp | 2 -- nano/secure/ledger.cpp | 6 +++--- nano/secure/store.cpp | 21 ++++++++++++++++++++- nano/secure/store.hpp | 4 ++-- 8 files changed, 30 insertions(+), 53 deletions(-) diff --git a/nano/core_test/ledger.cpp b/nano/core_test/ledger.cpp index 52e7c289..870331d4 100644 --- a/nano/core_test/ledger.cpp +++ b/nano/core_test/ledger.cpp @@ -112,7 +112,7 @@ TEST (ledger, process_send) ASSERT_TRUE (store.frontier.get (transaction, info1->head).is_zero ()); ASSERT_EQ (nano::dev::genesis_key.pub, store.frontier.get (transaction, hash1)); ASSERT_EQ (nano::process_result::progress, return1.code); - ASSERT_EQ (nano::dev::genesis_key.pub, store.block.account_calculated (*send)); + ASSERT_EQ (nano::dev::genesis_key.pub, store.block.account (*send)); ASSERT_EQ (50, ledger.account_balance (transaction, nano::dev::genesis_key.pub)); ASSERT_EQ (nano::dev::constants.genesis_amount - 50, ledger.account_receivable (transaction, key2.pub)); auto info2 = ledger.account_info (transaction, nano::dev::genesis_key.pub); @@ -141,7 +141,7 @@ TEST (ledger, process_send) ASSERT_EQ (1, open->sideband ().height); ASSERT_EQ (nano::dev::constants.genesis_amount - 50, ledger.amount (transaction, hash2)); ASSERT_EQ (nano::process_result::progress, return2.code); - ASSERT_EQ (key2.pub, store.block.account_calculated (*open)); + ASSERT_EQ (key2.pub, store.block.account (*open)); ASSERT_EQ (nano::dev::constants.genesis_amount - 50, ledger.amount (transaction, hash2)); ASSERT_EQ (key2.pub, store.frontier.get (transaction, hash2)); ASSERT_EQ (nano::dev::constants.genesis_amount - 50, ledger.account_balance (transaction, key2.pub)); @@ -225,7 +225,7 @@ TEST (ledger, process_receive) nano::block_hash hash2 (open->hash ()); auto return1 = ledger.process (transaction, *open); ASSERT_EQ (nano::process_result::progress, return1.code); - ASSERT_EQ (key2.pub, store.block.account_calculated (*open)); + ASSERT_EQ (key2.pub, store.block.account (*open)); ASSERT_EQ (key2.pub, open->sideband ().account); ASSERT_EQ (nano::dev::constants.genesis_amount - 50, open->sideband ().balance.number ()); ASSERT_EQ (1, open->sideband ().height); @@ -258,7 +258,7 @@ TEST (ledger, process_receive) ASSERT_TRUE (store.frontier.get (transaction, hash2).is_zero ()); ASSERT_EQ (key2.pub, store.frontier.get (transaction, hash4)); ASSERT_EQ (nano::process_result::progress, return2.code); - ASSERT_EQ (key2.pub, store.block.account_calculated (*receive)); + ASSERT_EQ (key2.pub, store.block.account (*receive)); ASSERT_EQ (hash4, ledger.latest (transaction, key2.pub)); ASSERT_EQ (25, ledger.account_balance (transaction, nano::dev::genesis_key.pub)); ASSERT_EQ (0, ledger.account_receivable (transaction, key2.pub)); @@ -525,7 +525,7 @@ TEST (ledger, representative_change) ASSERT_TRUE (store.frontier.get (transaction, info1->head).is_zero ()); ASSERT_EQ (nano::dev::genesis_key.pub, store.frontier.get (transaction, block->hash ())); ASSERT_EQ (nano::process_result::progress, return1.code); - ASSERT_EQ (nano::dev::genesis_key.pub, store.block.account_calculated (*block)); + ASSERT_EQ (nano::dev::genesis_key.pub, store.block.account (*block)); ASSERT_EQ (0, ledger.weight (nano::dev::genesis_key.pub)); ASSERT_EQ (nano::dev::constants.genesis_amount, ledger.weight (key2.pub)); auto info2 = ledger.account_info (transaction, nano::dev::genesis_key.pub); diff --git a/nano/node/lmdb/block_store.cpp b/nano/node/lmdb/block_store.cpp index b82718af..23a4f299 100644 --- a/nano/node/lmdb/block_store.cpp +++ b/nano/node/lmdb/block_store.cpp @@ -146,25 +146,6 @@ uint64_t nano::lmdb::block_store::count (nano::transaction const & transaction_a return store.count (transaction_a, tables::blocks); } -nano::account nano::lmdb::block_store::account (nano::transaction const & transaction_a, nano::block_hash const & hash_a) const -{ - auto block (get (transaction_a, hash_a)); - debug_assert (block != nullptr); - return account_calculated (*block); -} - -nano::account nano::lmdb::block_store::account_calculated (nano::block const & block_a) const -{ - debug_assert (block_a.has_sideband ()); - nano::account result (block_a.account ()); - if (result.is_zero ()) - { - result = block_a.sideband ().account; - } - debug_assert (!result.is_zero ()); - return result; -} - nano::store_iterator nano::lmdb::block_store::begin (nano::transaction const & transaction) const { return store.make_iterator (transaction, tables::blocks); diff --git a/nano/node/lmdb/block_store.hpp b/nano/node/lmdb/block_store.hpp index f3169a18..8b133510 100644 --- a/nano/node/lmdb/block_store.hpp +++ b/nano/node/lmdb/block_store.hpp @@ -28,8 +28,6 @@ namespace lmdb void del (nano::write_transaction const & transaction_a, nano::block_hash const & hash_a) override; bool exists (nano::transaction const & transaction_a, nano::block_hash const & hash_a) override; uint64_t count (nano::transaction const & transaction_a) override; - nano::account account (nano::transaction const & transaction_a, nano::block_hash const & hash_a) const override; - nano::account account_calculated (nano::block const & block_a) const override; 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; diff --git a/nano/node/rocksdb/block_store.cpp b/nano/node/rocksdb/block_store.cpp index 518b6720..a7b5f8ca 100644 --- a/nano/node/rocksdb/block_store.cpp +++ b/nano/node/rocksdb/block_store.cpp @@ -146,25 +146,6 @@ uint64_t nano::rocksdb::block_store::count (nano::transaction const & transactio return store.count (transaction_a, tables::blocks); } -nano::account nano::rocksdb::block_store::account (nano::transaction const & transaction_a, nano::block_hash const & hash_a) const -{ - auto block (get (transaction_a, hash_a)); - debug_assert (block != nullptr); - return account_calculated (*block); -} - -nano::account nano::rocksdb::block_store::account_calculated (nano::block const & block_a) const -{ - debug_assert (block_a.has_sideband ()); - nano::account result (block_a.account ()); - if (result.is_zero ()) - { - result = block_a.sideband ().account; - } - debug_assert (!result.is_zero ()); - return result; -} - nano::store_iterator nano::rocksdb::block_store::begin (nano::transaction const & transaction) const { return store.make_iterator (transaction, tables::blocks); diff --git a/nano/node/rocksdb/block_store.hpp b/nano/node/rocksdb/block_store.hpp index fc8b07c5..fc9a8aae 100644 --- a/nano/node/rocksdb/block_store.hpp +++ b/nano/node/rocksdb/block_store.hpp @@ -28,8 +28,6 @@ namespace rocksdb void del (nano::write_transaction const & transaction_a, nano::block_hash const & hash_a) override; bool exists (nano::transaction const & transaction_a, nano::block_hash const & hash_a) override; uint64_t count (nano::transaction const & transaction_a) override; - nano::account account (nano::transaction const & transaction_a, nano::block_hash const & hash_a) const override; - nano::account account_calculated (nano::block const & block_a) const override; 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; diff --git a/nano/secure/ledger.cpp b/nano/secure/ledger.cpp index 94da1d0d..9579b253 100644 --- a/nano/secure/ledger.cpp +++ b/nano/secure/ledger.cpp @@ -1047,7 +1047,7 @@ nano::account nano::ledger::account_safe (nano::transaction const & transaction_ auto block (store.block.get (transaction_a, hash_a)); if (block != nullptr) { - return store.block.account_calculated (*block); + return store.block.account (*block); } else { @@ -1057,12 +1057,12 @@ nano::account nano::ledger::account_safe (nano::transaction const & transaction_ } } -nano::account nano::ledger::account_safe (const nano::transaction & transaction, const nano::block_hash & hash) const +nano::account nano::ledger::account_safe (nano::transaction const & transaction, nano::block_hash const & hash) const { auto block = store.block.get (transaction, hash); if (block) { - return store.block.account_calculated (*block); + return store.block.account (*block); } else { diff --git a/nano/secure/store.cpp b/nano/secure/store.cpp index cc3e7276..78c36e2d 100644 --- a/nano/secure/store.cpp +++ b/nano/secure/store.cpp @@ -106,6 +106,25 @@ bool nano::write_transaction::contains (nano::tables table_a) const return impl->contains (table_a); } +nano::account nano::block_store::account (nano::block const & block) const +{ + debug_assert (block.has_sideband ()); + nano::account result (block.account ()); + if (result.is_zero ()) + { + result = block.sideband ().account; + } + debug_assert (!result.is_zero ()); + return result; +} + +nano::account nano::block_store::account (nano::transaction const & transaction, nano::block_hash const & hash) const +{ + auto block = get (transaction, hash); + debug_assert (block != nullptr); + return account (*block); +} + // clang-format off nano::store::store ( nano::block_store & block_store_a, @@ -179,4 +198,4 @@ std::optional nano::confirmation_height_store::g { return std::nullopt; } -} \ No newline at end of file +} diff --git a/nano/secure/store.hpp b/nano/secure/store.hpp index 4e952440..7237d1c2 100644 --- a/nano/secure/store.hpp +++ b/nano/secure/store.hpp @@ -753,8 +753,8 @@ public: virtual void del (nano::write_transaction const &, nano::block_hash const &) = 0; virtual bool exists (nano::transaction const &, nano::block_hash const &) = 0; virtual uint64_t count (nano::transaction const &) = 0; - virtual nano::account account (nano::transaction const &, nano::block_hash const &) const = 0; - virtual nano::account account_calculated (nano::block const &) const = 0; + nano::account account (nano::block const & block) const; + nano::account account (nano::transaction const & transaction, nano::block_hash const & hash) const; 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;