EOS 智能合约源代码解读 (10)token合约“简介”

Posted thefist11

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了EOS 智能合约源代码解读 (10)token合约“简介”相关的知识,希望对你有一定的参考价值。

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是存储数据的帐户)

以上是关于EOS 智能合约源代码解读 (10)token合约“简介”的主要内容,如果未能解决你的问题,请参考以下文章

EOS 智能合约源代码解读 总体说明

EOS 智能合约源代码解读 symbol.hpp

EOS 智能合约源代码解读 asset.hpp

EOS 智能合约源代码解读 boot合约

EOS 智能合约源代码解读 合约开发示例

EOS 智能合约源代码解读 bios合约