如何在 Substrate 节点模板中使用 Polkadot-js API?

Jos*_*rff 2 substrate

在 Substrate 生态系统中,通过分叉Substrate Node Template开始编写新的区块链节点是很常见的。用户界面有几个选项(例如Appsfront-end-template),它们都基于相同的底层Polkadot-JS API

某些版本的 API 与某些版本的节点模板一起使用,无需任何自定义配置,但通常必须向 API 提供有关节点使用哪些类型的信息。提供类型的过程记录在https://polkadot.js.org/api/start/types.extend.html#impact-on-extrinsics我需要提供哪些类型

Jos*_*rff 5

2020 年 3 月 10 日,此处的 Substrate 节点模板引入了类型不兼容的更改。我将使用术语“旧”和“新”来指代此日期之前和之后。

直接使用 API

如果您使用带有 polkadot-js API 的新节点模板,则需要使用此处记录的以下类型

{
  "Address": "AccountId",
  "LookupSource": "AccountId"
}
Run Code Online (Sandbox Code Playgroud)

使用前端包

问题中提到的前端都已更新,以减轻用户的生活。该应用程序UI在这里和前端模板这里。但是,如果您尝试将旧节点模板与新前端一起使用,反之亦然,则需要进行一些自定义类型注入。

旧节点模板,旧前端

无需自定义类型

新节点模板,新前端

无需自定义类型

旧节点模板,新前端

{
  "Address": "GenericAddress",
  "LookupSource": "Address"
}
Run Code Online (Sandbox Code Playgroud)

新节点模板,旧前端

{
  "Address": "AccountId",
  "LookupSource": "AccountId"
}
Run Code Online (Sandbox Code Playgroud)

如何注入类型

在应用程序中

转到Settings左侧的Developer选项卡和顶部的选项卡。粘贴类型。

在前端模板中

修改这个文件https://github.com/substrate-developer-hub/substrate-front-end-template/blob/dff9783e29123f49a19cbc43f5df7ae010c92775/src/config/common.json#L4