显式或隐式升级Corda中的合同和国家

时间:2019-10-22 10:43:21

标签: corda

在显式合同和状态升级方面似乎有很多information,但似乎缺少有关隐式合同和状态升级的信息。

假设我对合同使用签名策略。如果我也想使用旧状态,如何将旧状态迁移到新状态?

更新: 我发现了这些samples,据我了解,根本没有状态升级过程!相反,所有流程/状态和合同都是以向后兼容的方式创建的。但是直觉上,例如,如果我有50个发行版,这是否意味着相关代码段将包含50个if / else(对于所有可能的旧版本)?代码不会变得一团糟吗?有什么办法可以使状态规范化吗?

1 个答案:

答案 0 :(得分:1)

我认为你是正确的。只要网络中存在旧版本的数据(即Corda状态),您就需要在合同代码中保留此条件逻辑,以便能够处理旧格式的状态。

为减轻条件逻辑的这种扩散,您可以采取以下措施:

  • 标识旧格式的所有状态。如果有的话,通过将它们花费在事务中并用新格式重新创建,将它们迁移到新格式。如果没有,请继续下一步。
  • 对合同代码进行另一次隐式升级,除了删除不再需要的条件逻辑外,该升级没有任何功能更改。

按照此步骤操作,您可以逐渐删除不需要的条件逻辑,从而逐步简化合同代码。但是,从本质上讲,您将恢复为显式升级的形式,这可能不太实用,具体取决于网络中的参与方和国家/地区的数量。