Removing block_store::account_calculated as this value is cached in sideband.
This commit is contained in:
parent
9bbbc089f5
commit
dcb4dbc34b
8 changed files with 30 additions and 53 deletions
|
@ -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);
|
||||
|
|
|
@ -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::block_hash, nano::block_w_sideband> nano::lmdb::block_store::begin (nano::transaction const & transaction) const
|
||||
{
|
||||
return store.make_iterator<nano::block_hash, nano::block_w_sideband> (transaction, tables::blocks);
|
||||
|
|
|
@ -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<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;
|
||||
|
|
|
@ -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::block_hash, nano::block_w_sideband> nano::rocksdb::block_store::begin (nano::transaction const & transaction) const
|
||||
{
|
||||
return store.make_iterator<nano::block_hash, nano::block_w_sideband> (transaction, tables::blocks);
|
||||
|
|
|
@ -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<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;
|
||||
|
|
|
@ -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
|
||||
{
|
||||
|
|
|
@ -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_info> nano::confirmation_height_store::g
|
|||
{
|
||||
return std::nullopt;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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<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;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue