合同不需要强制执行 Oracle 已在 IRS 示例中签署 Fix 命令吗?

Doesn't the contract need to enforce that Oracle has signed the Fix command in IRS example?

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

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

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

在 Oracle (RateFixFlow/NodeInterestRate) 上的 IRS 演示中,只要使用 Fix 命令从 Oracle 获取费率,State has the participants and oracle parties involved. There's also a verifyFixCommand 就会验证某些规则是否得到满足。

为什么该命令不强制要求参与者必须签名 - 而且 oracle 也必须签名以保证修复率由 Oracle 验证?否则为什么要让流程获得 oracle 的签名。是什么阻止发起者首先绕过获得 oracle 签名。

有什么理由不把下面的类似规则放进去吗?即

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

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

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