1. 记录用户的token,比如有哪些代币
class [[eosio::contract("eosio.token")]] token : public contract {public:using contract::contract;[[eosio::action]]void _create( const text_name& issuer, const asset& maximum_supply);[[eosio::action]]void _issue( const text_name& to, const asset& quantity, const string& memo );[[eosio::action]]void _transfer( const text_name& from,const text_name& to,const asset& quantity,const string& memo);struct [[eosio::table]] account {asset balance;uint64_t primary_key()const { return balance.symbol.code().raw(); }};struct [[eosio::table]] currency_stats {asset supply;asset max_supply;name issuer;uint64_t primary_key()const { return supply.symbol.code().raw(); }};typedef eosio::multi_index< "accounts"_n, account > accounts;typedef eosio::multi_index< "stat"_n, currency_stats > stats;
}
1.1 accounts表
由不同的account对象组成,每个account对象持有不同代币的余额accounts表的范围限定为eosio帐户
eg. 有一个名为tom的eosio帐户,他有自己的范围。在他的范围内是一个名为accounts的表。在该表中是一个单独的account对象,用于他持有的每个代币,SYS和EOS
1.2 stat表
此表将包含现有代币的状态,新标记在其自己的符号名称范围内创建,范围内是一个包含currency_stats对象的stat表
-
stat表仅包含给定标记符号的单个currency_stats对象,由持有供应,max_supply和发行者的currency_stats对象(由struct currency_stats定义)组成。
-
stat表的范围限定为代币符号名称
(根据eosio::multi_index定义,code是具有写权限的帐户的名称,scope是存储数据的帐户)