代码之家  ›  专栏  ›  技术社区  ›  Adrian

合同是否需要强制执行Oracle在IRS示例中签署了修复命令?

  •  0
  • Adrian  · 技术社区  · 6 年前

    我观察到,通常在一份典型的合同中,我们有一些类似于

    "The signers should be the participants for the state" using
    (command.signers.toSet() == state.participants.map { it.owningKey }.toSet())
    

    如果使用此特定命令,我们将强制执行,所需的签名者与参与者相等(假设交易的参与者始终必须签名),因此节点不会恶意更改流程以回避从某些方获取签名。

    在Oracle上的IRS演示中( RateFixFlow/NodeInterestRate ),则 State participants oracle 相关方。还有一个 verifyFixCommand 这验证了每当使用Fix命令从Oracle获取速率时,是否满足某些规则。

    为什么该命令还不强制要求参与者必须签名,而且oracle也必须签名,以确保oracle验证了修复率?否则,为什么流会得到oracle的签名呢。是什么首先阻止启动器绕过获取oracle签名。

    是否有任何理由不将下面的类似规则纳入其中?i、 e类

    "The signers should be the participants and oracle for the state" using (command.signers.toSet() == (state.participants.map { it.owningKey } + state.oracle.owningKey).toSet())

    1 回复  |  直到 6 年前
        1
  •  0
  •   Joel    6 年前

    这是一个疏忽。合同的 verify 方法应检查所需的签名者。

    如果您能创建一个PR来修改此内容,我们将不胜感激。贡献指南如下: https://docs.corda.net/contributing.html