From bd3c6b251653ed17e1d09ac22c8edecc211b3cb8 Mon Sep 17 00:00:00 2001 From: Colin LeMahieu Date: Thu, 14 Sep 2023 23:38:04 +0100 Subject: [PATCH] Moving account_hight off of store and on to ledger. --- nano/node/confirmation_height_bounded.cpp | 2 +- nano/node/lmdb/block_store.cpp | 7 ------- nano/node/lmdb/block_store.hpp | 2 -- nano/node/rocksdb/block_store.cpp | 7 ------- nano/node/rocksdb/block_store.hpp | 2 -- nano/secure/ledger.cpp | 8 +++++++- nano/secure/ledger.hpp | 1 + nano/secure/store.hpp | 1 - 8 files changed, 9 insertions(+), 21 deletions(-) diff --git a/nano/node/confirmation_height_bounded.cpp b/nano/node/confirmation_height_bounded.cpp index 7ba0767a..e1ce7913 100644 --- a/nano/node/confirmation_height_bounded.cpp +++ b/nano/node/confirmation_height_bounded.cpp @@ -307,7 +307,7 @@ void nano::confirmation_height_bounded::prepare_iterated_blocks_for_cementing (p if (!preparation_data_a.already_cemented) { // Add the non-receive blocks iterated for this account - auto block_height = (ledger.store.block.account_height (preparation_data_a.transaction, preparation_data_a.top_most_non_receive_block_hash)); + auto block_height = (ledger.height (preparation_data_a.transaction, preparation_data_a.top_most_non_receive_block_hash)); if (block_height > preparation_data_a.confirmation_height_info.height) { confirmed_info confirmed_info_l{ block_height, preparation_data_a.top_most_non_receive_block_hash }; diff --git a/nano/node/lmdb/block_store.cpp b/nano/node/lmdb/block_store.cpp index aabc66fd..d244db69 100644 --- a/nano/node/lmdb/block_store.cpp +++ b/nano/node/lmdb/block_store.cpp @@ -156,13 +156,6 @@ void nano::lmdb::block_store::for_each_par (std::functionsideband ().height; -} - void nano::lmdb::block_store::block_raw_get (nano::transaction const & transaction, nano::block_hash const & hash, nano::mdb_val & value) const { auto status = store.get (transaction, tables::blocks, hash, value); diff --git a/nano/node/lmdb/block_store.hpp b/nano/node/lmdb/block_store.hpp index 1815b533..6976fd1d 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, nano::block_hash const & hash_a) const override; nano::store_iterator end () const override; void for_each_par (std::function, nano::store_iterator)> const & action_a) const override; - // Converts a block hash to a block height - uint64_t account_height (nano::transaction const & transaction_a, nano::block_hash const & hash_a) const override; /** * Maps block hash to send block. (Removed) diff --git a/nano/node/rocksdb/block_store.cpp b/nano/node/rocksdb/block_store.cpp index 81f4ef37..33169734 100644 --- a/nano/node/rocksdb/block_store.cpp +++ b/nano/node/rocksdb/block_store.cpp @@ -156,13 +156,6 @@ void nano::rocksdb::block_store::for_each_par (std::functionsideband ().height; -} - void nano::rocksdb::block_store::block_raw_get (nano::transaction const & transaction, nano::block_hash const & hash, nano::rocksdb_val & value) const { auto status = store.get (transaction, tables::blocks, hash, value); diff --git a/nano/node/rocksdb/block_store.hpp b/nano/node/rocksdb/block_store.hpp index b8e8941c..b3e3873e 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, nano::block_hash const & hash_a) const override; nano::store_iterator end () const override; void for_each_par (std::function, nano::store_iterator)> const & action_a) const override; - // Converts a block hash to a block height - uint64_t account_height (nano::transaction const & transaction_a, nano::block_hash const & hash_a) const override; protected: void block_raw_get (nano::transaction const & transaction_a, nano::block_hash const & hash_a, nano::rocksdb_val & value) const; diff --git a/nano/secure/ledger.cpp b/nano/secure/ledger.cpp index 232addf4..91116c64 100644 --- a/nano/secure/ledger.cpp +++ b/nano/secure/ledger.cpp @@ -1025,7 +1025,7 @@ bool nano::ledger::rollback (nano::write_transaction const & transaction_a, nano { debug_assert (store.block.exists (transaction_a, block_a)); auto account_l (account (transaction_a, block_a)); - auto block_account_height (store.block.account_height (transaction_a, block_a)); + auto block_account_height (height (transaction_a, block_a)); rollback_visitor rollback (transaction_a, *this, list_a); auto error (false); while (!error && store.block.exists (transaction_a, block_a)) @@ -1633,6 +1633,12 @@ nano::epoch nano::ledger::version (nano::transaction const & transaction, nano:: return version (*block); } +uint64_t nano::ledger::height (nano::transaction const & transaction, nano::block_hash const & hash) const +{ + auto block = store.block.get (transaction, hash); + return block->sideband ().height; +} + nano::uncemented_info::uncemented_info (nano::block_hash const & cemented_frontier, nano::block_hash const & frontier, nano::account const & account) : cemented_frontier (cemented_frontier), frontier (frontier), account (account) { diff --git a/nano/secure/ledger.hpp b/nano/secure/ledger.hpp index c31f35c7..5d79a121 100644 --- a/nano/secure/ledger.hpp +++ b/nano/secure/ledger.hpp @@ -89,6 +89,7 @@ public: bool bootstrap_weight_reached () const; static nano::epoch version (nano::block const & block); nano::epoch version (nano::transaction const & transaction, nano::block_hash const & hash) const; + uint64_t height (nano::transaction const & transaction, nano::block_hash const & hash) const; static nano::uint128_t const unit; nano::ledger_constants & constants; nano::store & store; diff --git a/nano/secure/store.hpp b/nano/secure/store.hpp index c9a0b5cb..6798a695 100644 --- a/nano/secure/store.hpp +++ b/nano/secure/store.hpp @@ -756,7 +756,6 @@ public: virtual nano::store_iterator begin (nano::transaction const &) const = 0; virtual nano::store_iterator end () 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; }; /**