diff --git a/dap_chain_wallet.c b/dap_chain_wallet.c index 3f329b92ece5c95c5ae799458570520042c7ca26..bb0164f6294c73e1f710551588485e3d58d7e008 100755 --- a/dap_chain_wallet.c +++ b/dap_chain_wallet.c @@ -405,3 +405,31 @@ dap_chain_wallet_t * dap_chain_wallet_open(const char * a_wallet_name, const cha DAP_DELETE(l_file_name); return l_wallet; } + +/** + * @brief dap_chain_wallet_get_balance + * @param a_wallet + * @param a_net_id + * @return + */ +uint64_t dap_chain_wallet_get_balance(dap_chain_wallet_t *a_wallet, dap_chain_net_id_t a_net_id) +{ + dap_chain_net_t *l_net = dap_chain_net_by_id(a_net_id); + dap_chain_addr_t *l_addr =dap_chain_wallet_get_addr(a_wallet, a_net_id); + uint64_t l_balance = 0; + if (l_net) + { + dap_ledger_t *l_ledger = l_net->pub.ledger; + size_t l_addr_tokens_size = 0; + char **l_addr_tokens = NULL; + dap_chain_ledger_addr_get_token_ticker_all_fast(l_ledger, l_addr, &l_addr_tokens, &l_addr_tokens_size); + for(size_t i = 0; i < l_addr_tokens_size; i++) { + if(l_addr_tokens[i]) { + l_balance = l_balance + dap_chain_ledger_calc_balance(l_ledger, l_addr, l_addr_tokens[i]); + } + DAP_DELETE(l_addr_tokens[i]); + } + DAP_DELETE(l_addr_tokens); + } + return l_balance; +} diff --git a/dap_chain_wallet.h b/dap_chain_wallet.h index 963aae5dcd150441686c16a58d6115ad2a7dff6e..b4cc933e5e6d398c5d02f73d3b83178581fe3a67 100755 --- a/dap_chain_wallet.h +++ b/dap_chain_wallet.h @@ -58,4 +58,6 @@ size_t dap_chain_wallet_get_certs_number( dap_chain_wallet_t * a_wallet); dap_pkey_t * dap_chain_wallet_get_pkey( dap_chain_wallet_t * a_wallet,uint32_t a_key_idx); dap_enc_key_t * dap_chain_wallet_get_key( dap_chain_wallet_t * a_wallet,uint32_t a_key_idx); +uint64_t dap_chain_wallet_get_balance(dap_chain_wallet_t *a_wallet, dap_chain_net_id_t a_net_id); + int dap_chain_wallet_save_file( dap_chain_wallet_t * a_wallet);