新手问答 如何实现 eos 延迟转账

EOSTraveler · 2018年09月17日 · 最后由 EOSTraveler 回复于 2018年09月17日 · 114 次阅读

如题

共收到 2 条回复

transaction 里面有一个 delay_sec 的参数,默认是0,可以通过自定义实现延迟EOS转账。 具体代码可以查看 contracts/eosiolib/transaction.hpp 我们通过写一个新的合约,实现延时转账的 send 功能

void send(account_name from, account_name to, asset amount, string memo, uint64_t delay) {
    eosio::transaction t{};
    t.actions.emplace_back(
    eosio::permission_level(from, N(active)), // with `[email protected]` permission
    N(eosio.token), // You're sending this to `eosio.token`
    N(transfer),   // to their `transfer` action
    std::make_tuple(from, to, amount, memo));  // with the appropriate args
    t.delay_sec = delay; // Set the delay
    t.send(eosio::string_to_name(memo.c_str()), from); // Send the transaction with some ID derived from the memo
    }
};

最后需要记得对发送者账户进行权限设置,让该合约有权限进行转账操作。

$ cleos set account permission <sender-account> active '{"threshold": 1,"keys": [{"key": "<sender-pubkey>","weight": 1}],"accounts": [{"permission":{"actor":"<contract-account>","permission":"eosio.code"},"weight":1}]}' owner -p <sender-account>

参考:https://eosio.stackexchange.com/questions/1900/how-to-transfer-eos-after-a-particular-delay 转自:http://blog.eosdata.io/index.php/2018/08/16/ru-he-jin-xing-zi-dong-de-yan-chieos-zhuan-zhang/

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册