【发布时间】:2022-07-05 05:44:53
【问题描述】:
我在动态创建的 motoko 应用程序中使用actor classes。如何使用 dfx 升级这些容器。
使用dfx deploy 时,它只会升级静态actor 容器,而不是我动态创建的任何actor classes。
更新 1:
我发现 IC 管理容器可以使用 webassembly 字节在其他容器上安装新代码,但我不确定如何获取新代码来更新参与者类实例
对所有已部署的动态创建的 Actor 类进行更新的正确方法是什么?
示例
Main.mo
import A "ActorClass";
import Array "mo:base/Array";
import Cycles "mo:base/ExperimentalCycles";
actor MainCanister {
var created_canisters : [A.ActorClass] = [];
public func create_player() : async A.ActorClass {
let canister : A.ActorClass = await A.ActorClass();
created_canisters := Array.append(created_canisters, [canister]);
return canister;
};
};
ActorClass.mo
actor class ActorClass() {
}
第 1 步:部署
MainCainster 已按预期安装
第二步:调用create_playerfunc
创建了一个 ActorClass 的实例/容器
第 3 步:使用新的/更改的功能更新 ActorClass
第 4 步:重新部署
只有 MainCanister 被更新,而不是任何 ActorClass 实例
【问题讨论】:
-
您能否提供一些重现您的问题的基本示例?
-
已更新示例