Corda 核心概念 – Timewindow

概要

  • 如果一个 transaction 包含了一个 time-window,那么这个 transaction 只能在这个 time-window 里被提交
  • notary 具有控制发生的时间的权利,当在 time-window 之外的时候,notary 可以拒绝提交 transaction
  • time-window 可以有开始和结束时间,或者只有两者之中的一个

分布式系统中的时间 Time in a distributed system

Notary 也可以作为时间戳的验证者,在它确认一笔交易前,需要确保这笔交易是发生在指定的时间窗里。

为了让一个时间窗有意义,交易的提出者必须要明确指出交易必须要在某个时间窗内发生。交易的一方可以获得一个时间窗签名,来证明一些事件是在某个时间点前发生的,还是按时发生的,还是之后发生的。

在创建交易的一方和 notary 之间是无法实现时间的同步的。这并不仅仅是因为物理或者网络的延迟,还会因为在插入命令和获得 notary 签名之间可能会发生很多其他的步骤(比如发送交易到涉及到的其他节点,请求人工的审批等)。所以交易被发送到 notary 的时间和交易创建的时间可能会不同。

时间窗 Time-windows

因为这个原因,交易中涉及到的时间会被制定为一个时间窗,而不是一个绝对的时间。在一个分布式系统中是永远不会有“真实的时间”的,只有一个大概的时间。时间窗可以是开放的(比如在某个时间点后,或者某个时间点之前)或者是一个闭合的范围。

通过这种方式,我们表达了我们的想法,就是“当前的时间”是没有真实的值的。甚至当在某个时间之前和之后都被包含的时候,交易也可能会在那个时间窗中的任何时间发生。

通过创建一个关闭或者开放的范围,我们允许用一下的方式生成时间窗:

  • 一笔交易在指定时间之后的某个时间发生(比如在一个终止事件之后)
  • 一笔交易在指定时间之前的任何时间发生(比如破产事件之前)
  • 一笔交易在制定时间前后的某个时间发生(比如在指定的某一天)

如果一个时间窗需要被转换成一个绝对的时间(比如为了显示的原因),这里会有一个 utility 的方法来计算一个中间点时间。

发表评论

电子邮件地址不会被公开。 必填项已用*标注