智能合约 EOS 智能合约内部调用 EOS 币转账功能

liweidong · June 01, 2018 · Last by cdlgz replied at June 02, 2018 · 12075 hits

1、调用 currency::inline_transfer 静态方法,方法定义如下:

static void inline_transfer( account_name from, account_name to, extended_asset amount, string memo = string(), permission_name perm = N(active) ) 
{
     action act( permission_level( from, perm ), amount.contract, N(transfer), transfer{from,to,amount,memo} );
     act.send();
}

解释:from,to 分别是转账者,接收者。amount 是一种扩展资产结构,结构内 contract 字段为资产属于那个合约。我们要实现内部调用 EOS 币转账功能,所以 contranct 应该设置成 N(eosio.token) 调用方式:

extended_asset amount(100,S(4,EOS));
amount.contranct = N(eosio.token);
cuurency::inline_transfer(from,to,amount);

2、定义 action,直接发送。其实 currency::inline_transfer 也是通过定义 action 实现的。

action(
      permission_level{ _self, N(active) },
      N(eosio.token), N(transfer),  //调用 eosio.token  Transfer 合约
      std::make_tuple(_self, to, quantity, std::string(""))
).send();

我正在基于 eos 智能合约个人开发一款卡牌游戏,欢迎有兴趣的同学加入,QQ 357879926

顶,说不定哪天也会遇到这个需求。

需要 Sign In 后方可回复, 如果你还没有账号请点击这里 Sign Up