背景: 我们知道,corda并非防篡改,而是具有防篡改迹象的功能。因此,如果其中一个节点直接在数据库中操纵状态,则其他节点将能够检测到并标记它,如果该状态在随后的交易中被使用。然而,我们的测试结果不符合我们的预期。 Corda没有标记被篡改的状态,事实上,它在所有参与方节点中记录了带有篡改数据的新状态。
先决条件: 注释掉合同验证:我们注释掉合同代码,以检查是否能在命令级别未明确执行检查时,Corda能否检测到数据篡改。
复制步骤:
- 启动Obligation Cordapp。
通过查看HEX之间的差异来编辑Party B的数据库中的VAULT_STATES表。
左侧为不同金额的债务,右侧为两个相同金额的债务。编辑器显示当它们在相同金额时,存在2个差异(可能与linear-id和时间戳相关),当它们在不同金额时,第3个差异显示在左侧。
使用SQL覆盖较低价值金额的特定部分,在Party B的vault上更新:
将所有义务从B方转移到C方。
如何使Corda参与方节点检测到篡改状态?在设置节点时是否遗漏了某些配置?