是否可以创建流程以将状态迁移到新版本,而不使用合同升级?

时间:2019-03-26 10:17:47

标签: corda

当我升级合同时,有两个步骤授权和启动。而且,由于每个状态都需要一步一步地完成(据我的理解),所以当我拥有大量数据时,将花费很长时间。

我最终使用循环调用API来查询一些数据,然后一个接一个地循环调用ContractUpgradeFlow。

结果是花了超过11个小时才完成升级。

所以问题是我是否创建流程A来查询StateV1的列表作为输入并创建out输出作为StateV2的列表。

  • 会减少合同升级的过程吗?
  • 应该更快吗?
  • 这是否像升级合同一样考虑相同的结果?
  • 如果我要使用Corda合同升级而不是流程A,那么StateV2的下一个合同升级会不会有效果?

1 个答案:

答案 0 :(得分:1)

是的,如果有大量数据,那么进行显式升级是正确的,因为很多事情在幕后发生,这将需要时间。

每个未消耗状态都被采用,创建新交易,具有旧合同的旧状态和具有新合同的新状态 添加到此事务后,该事务将发送到每个签名者进行签名,设置适当的约束,最后将整个已签名的事务发送给公证人。

“所以问题是我是否创建流程A来查询StateV1的列表作为输入并创建out输出作为StateV2的列表”

是的,您可以很好地创建一个流程来查询StateV1的列表作为输入,并创建out输出作为StateV2的列表,但是请记住,您还必须注意上面提到的所有步骤截至目前,由ContractUpgradeFlow处理。

“这会减少合同升级的过程吗?”

不,我认为您必须处理ContractUpgradeFlow现已处理的上述所有步骤。

“应该更快吗?”

否,与ContractUpgradeFlow花费的时间相同