# Redspot known types
redspot known types 是一个自动添加已知的链的 types 的插件。
在 polkadot 中,添加 types 是很麻烦的事,因为必须手动添加,而不能自动生成。而且又时候也要处理不同链的版本的兼容性问题。
我们希望使用 redspot 的用户,能够专注合约开发,而不用操心这些细枝末节的事。所以我们添加了这个插件,目的就是为了解决不同链的 types 的问题。
大部分链都在 polkadot apps 上提交过 types,所有 types 定义都在 `@polkadot/apps-config` 这个 npm 包里面。所以我们会部分引用`@polkadot/apps-config` 中的 types 定义。但 `@polkadot/apps-config` 缺少开发环境的 types 定义。然后我们会手动补这一部分。
目前支持的链有 canvas, jupiter, europa,edgeware,plasm,clover。
我们已经将这个插件默认加入模版,用户无需进行额外配置。
如果需要手动添加这个插件,首先安装依赖:
```bash=
$ yarn add @redspot/known-types
```
然后在 `redspot.config` 文件中,引入插件:
```javascript=
...
import "@redspot/known-types"
...
export default {
...
};
```
我们可以通过 jupiter 链来验证。我们将配置文件的节点,改为连接 jupiter,然后注意删除所有 types:
```javascript=
...
// import "@redspot/known-types"
...
export default {
...
networks: {
development: {
endpoint: "wss://ws.jupiter-poa.patract.cn/",
},
types: {},
...
}
...
};
```
然后启动 redspot console:
```bash=
$ npx redspot console
```
然后运行命令,查询账户信息:
```
$ await network.api.isReady;(await network.api.query.system.account("3eTmoLUQtK2dsVFtzLUztfPSd3KghZggMpnz1XdzVt33vK9c")).toHuman()
{
nonce: '0',
consumers: '1',
providers: '1',
sufficients: '4,106,261,181',
data: {
free: '23.2834 mDOT',
reserved: '0',
miscFrozen: '0',
feeFrozen: '0'
}
}
```
现在得到的账户信息是有问题的,我们可以引入 @redspot/known-types 然后对比一下差异:
```javascript=
...
import "@redspot/known-types"
...
export default {
...
networks: {
development: {
endpoint: "wss://ws.jupiter-poa.patract.cn/",
},
types: {},
...
}
...
};
```
然后,和之前一样步骤查询账户信息,这时我们应该会得到这样的结果:
```
{
nonce: '0',
consumers: '1',
providers: '1',
data: {
free: '100.0016 MDOT',
reserved: '0',
miscFrozen: '0',
feeFrozen: '0'
}
}
```
对比上面结果,这才正确的 accountInfo 的类型,@redspot/known-types 成功识别到了 jupiter 链并且注入了已知的 types。