Corda 科达:科达';隐式升级状态下的行为

Corda 科达:科达';隐式升级状态下的行为,corda,Corda,Corda是否强制隐式升级状态不降级 -这取消了降级规则的执行-我认为 你知道为什么要删除它吗?你可以将状态降级为合同的旧版本,是的 我们曾尝试在Corda 4中修复此问题,但不得不放弃。这是C4比我们希望的要长一点的原因之一 问题与滚动升级有关。在应用程序的滚动升级过程中,一些节点将使用应用程序的旧版本,而一些节点将使用新版本。当升级的流从vault中获取V1状态时,它可能会填充一个新字段或执行其他操作以生成V2状态。创建V2状态的事务将使用V2智能合约,并被发送到仍在V1上的节点。现在可以了

Corda是否强制隐式升级状态不降级

-这取消了降级规则的执行-我认为
你知道为什么要删除它吗?

你可以将状态降级为合同的旧版本,是的

我们曾尝试在Corda 4中修复此问题,但不得不放弃。这是C4比我们希望的要长一点的原因之一

问题与滚动升级有关。在应用程序的滚动升级过程中,一些节点将使用应用程序的旧版本,而一些节点将使用新版本。当升级的流从vault中获取V1状态时,它可能会填充一个新字段或执行其他操作以生成V2状态。创建V2状态的事务将使用V2智能合约,并被发送到仍在V1上的节点。现在可以了,因为新的智能合约逻辑将附加到事务中,通过p2p网络发送给对等方,并在其被列入白名单(或者将来在沙箱中运行)时执行。但这只适用于契约逻辑,而不适用于允许做更多事情的流。因此,较旧的节点将从vault中获取V2状态,并构造一个事务,该事务将附加并使用应用程序的V1,因为它安装了V1

这意味着,在应用程序的V1和V2同时运行的升级期间,数据可能会反复升级和降级,直到升级完成。它的本质是在可以在不同时间升级的不同方之间传递数据位。因此,我们无法保护用户免受降级,因为我们不知道升级何时完成

将来我们可能会再次尝试解决这个问题。目前,降级保护可以通过使用sentinel字段在应用程序级别实现