背景:
我们了解到,corda不是防篡改的,而是显而易见的。因此,如果一个节点直接在数据库中操作了一个状态,则其他节点将能够检测到该状态并将其标记在后续事务中。但是,我们的测试结果不符合我们的预期。 Corda并未标记已被篡改的状态,实际上,它在所有参与者节点中记录了带有被篡改数据的新状态。
先决条件:
注释契约(Contract)验证:我们注释了契约(Contract)代码,以检查是否在Corda中检测到数据篡改,而未在命令级别明确进行检查。
复制步骤:
金额不同的债务在左边,金额相同的两个债务在右边。在编辑器中,当它们的数量相同时,存在2个差异(可能与linear-id和时间戳有关),而当它们的数量不同时,则在左侧显示第三个差异。
如何使Corda参与者节点检测篡改状态?我在设置节点时错过了一些配置吗?
最佳答案
恐怕这个讨论可能要花一些时间,因为我们大多数人从今天下午开始休假。
我们将复制您在这里所做的工作。但是我不清楚这是一个错误。
您说您已注释掉契约(Contract)验证逻辑。听起来可能是这样的:
尝试转移到丙方时,该交易将被视为无效交易并被拒绝,因为这是非法的状态转换:数字不平衡。但是您注释掉了检查该代码的代码!因此,在任何地方都没有什么说不准您随意更改义务的大小的。。。如果注释掉包含此知识的代码,Corda不会隐式知道这一点。因此,从IOU应用程序的角度来看,在传输时更改大小现在是完全合法的事情。
这是一个问题-如果您不理会该应用程序并且不修改其源代码,是否检测到篡改?如果答案仍然是“否”,那么我们还有更多调查要做。