定时转账
定时转账是由单笔交易设置的一系列付款。付款方只签名一次,每笔付款到期时都由链来执行:工资、订阅费、零用钱,或一笔资助的归属。它可以支付 ZBC 或任何代币。
设置计划
ScheduledTransfer(类型 29)的交易体为 47 字节,声明以下内容:
| 字段 | 含义 |
|---|---|
| 代币 id | 要支付的资产;0 表示 ZBC |
| 金额 | 每笔付款的金额 |
| 间隔 | 两笔付款之间的时间,以秒计 |
| 付款次数 | 从 1 到 520 |
| 锁定期 | 第一笔付款之前的可选延迟 |
| 注资模式 | 0 为归属,1 为拉取(见下文) |
| 取消策略 | 可撤销或不可撤销 |
| 结束时间 | 可选 |
手续费只在创建计划时支付一次。之后各笔付款按间隔进行;每笔付款是否到期按前一个区块的时间戳判断,因此出块者无法把自己的区块时间戳提前,从而把某笔付款拉进该区块。
两种注资模式
- 归属(模式 0):创建计划时就锁定全部总额,并一次释放一笔付款。接收方知道钱确实在那里。
- 拉取(模式 1):不锁定任何资金。每笔付款到期时才从付款方的余额中扣取。连续错过四笔付款后,计划会自动取消。
归属模式的付款与任何入账一样,会经过接收方的分账策略;拉取模式的付款则不会(见 分账策略与交易策略)。
取消与重定向
- CancelSchedule(类型 30)结束一个计划。付款方只有在计划可撤销时才能取消它。接收方可以随时取消,这也是接收方谢绝一个计划的方式。归属计划被取消时,仍处于锁定状态的资金退还给付款方。
- ReassignSchedule(类型 31)让接收方把未来的付款重定向到另一个地址。
交易策略只针对 ScheduledTransfer 本身所指定的接收方进行检查,因此即使接收方之后选择拒收付款,后续付款仍会到达它。
计划不做的事
计划不会在网络上寻找便宜的时机:它的手续费在创建时支付,付款按付款方设定的间隔进行。它也不做买卖:它支付的是自己指定的资产,而把一种资产兑换成另一种资产是 兑换报价 和 市场与订单 的工作。
其他形式的付款由其他工具负责。对于应当逐分钟连续归属的资金,见 流动支付(流式支付)。对于在未来某个区块高度或某个事件得到确认时释放的单笔付款,见 触发器与见证。
如果计划中的代币过期,在分配该代币的 ZBC 储备时,仍锁定在归属计划中的单位计入计划的所有者(见 代币维护费(存续))。