【问题标题】:Explicit vs Implicit upgrades of Contracts & States in CordaCorda 中合同和状态的显式与隐式升级
【发布时间】:2019-11-08 19:20:35
【问题描述】:

似乎有很多关于显式合约和状态升级的information,但似乎缺乏关于隐式合约和状态升级的信息。

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

更新: 我找到了那些samples,据我所知,根本没有状态升级过程!相反,所有流/状态和合约都是以向后兼容的方式创建的。但直观地说,如果我有 50 个版本,这是否意味着相关的代码片段将包含 50 个 if/else 用于所有可能的旧版本流?代码不会变得一团糟吗?有没有办法以某种方式使状态正常化?

【问题讨论】:

    标签: corda


    【解决方案1】:

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

    您可以采取以下措施来缓解这种条件逻辑的扩散:

    • 识别旧格式的所有状态。如果有的话,将它们迁移到新格式,方法是将它们花在事务中并用新格式重新创建它们。如果没有,请转到下一步。
    • 对您的合约代码执行另一个隐式升级,除了删除不再需要的条件逻辑外,没有任何功能更改。

    按照这些步骤,您可以逐步移除不需要的条件逻辑,逐步简化合约代码。但是,您实际上又回到了一种显式升级的形式,这可能不是很实用,具体取决于您网络中参与方和状态的数量。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-23
      • 2020-02-17
      • 2023-03-21
      • 1970-01-01
      • 2010-10-20
      • 2021-06-07
      相关资源
      最近更新 更多