ZooBC 维基
交易

流动支付(流式支付)

流动支付在选定的分钟数内,把钱以流的方式从付款方付给接收方。全部金额在开始时就被锁定,并随时间推移均匀归属,因此接收方能看到钱确实在那里,而付款方只为实际经过的时间付费。流动支付适合按分钟计费的服务、按班次付薪或租赁。

开始流式支付

LiquidPayment 交易(类型 6)指定接收方、金额和 complete_minutes,即流式支付的时长(以分钟计)。通过指定代币的 id,它可以用代币而不是 ZBC 进行流式支付。区块打包它时:

  • 金额立即离开付款方的余额并被锁定;
  • 它在声明的分钟数内均匀归属;
  • 时间到时,链自动把全部金额支付给接收方,无需任何后续交易。

完成与否按前一个区块的时间戳逐个区块检查,因此出块者无法把区块时间戳提前,从而让最终付款提早到来(见 有效期与时间戳)。

停止流式支付

任何一方都可以用 LiquidPaymentStop(类型 262)提前结束流式支付。链随后按两笔交易时间戳之间经过的时间来拆分金额:接收方得到已经归属的部分,其余部分退还给付款方。接收方的部分向上取整到下一个原子单位,因此取整永远不会让接收方少拿。

一根从 0 到 10 分钟的条形,在第 3 分钟处停止:前 30% 归接收方,即 3 ZBC,其余 70% 退回发送方,即 7 ZBC
一根从 0 到 10 分钟的条形,在第 3 分钟处停止:前 30% 归接收方,即 3 ZBC,其余 70% 退回发送方,即 7 ZBC

任何一方都拿不到超出时钟所允许的部分。付款方拿不回已经归属的部分,接收方也拿不到尚未归属的部分。

与其他功能的配合

  • 分账策略。 流式支付的付款属于入账,因此会经过接收方的分账策略(见 分账策略与交易策略)。
  • 交易策略。 交易策略只针对 LiquidPayment 本身所指定的接收方进行检查。即使接收方之后选择拒收付款,流式支付的付款仍会到达它。
  • 代币流式支付。 如果被流式支付的代币过期,其 ZBC 储备会在持有者之间分配,而流式支付中的单位按已归属的多少分别计入双方(见 代币维护费(存续))。

流式支付是在其分钟数内连续进行的一次支付。若要一系列单独的付款,例如每月零用钱,请使用 定时转账;若要在未来某个区块高度或某个事件之后进行一次付款,请使用触发器。

另见