EOS之发币eosio.token智能合约解析

一、eosio.token.hpp文件结构

#pragma once
// 引入 资产(asset) 类型
#include 

// 引入其他基础文件定义文件,包括一些其他类型,譬如account_name
#include 

#include 

namespace eosiosystem{
    class system_contract;
}

namespace eosio{
    using std::string;
    
    //每个智能合约都要继承contract类
    class token : public contract{
        public:
            //类构造函数
            token( account_name self ):contract(self){}
            
            //函数声明,参数暂省略不写
            void create();//新建代币
            void issue();//发币
            void transfer();//转账
            
            //内联函数声明
            inline asset get_supply()const;
            inline asset get_balance()const;
        
        private:
            //结构体声明
            struct account{};
            struct currency_stats{};
            
            //设置mulit_index类型,存储结构体
            typedef eosio::multi_index accounts;
            typedef eosio::multi_index stats;
            
            // 两个私有函数的声明
            void sub_balance();//资产减少
            void add_balance();//资产增加
        
        public:
            //转账参数结构体声明
            struct transfer_args{};
            
    };
    
    asset token::get_supply()const
    {
        //内联函数实现
    }
    
    asset token::get_balance()const
    {
        //内联函数实现
    }
    
} /// namespace eosio

二、eosio.token.cpp 文件结构

#include 

namespace eosio{
    
void token::create()
{
    //函数实现
}

void token::issue()
{
    //函数实现
}

void token::transfer()
{
    //函数实现
    //调用了下面两个函数 sub_balance()/add_balance()
}

void token::sub_balance()
{
    //函数实现
}

void token::add_balance()
{
    //函数实现
}

} /// namespace eosio

//将 create issue transfer 三个共有函数声明为 action,供其他账户调用。
EOSIO_ABI ( eosio::token, (create)(issue)(transfer) )

三、eosio.token.abi 文件结构分析

{
    "version": ***,
    
    "types":[...],
    
    //声明actions和tables的数据结构
    "structs": [...],
    
    //声明智能合约有哪些可以调用的 action
    "actions": [...],
    
    //列出智能合约中需要建立的数据表名称,以及数据表中所储存的结构体名称。
    "tables": [...],
    
    "ricardian_clauses": [...],
    
    "abi_extensions": [...]
    
}

你可能感兴趣的:(EOS之发币eosio.token智能合约解析)