1

All previous answers before used some function called get_balance, but there is none listed like that in the api https://eosio.github.io/eosio.cdt/1.6.0/functions.html.

1
  • What kind of balance you are trying to get? Could you provide a little bit more context?
    – han
    Jul 16 '19 at 7:22
4

You need to access the accounts table of the appropriate token contract, in the scope of the token that you want to check the balance for:

struct accounts
{
  eosio::asset balance;
  uint64_t primary_key() const {return balance.symbol.code().raw();}
};
typedef eosio::multi_index< eosio::name("accounts"), accounts > accounts_table;

accounts_table tmp(eosio::name("TOKEN_CONTRACT"), eosio::name("ACCOUNT_NAME").value);
eosio::symbol TOKEN_SYMBOL = whatever the token symbol is;
auto itr = tmp.find(TOKEN_SYMBOL.code().raw());
eosio::check(itr != tmp.end(), "The token doesn't exist in the token contract, or the account doesn't own any of these tokens");
auto balance = itr->balance;
eosio::print("My balance is ",balance);

Where TOKEN_CONTRACT, ACCOUNT_NAME, and TOKEN_SYMBOL must be known parameters

4
  • Thanks. I don't know how to get your example code to work. accounts_table tmp(eosio::name("TOKEN_CONTRACT"), eosio::name("ACCOUNT_NAME")); Can't compile, because the second argument is expected to be of type account, not name and I don't know what to insert there.
    – Nozdrum
    Jul 16 '19 at 14:36
  • oops my bad, one moment. I forgot to add .value for the name scope. The code is updated now Jul 16 '19 at 14:36
  • Thanks it works now. I really don't understand why it works tho. I am not filling in this accounts_table, it gets filled by whoever TOKEN_CONTRACT is? I can just ask other contracts for the content of their tables? And does my accounts-struct have to be the same as theirs? Btw. you forgot a typedef in your multi_index-line
    – Nozdrum
    Jul 16 '19 at 14:50
  • Tokens are just stored in a table. Specifically a table from the token contract. All tables are transparently visible on the blockchain. Yes the struct has to be the same as theirs, otherwise when you tried to access the table you would have serialization problems Jul 17 '19 at 8:45

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.