我正在浏览官方文档,而在浏览https://docs.corda.net/key-concepts-contracts.html时遇到了以下声明。
交易验证必须是确定性的-合同应始终接受或始终拒绝给定的交易。例如,交易有效性不能取决于验证的时间。
据我了解,这意味着交易验证应独立于验证交易的时间。
稍后,在同一页面上,我看到了以下内容:
有时候,交易的有效性将取决于某些外部信息,例如汇率。在这种情况下,需要一个oracle。
这似乎与先前的声明相冲突。如果我使用汇率进行合同确认,确认会变得不确定吗?
如果我将EURUSD的汇率用作合同验证的参数之一,则该参数会随着时间而变化,由于汇率的变化,今天有效的状态更新将来可能会失效。
在这里我误会了吗?
答案 0 :(得分:0)
当您使用Oracle时,它是一个中立节点,如果满足其要求/验证,它将签署交易。
在合同本身上,您只是在强制必须使用Oracle的签名来签署交易,它不会检查由oracle验证的非确定性事实,它可以是任何任意信息/事实,即汇率。因此,从这个意义上来说,对于Contract Validation
,它仍然是确定性的。
答案 1 :(得分:0)
有时候,交易的有效性将取决于某些外部信息,例如汇率。在这种情况下,需要一个oracle。
此过程如下:
因此,甲骨文的签名断言,该外部信息在被包含时是有效的,即使该信息自此以来发生了变化(例如汇率变化)。因此,合同验证仍然是确定性的。