Corda 核心概念:Time-windows

原文地址:https://docs.corda.net/key-concepts-time-windows.html

概要

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

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

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

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

时间窗 Time-windows

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

Time window

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

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

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