如果一个在合同中引用另一个,是否需要升级两个状态
Do you need to upgrade both states if one refers to the other in a contract
场景:我有 contractV1
个带有 ObligationV1
和 CashV1
的 cordapp。
在Obligation.Settle
命令中,它强制必须消耗ObligationV1
和CashV1
来结算义务。
假设需要将 CashV1
和 CashContractV1
升级到 V2。
因为义务合约对 CashV1
状态有一些依赖性,这是否意味着我必须将 ObligationContractV1
撞到 V2 以便它可以强制在 Settle 命令期间必须使用 CashV2?没有必要升级义务状态,因为什么都没有改变?)
如果您以与 CashV1
紧密耦合的方式编写 ObligationContractV1
,那么可以 - 您也必须升级 ObligationContractV1
。
但是,最好有一个所有 CashVX
状态都实现的抽象 Cash
接口。然后在 ObligationContractV1
中,您可以简单地强制其中一个状态的类型为 Cash
。那么你的合同就不会与特定的 Cash
版本紧密耦合。
场景:我有 contractV1
个带有 ObligationV1
和 CashV1
的 cordapp。
在Obligation.Settle
命令中,它强制必须消耗ObligationV1
和CashV1
来结算义务。
假设需要将 CashV1
和 CashContractV1
升级到 V2。
因为义务合约对 CashV1
状态有一些依赖性,这是否意味着我必须将 ObligationContractV1
撞到 V2 以便它可以强制在 Settle 命令期间必须使用 CashV2?没有必要升级义务状态,因为什么都没有改变?)
如果您以与 CashV1
紧密耦合的方式编写 ObligationContractV1
,那么可以 - 您也必须升级 ObligationContractV1
。
但是,最好有一个所有 CashVX
状态都实现的抽象 Cash
接口。然后在 ObligationContractV1
中,您可以简单地强制其中一个状态的类型为 Cash
。那么你的合同就不会与特定的 Cash
版本紧密耦合。