simple.token Action 구현

in #eos6 years ago
#include "simple.token.hpp"
#include <eosiolib/eosio.hpp>
#include <eosiolib/asset.hpp>

void token::add_balance(account_name payer,account_name to,asset q,std::string memo){
        _accounts acc(_self,_self);

        auto toitr = acc.find(to);
        if( toitr == acc.end() ) {
                acc.emplace (payer,[&](auto& a) {
                                a.owner =to;
                                a.balance =q;
                                });

        } else {
                acc.modify(toitr,0, [&](auto& a){
                                a.owner = to;
                                a.balance = q;
                                });
        }

}

void token::sub_balance(account_name payer, account_name to, asset q, std::string memo){
        _accounts acc(_self,_self);

        auto toitr = acc.find(to);
        acc.modify(toitr,0,[&](auto& a){
                        eosio_assert(a.balance >= q,"Not enough token balance");
                        a.balance -= q;
                        });
}

void token::issue(account_name to,asset q, std::string memo){
        add_balance(_self,to,q,"Issue");
}

void token::transfer(account_name from, account_name to, asset q, std::string memo){
        add_balance(from,to,q,"Received");
        sub_balance(to,from,q,"Transferred");
}

Coin Marketplace

STEEM 0.17
TRX 0.13
JST 0.028
BTC 59705.02
ETH 2619.44
USDT 1.00
SBD 2.39