Moving ::account off of nano::store and on to nano::ledger
This commit is contained in:
parent
6fb101d6ec
commit
ac56df90d2
6 changed files with 26 additions and 31 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 (*send));
|
||||
ASSERT_EQ (nano::dev::genesis_key.pub, ledger.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 (*open));
|
||||
ASSERT_EQ (key2.pub, ledger.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 (*open));
|
||||
ASSERT_EQ (key2.pub, ledger.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 (*receive));
|
||||
ASSERT_EQ (key2.pub, ledger.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 (*block));
|
||||
ASSERT_EQ (nano::dev::genesis_key.pub, ledger.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);
|
||||
|
|
|
@ -5095,7 +5095,7 @@ void nano::json_handler::work_generate ()
|
|||
auto transaction_l (node.store.tx_begin_read ());
|
||||
if (node.store.block.exists (transaction_l, hash))
|
||||
{
|
||||
account = node.store.block.account (transaction_l, hash);
|
||||
account = node.ledger.account (transaction_l, hash);
|
||||
}
|
||||
}
|
||||
auto secondary_work_peers_l (request.get<bool> ("secondary_work_peers", false));
|
||||
|
|
|
@ -1031,23 +1031,37 @@ bool nano::ledger::rollback (nano::write_transaction const & transaction_a, nano
|
|||
return rollback (transaction_a, block_a, rollback_list);
|
||||
}
|
||||
|
||||
nano::account nano::ledger::account (nano::transaction const & transaction_a, nano::block_hash const & hash_a) const
|
||||
nano::account nano::ledger::account (nano::block const & block) const
|
||||
{
|
||||
return store.block.account (transaction_a, hash_a);
|
||||
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::ledger::account (nano::transaction const & transaction, nano::block_hash const & hash) const
|
||||
{
|
||||
auto block = store.block.get (transaction, hash);
|
||||
debug_assert (block != nullptr);
|
||||
return account (*block);
|
||||
}
|
||||
|
||||
nano::account nano::ledger::account_safe (nano::transaction const & transaction_a, nano::block_hash const & hash_a, bool & error_a) const
|
||||
{
|
||||
if (!pruning)
|
||||
{
|
||||
return store.block.account (transaction_a, hash_a);
|
||||
return account (transaction_a, hash_a);
|
||||
}
|
||||
else
|
||||
{
|
||||
auto block (store.block.get (transaction_a, hash_a));
|
||||
if (block != nullptr)
|
||||
{
|
||||
return store.block.account (*block);
|
||||
return account (*block);
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -1062,7 +1076,7 @@ nano::account nano::ledger::account_safe (nano::transaction const & transaction,
|
|||
auto block = store.block.get (transaction, hash);
|
||||
if (block)
|
||||
{
|
||||
return store.block.account (*block);
|
||||
return account (*block);
|
||||
}
|
||||
else
|
||||
{
|
||||
|
|
|
@ -31,6 +31,7 @@ public:
|
|||
/**
|
||||
* Return account containing hash, expects that block hash exists in ledger
|
||||
*/
|
||||
nano::account account (nano::block const & block) const;
|
||||
nano::account account (nano::transaction const &, nano::block_hash const &) const;
|
||||
std::optional<nano::account_info> account_info (nano::transaction const & transaction, nano::account const & account) const;
|
||||
/**
|
||||
|
|
|
@ -106,24 +106,6 @@ 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);
|
||||
}
|
||||
|
||||
nano::uint128_t nano::block_store::balance (nano::block const & block) const
|
||||
{
|
||||
|
|
|
@ -752,8 +752,6 @@ 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;
|
||||
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