摘要
建立新的定时任务系统合约,用户通过crontab语法格式设置定时任务。定时任务触发时,能够进行转账或者调用合约。
动机
让PalletOne支持定时任务,而不是通过外部账户来触发交易。
详细说明
建立一个全新的系统合约,ScheduleContract。在该合约中,具有:设置定时任务、启用定时任务、停止定时任务、销毁定时任务这几个功能函数。另外还有查询定时任务内容、查询任务历史执行情况等查询函数。
设置定时任务
设置定时任务主要包含2个重要参数:Schedule表达式、任务内容。Schedule表达式参考Cron的表示方式,唯一不同的是在区块链中不能精确到具体哪一秒执行任务,而是在指定时间之后下一个产块时包含任务。另外一种表达方式就不是绝对的时间,而是采用高度来表示,比如:高度值是1000的整倍数,即每1000个块执行一次任务。
任务内容分为:转账、合约调用两种。转账可以指定收款方、金额、资产ID,而且是一个数组,也就是说可以执行多个收款人的转账。合约调用需要指定合约地址、函数名、函数参数,以及调用合约时转移到合约上的TokenID和数量。
停止定时任务
停止定时任务只是将任务的状态改为停止,接下来到了指定的时间段不会触发该任务。
启用定时任务
如果任务已经被停止,那么可以通过启动定时任务函数将任务的状态又改回活动状态,下一次到时间点时将触发该任务。
销毁定时任务
表示这个定时任务再也不用了,需要彻底删除,同时将其中的Token回收回来。
参考
摘要
建立新的定时任务系统合约,用户通过crontab语法格式设置定时任务。定时任务触发时,能够进行转账或者调用合约。
动机
让PalletOne支持定时任务,而不是通过外部账户来触发交易。
详细说明
建立一个全新的系统合约,ScheduleContract。在该合约中,具有:设置定时任务、启用定时任务、停止定时任务、销毁定时任务这几个功能函数。另外还有查询定时任务内容、查询任务历史执行情况等查询函数。
设置定时任务
设置定时任务主要包含2个重要参数:Schedule表达式、任务内容。Schedule表达式参考Cron的表示方式,唯一不同的是在区块链中不能精确到具体哪一秒执行任务,而是在指定时间之后下一个产块时包含任务。另外一种表达方式就不是绝对的时间,而是采用高度来表示,比如:高度值是1000的整倍数,即每1000个块执行一次任务。
任务内容分为:转账、合约调用两种。转账可以指定收款方、金额、资产ID,而且是一个数组,也就是说可以执行多个收款人的转账。合约调用需要指定合约地址、函数名、函数参数,以及调用合约时转移到合约上的TokenID和数量。
停止定时任务
停止定时任务只是将任务的状态改为停止,接下来到了指定的时间段不会触发该任务。
启用定时任务
如果任务已经被停止,那么可以通过启动定时任务函数将任务的状态又改回活动状态,下一次到时间点时将触发该任务。
销毁定时任务
表示这个定时任务再也不用了,需要彻底删除,同时将其中的Token回收回来。
参考