背景:我们了解到corda不是防篡改的,而是很明显的篡改。因此,如果其中一个节点在数据库中直接操作一个状态,其他节点将能够检测并标记它,如果在后续事务中使用了该状态。然而,我们的测试结果与我们的预期不符。Corda没有标记被篡改的状态,实际上它在所有参与者节点中用篡改数据记录了新的状态。
Prerequisites:注释掉契约验证:我们注释契约代码以检查是否在Corda中检测到数据篡改,而没有在命令级别显式地进行检查。
复制的步骤:


不同金额的义务位于左侧,而金额相同的两项义务位于右侧。在编辑器中,当它们是相同的数量时,有两个差异(可能与线性id和时间戳相关),而当它们处于不同的数量时,第三个差异显示在左侧。






如何让Corda参与者节点检测篡改状态?我在设置节点时错过了一些配置吗?
发布于 2017-12-22 11:48:36
恐怕这次讨论可能需要一段时间,因为我们大多数人从今天下午起就休假了。
我们会试着复制你在这里所做的。然而,我不清楚这是否是一个bug。
您说您注释掉了合同验证逻辑。听起来可能发生了这样的事情:
这一交易将被视为无效,并被拒绝时,向甲方转移,因为这将是一个非法的状态转换:数字不平衡。但是你注释掉了检查它的代码!所以任何地方都不允许你在任何时候改变义务的大小。如果您注释掉包含此知识的代码,Corda就不知道这一点。因此,从IOU应用程序的角度看,在传输时改变大小是完全合法的。
这里有个问题--如果你不去修改应用程序,不修改它的源代码,是否检测到了篡改?如果答案仍然是“不”,那么我们还有更多的调查要做。
https://stackoverflow.com/questions/47918053
复制相似问题