触发迁移

⚠️ Update Notice:

Please read Substrate to Polkadot SDK page first.


本简要指南介绍了使用 Polkadot-JS Apps 触发运行时迁移的步骤。它假设迁移代码已编写完毕,并且新运行时已编译完毕。

添加自定义类型

将新的存储类型放入 types.json 中,您需要使用 UI 来触发迁移。我们的新 JSON 类型如下:

{
  "Nickname": {
    "first": "BoundedVec<u8>",
    "last": "Option<BoundedVec<u8>>"
  }
}

在 Polkadot-js Apps UI 中,转到设置 > 开发人员以从 types.json 添加自定义类型。您可以直接上传文件,也可以将类型直接粘贴到 UI 中。保存以添加它们。

增加 spec_version

增加 spec_version 以指定新的运行时版本。 在 runtime/src/lib.rs 中找到 runtime_version 宏。

 #[sp_version::runtime_version]
 pub const VERSION: RuntimeVersion = RuntimeVersion {
    //--snip
    spec_version: 100,
    //--snip
 }

增加 spec_version 以指定新的运行时版本。

    spec_version: 101,

上传运行时

使用 cargo build --release 重新编译您的运行时,这将生成更适合提交到区块链网络的较小构建工件。 WebAssembly 构建工件位于 target/release/wbuild/solo-template-node-runtime 目录中。例如,您应该看到以下 WebAssembly 工件:

    node_template_runtime.compact.compressed.wasm
    node_template_runtime.compact.wasm
    node_template_runtime.wasm

您现在拥有一个描述修改后的运行时逻辑的 WebAssembly 工件。要完成升级,您需要提交一个事务来更新节点以使用升级后的运行时:

转到 开发者 > 外部函数,使用管理帐户,选择 sudo pallet 和 sudoUncheckedWeight(call, weight) 函数。 选择 systemsetCode(code) 作为要进行的调用 点击文件上传,然后选择或拖放您为更新的运行时生成的紧凑型和压缩型 WebAssembly 文件(node_template_runtime.compact.compressed.wasm)(例如,./target/release/wbuild/solo-template-node-runtime/node_template_runtime.compact.wasm)。

提交事务,并在事务包含在区块中后,您将能够看到节点模板版本号指示运行时版本现在为 101。

如果您使用旧存储创建了 Nickname,您现在将能够查询链状态并查看此存储已更新为新的结构,并且您现在将能够使用名字和姓氏创建 Nickname。