//交易资产
//from 谁转出来
//to 转给谁
//quantity 数量
//memo 转账的时候的备注
void token::transfer(account_name from , account_name to, asset quantity, string memo)
{
print("transfer"); //打印一个信息,表示要转账了。
require_auth(from ); //检查发行人的授权。
auto sym =quanity.symbol.name(); //把资产名字取出来
stats stastable(_self, sym); //系统和数据库交互的一个工具,得到该智能合约的拥有者名下的这个资产的数据表。
//_self 这个资产的拥有者(发行人)
const auto & st = statstable.get(sym);
//收据 ,就是把资产从from转到to后,需要得到收据。
require_recipient(from ); //得到from 收据
require_recipient(to); //得到to收据
eosio_assert(quanity.is_valid(),"invalid quantity"); //如果是无效的,报错信息
eosio_assert(quantity.amount>0,"must transfer posivive quantity"); //如果不大于0,报错信息
//实现交易
sub_balance(from,quantity,st);
add_balance(to,quantity,st,from);
}