使用自定义类型(Substrate FRAME 托盘 + Polkadot/Substrate 前端)

sea*_*212 2 substrate polkadot-js polkadot

场景:您正在为使用 Storage 或 Events 中的自定义类型的自定义Substrate节点开发FRAME 托盘。要与您的自定义 Substrate 节点交互,请使用Polkadot/Substrate 前端

问题:

  1. 当您查询包含自定义类型的存储时,前端会返回 “unknown”作为
  2. 当您使用自定义类型提交要包含在应该导致事件发射的块中的外部变量时,Polkadot/Substrate前端似乎卡住了,同时声明外部变量已“准备好”包含在一个块中。但是,情况并非如此,如果您检查外部应包含的块,您会看到以下错误消息:

无法检索指定的块详细信息。createType(Vec):: 结构:“数据”失败:: 无法构造未知类型 YOUR_CUSTOM_TYPE

sea*_*212 5

解决方案:您必须在 Polkadot/Substrate 前端指定您的自定义类型。为此,请在顶部菜单栏中选择“设置”->“开发人员”:

设置

您可以在下方看到标题为“其他类型作为 JSON 文件”的文本字段。在此文本字段中,您必须输入前端的自定义类型才能正确解释这些类型。在右上角的版本号正下方,应该可以看到一个灰色圆圈中的白色大问号。通过单击这个问号,一个帮助对话框会滑入。

示例配置:我们以我在本课中学到的托盘为例。在突出显示的行中,您会看到自定义枚举“States”:

pub enum States {
    Propose,
    VotePropose,
    Concern,
    VoteConcern,
    VoteCouncil,
}
Run Code Online (Sandbox Code Playgroud)

使用帮助对话框(白色问号),结果是正确的配置 JSON 片段如下所示:

"States": {
    "_enum": [
        "Propose",
        "VotePropose",
        "Concern",
        "VoteConcern",
        "VoteCouncil"
    ]
}
Run Code Online (Sandbox Code Playgroud)