Adding pending to account_balance rpc.
This commit is contained in:
parent
361b50bc00
commit
1b308d8234
8 changed files with 37 additions and 4 deletions
|
@ -630,7 +630,7 @@ TEST (block_store, upgrade_v2_v3)
|
|||
rai::ledger ledger (store);
|
||||
rai::transaction transaction (store.environment, nullptr, true);
|
||||
ASSERT_TRUE (!init);
|
||||
ASSERT_EQ (3, store.version_get (transaction));
|
||||
ASSERT_LT (2, store.version_get (transaction));
|
||||
ASSERT_EQ (rai::genesis_amount, ledger.weight (transaction, key1.pub));
|
||||
ASSERT_EQ (0, ledger.weight (transaction, key2.pub));
|
||||
rai::account_info info;
|
||||
|
@ -659,6 +659,7 @@ TEST (block_store, upgrade_v3_v4)
|
|||
rai::ledger ledger (store);
|
||||
rai::transaction transaction (store.environment, nullptr, true);
|
||||
ASSERT_FALSE (init);
|
||||
ASSERT_LT (3, store.version_get (transaction));
|
||||
rai::pending_key key (key2.pub, key3.pub);
|
||||
rai::pending_info info;
|
||||
auto error (store.pending_get (transaction, key, info));
|
||||
|
|
|
@ -109,6 +109,7 @@ TEST (ledger, process_send)
|
|||
ASSERT_EQ (rai::test_genesis_key.pub, return1.account);
|
||||
ASSERT_EQ (rai::genesis_amount - 50, return1.amount.number ());
|
||||
ASSERT_EQ (50, ledger.account_balance (transaction, rai::test_genesis_key.pub));
|
||||
ASSERT_EQ (rai::genesis_amount - 50, ledger.account_pending (transaction, key2.pub));
|
||||
rai::account_info info2;
|
||||
ASSERT_FALSE (store.account_get (transaction, rai::test_genesis_key.pub, info2));
|
||||
auto latest6 (store.block_get (transaction, info2.head));
|
||||
|
@ -127,6 +128,7 @@ TEST (ledger, process_send)
|
|||
ASSERT_EQ (rai::genesis_amount - 50, return2.amount.number ());
|
||||
ASSERT_EQ (key2.pub, store.frontier_get (transaction, hash2));
|
||||
ASSERT_EQ (rai::genesis_amount - 50, ledger.account_balance (transaction, key2.pub));
|
||||
ASSERT_EQ (0, ledger.account_pending (transaction, key2.pub));
|
||||
ASSERT_EQ (50, ledger.weight (transaction, rai::test_genesis_key.pub));
|
||||
ASSERT_EQ (rai::genesis_amount - 50, ledger.weight (transaction, key2.pub));
|
||||
rai::account_info info3;
|
||||
|
@ -152,6 +154,7 @@ TEST (ledger, process_send)
|
|||
ASSERT_EQ (rai::test_genesis_key.pub, pending1.source);
|
||||
ASSERT_EQ (rai::genesis_amount - 50, pending1.amount.number ());
|
||||
ASSERT_EQ (0, ledger.account_balance (transaction, key2.pub));
|
||||
ASSERT_EQ (rai::genesis_amount - 50, ledger.account_pending (transaction, key2.pub));
|
||||
ASSERT_EQ (50, ledger.account_balance (transaction, rai::test_genesis_key.pub));
|
||||
ASSERT_EQ (50, ledger.weight (transaction, rai::test_genesis_key.pub));
|
||||
ASSERT_EQ (0, ledger.weight (transaction, key2.pub));
|
||||
|
@ -168,6 +171,7 @@ TEST (ledger, process_send)
|
|||
rai::pending_info pending2;
|
||||
ASSERT_TRUE (ledger.store.pending_get (transaction, rai::pending_key (key2.pub, hash1), pending2));
|
||||
ASSERT_EQ (rai::genesis_amount, ledger.account_balance (transaction, rai::test_genesis_key.pub));
|
||||
ASSERT_EQ (0, ledger.account_pending (transaction, key2.pub));
|
||||
}
|
||||
|
||||
TEST (ledger, process_receive)
|
||||
|
@ -208,6 +212,7 @@ TEST (ledger, process_receive)
|
|||
ASSERT_EQ (25, return2.amount.number ());
|
||||
ASSERT_EQ (hash4, ledger.latest (transaction, key2.pub));
|
||||
ASSERT_EQ (25, ledger.account_balance (transaction, rai::test_genesis_key.pub));
|
||||
ASSERT_EQ (0, ledger.account_pending (transaction, key2.pub));
|
||||
ASSERT_EQ (rai::genesis_amount - 25, ledger.account_balance (transaction, key2.pub));
|
||||
ASSERT_EQ (rai::genesis_amount - 25, ledger.weight (transaction, key3.pub));
|
||||
ledger.rollback (transaction, hash4);
|
||||
|
@ -215,6 +220,7 @@ TEST (ledger, process_receive)
|
|||
ASSERT_EQ (key2.pub, store.frontier_get (transaction, hash2));
|
||||
ASSERT_TRUE (store.frontier_get (transaction, hash4).is_zero ());
|
||||
ASSERT_EQ (25, ledger.account_balance (transaction, rai::test_genesis_key.pub));
|
||||
ASSERT_EQ (25, ledger.account_pending (transaction, key2.pub));
|
||||
ASSERT_EQ (rai::genesis_amount - 50, ledger.account_balance (transaction, key2.pub));
|
||||
ASSERT_EQ (rai::genesis_amount - 50, ledger.weight (transaction, key3.pub));
|
||||
ASSERT_EQ (hash2, ledger.latest (transaction, key2.pub));
|
||||
|
|
|
@ -79,6 +79,8 @@ TEST (rpc, account_balance)
|
|||
ASSERT_EQ (200, response.status);
|
||||
std::string balance_text (response.json.get <std::string> ("balance"));
|
||||
ASSERT_EQ ("340282366920938463463374607431768211455", balance_text);
|
||||
std::string pending_text (response.json.get <std::string> ("pending"));
|
||||
ASSERT_EQ ("0", pending_text);
|
||||
}
|
||||
|
||||
TEST (rpc, account_create)
|
||||
|
@ -1273,7 +1275,7 @@ TEST (rpc, version)
|
|||
ASSERT_EQ (200, response1.status);
|
||||
ASSERT_EQ ("1", response1.json.get <std::string> ("rpc_version"));
|
||||
ASSERT_EQ (200, response1.status);
|
||||
ASSERT_EQ ("2", response1.json.get <std::string> ("store_version"));
|
||||
ASSERT_EQ ("4", response1.json.get <std::string> ("store_version"));
|
||||
ASSERT_EQ (boost::str (boost::format ("RaiBlocks %1%.%2%.%3%") % RAIBLOCKS_VERSION_MAJOR % RAIBLOCKS_VERSION_MINOR % RAIBLOCKS_VERSION_PATCH), response1.json.get <std::string> ("node_vendor"));
|
||||
auto & headers (response1.headers);
|
||||
auto access_control (std::find_if (headers.begin (), headers.end (), [] (decltype (*headers.begin ()) & header_a) { return boost::iequals (header_a.first, "Access-Control-Allow-Origin"); }));
|
||||
|
|
|
@ -1360,6 +1360,15 @@ rai::uint128_t rai::node::balance (rai::account const & account_a)
|
|||
return ledger.account_balance (transaction, account_a);
|
||||
}
|
||||
|
||||
std::pair <rai::uint128_t, rai::uint128_t> rai::node::balance_pending (rai::account const & account_a)
|
||||
{
|
||||
std::pair <rai::uint128_t, rai::uint128_t> result;
|
||||
rai::transaction transaction (store.environment, nullptr, false);
|
||||
result.first = ledger.account_balance (transaction, account_a);
|
||||
result.second = ledger.account_pending (transaction, account_a);
|
||||
return result;
|
||||
}
|
||||
|
||||
rai::uint128_t rai::node::weight (rai::account const & account_a)
|
||||
{
|
||||
rai::transaction transaction (store.environment, nullptr, false);
|
||||
|
|
|
@ -354,6 +354,7 @@ public:
|
|||
void keepalive_preconfigured (std::vector <std::string> const &);
|
||||
rai::block_hash latest (rai::account const &);
|
||||
rai::uint128_t balance (rai::account const &);
|
||||
std::pair <rai::uint128_t, rai::uint128_t> balance_pending (rai::account const &);
|
||||
rai::uint128_t weight (rai::account const &);
|
||||
rai::account representative (rai::account const &);
|
||||
void ongoing_keepalive ();
|
||||
|
|
|
@ -141,9 +141,10 @@ void rai::rpc_handler::account_balance ()
|
|||
auto error (account.decode_account (account_text));
|
||||
if (!error)
|
||||
{
|
||||
auto balance (rpc.node.balance (account));
|
||||
auto balance (rpc.node.balance_pending (account));
|
||||
boost::property_tree::ptree response_l;
|
||||
response_l.put ("balance", balance.convert_to <std::string> ());
|
||||
response_l.put ("balance", balance.first.convert_to <std::string> ());
|
||||
response_l.put ("pending", balance.second.convert_to <std::string> ());
|
||||
rpc.send_response (response, response_l);
|
||||
}
|
||||
else
|
||||
|
|
|
@ -2725,6 +2725,18 @@ rai::uint128_t rai::ledger::account_balance (MDB_txn * transaction_a, rai::accou
|
|||
return result;
|
||||
}
|
||||
|
||||
rai::uint128_t rai::ledger::account_pending (MDB_txn * transaction_a, rai::account const & account_a)
|
||||
{
|
||||
rai::uint128_t result (0);
|
||||
rai::account end (account_a.number () + 1);
|
||||
for (auto i (store.pending_begin (transaction_a, rai::pending_key (account_a, 0))), n (store.pending_begin (transaction_a, rai::pending_key (end, 0))); i != n; ++i)
|
||||
{
|
||||
rai::pending_info info (i->second);
|
||||
result += info.amount.number ();
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
rai::process_return rai::ledger::process (MDB_txn * transaction_a, rai::block const & block_a)
|
||||
{
|
||||
ledger_processor processor (*this, transaction_a);
|
||||
|
|
|
@ -469,6 +469,7 @@ public:
|
|||
rai::uint128_t amount (MDB_txn *, rai::block_hash const &);
|
||||
rai::uint128_t balance (MDB_txn *, rai::block_hash const &);
|
||||
rai::uint128_t account_balance (MDB_txn *, rai::account const &);
|
||||
rai::uint128_t account_pending (MDB_txn *, rai::account const &);
|
||||
rai::uint128_t weight (MDB_txn *, rai::account const &);
|
||||
std::unique_ptr <rai::block> successor (MDB_txn *, rai::block_hash const &);
|
||||
std::unique_ptr <rai::block> forked_block (MDB_txn *, rai::block const &);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue