Chainlink external-initiator不支持metadata version 13问题咨询
你遇到的报错是由于当前master分支的external-initiator默认未兼容Substrate metadata V13版本导致的,两个问题的解决方案如下:
1 查看external-initiator支持的metadata版本
- 进入external-initiator的源码根目录,找到Substrate模块的类型定义文件,路径为
substrate/types.go - 查找文件内的
SupportedMetadataVersions常量数组,数组中列出的数值即为当前版本支持的所有metadata版本号 - 也可以在启动external-initiator时添加
--log-level debug参数开启调试日志,Substrate模块初始化时会自动打印当前支持的metadata版本列表
2 修改配置支持metadata V13
新版external-initiator为了精简代码默认移除了V14以下版本的metadata兼容支持,你可以通过修改源码的方式添加V13兼容,操作步骤如下:
- 打开
substrate/types.go文件,在SupportedMetadataVersions数组中新增13的版本定义 - 检查同文件下的metadata解析逻辑:
如果现有解析逻辑仅支持V14+的通用metadata结构,需要补充V13版本的字段适配代码,主要调整事件、存储项的读取逻辑,适配V13的metadata存储结构
如果有旧版本(如0.5.x版本分支)的V13兼容代码,可以直接将对应逻辑迁移到当前代码中
- 修改完成后执行
make install命令重新编译生成external-initiator二进制文件 - 用新的二进制文件重启external-initiator服务,再重新在Chainlink节点添加作业即可正常运行
内容的提问来源于stack exchange,提问作者luckysky
相关产品推荐
相关产品推荐

