1. 程式人生 > >在合約中讀取第三方合約的資料表のEOS智慧合約系列

在合約中讀取第三方合約的資料表のEOS智慧合約系列

在之前的文章中有提到在合約中獲取代幣餘額的方法,但是有時候這個方法會出現當代幣沒有餘額時被中斷報錯的問題,那麼我們可以使用主動獲取合約中資料表的方式去讀取資料,自行作判斷。

今天在這裡簡單地介紹一下如何讀取第三方合約資料表,這裡以eosio.token的accounts表為示例。

首先需要先定義一個相同結構的struct,用來接受資料

struct account
{
    asset balance;

    uint64_t primary_key() const { return balance.symbol.name(); }
};
typedef eosio::multi_index<N(accounts), account> accounts;

在action中使用獲取表資料

asset quantity = asset(1.0000, S(4, EOS));
account_name account = N(xxxxxxxxxxxx);
accounts acnts(N(eosio.token), account);
auto itr = acnts.find(quantity.symbol.name());

除錯的時候可以使用eosio_assert進行中斷輸出資料。

eosio_assert(false, std::to_string(itr->balance.amount).data());

可以看到輸出錯誤中的message資訊,即是獲取到的資料在這裡也就是餘額