在显式合同和状态升级方面似乎有很多information,但似乎缺少有关隐式合同和状态升级的信息。
假设我对合同使用签名策略。如果我也想使用旧状态,如何将旧状态迁移到新状态?
更新: 我发现了这些samples,据我了解,根本没有状态升级过程!相反,所有流程/状态和合同都是以向后兼容的方式创建的。但是直觉上,例如,如果我有50个发行版,这是否意味着相关代码段将包含50个if / else(对于所有可能的旧版本)?代码不会变得一团糟吗?有什么办法可以使状态规范化吗?
答案 0 :(得分:1)
我认为你是正确的。只要网络中存在旧版本的数据(即Corda状态),您就需要在合同代码中保留此条件逻辑,以便能够处理旧格式的状态。
为减轻条件逻辑的这种扩散,您可以采取以下措施:
按照此步骤操作,您可以逐渐删除不需要的条件逻辑,从而逐步简化合同代码。但是,从本质上讲,您将恢复为显式升级的形式,这可能不太实用,具体取决于网络中的参与方和国家/地区的数量。