EOS延迟交易实践
EOS智能合约开发实践一直缺延迟交易的实例,同时正好昨晚补上了DexChain基金模型的一个延迟逻辑(TODO)。今天正好和大家一起分享下延迟交易怎么写。 这里的延迟交易就是defer transaction。
应用场景
eosio.system系统合约的undelegatebw使用了该功能,用户赎回CPU抵押的CPU时,需要3天才会到账。这个就是通过会发起一个延时3天的refund交易实现的。
示例实践
创建delayedtransaction目录
mkdir delayedtransaction
用vim等工具新建delayedtransaction.cpp文件,并输入如下内容
编译
js4eos compile -o delaytransaction.wasm delaytransaction.cpp
js4eos compile -g delaytransaction.abi delaytransaction.cpp
执行
需要注意的是,每个延迟交易需要设置一个id, 如果存在相同的则会报错。也可以通过send的最后一个参数传true(允许替换)避免这个错误。
最大延迟时间
这个从genesis.json文件可以查询到
实践源码
https://github.com/itleaks/eos-contract/tree/master/delaytransaction-exp
公众号:区块链斜杠青年
欢迎大家加我微信:itleaks