当我升级合同时,有两个步骤授权和启动。而且,由于每个状态都需要一步一步地完成(据我的理解),所以当我拥有大量数据时,将花费很长时间。
我最终使用循环调用API来查询一些数据,然后一个接一个地循环调用ContractUpgradeFlow。
结果是花了超过11个小时才完成升级。
所以问题是我是否创建流程A来查询StateV1
的列表作为输入并创建out输出作为StateV2
的列表。
StateV2
的下一个合同升级会不会有效果?答案 0 :(得分:1)
是的,如果有大量数据,那么进行显式升级是正确的,因为很多事情在幕后发生,这将需要时间。
每个未消耗状态都被采用,创建新交易,具有旧合同的旧状态和具有新合同的新状态 添加到此事务后,该事务将发送到每个签名者进行签名,设置适当的约束,最后将整个已签名的事务发送给公证人。
“所以问题是我是否创建流程A来查询StateV1的列表作为输入并创建out输出作为StateV2的列表”
是的,您可以很好地创建一个流程来查询StateV1的列表作为输入,并创建out输出作为StateV2的列表,但是请记住,您还必须注意上面提到的所有步骤截至目前,由ContractUpgradeFlow处理。
“这会减少合同升级的过程吗?”
不,我认为您必须处理ContractUpgradeFlow现已处理的上述所有步骤。
“应该更快吗?”
否,与ContractUpgradeFlow花费的时间相同