Blockchain 无法在节点和运行时之间转换参数“tx”:解码字段调用时出错

Blockchain 无法在节点和运行时之间转换参数“tx”:解码字段调用时出错,blockchain,substrate,Blockchain,Substrate,当我想使用内置于基于基板的链和自定义类型的方法时,我得到以下错误: 2020-04-13 21:03:01 RPC-CORE:SubmitAndWatchExterinsic(Exterinsic:Exterinsic):ExterinsicStatus::1002:验证错误:执行(ApiError(“无法在节点和运行时之间转换参数`tx`:错误解码字段调用::Poe.0”):RuntimeApi(“执行(ApiError(\”无法在节点和运行时之间转换参数`tx`:错误de 2020-04-1

当我想使用内置于基于基板的链和自定义类型的方法时,我得到以下错误:

2020-04-13 21:03:01 RPC-CORE:SubmitAndWatchExterinsic(Exterinsic:Exterinsic):ExterinsicStatus::1002:验证错误:执行(ApiError(“无法在节点和运行时之间转换参数`tx`:错误解码字段调用::Poe.0”):RuntimeApi(“执行(ApiError(\”无法在节点和运行时之间转换参数`tx`:错误de
2020-04-13 21:03:01 DRR:错误:1002:验证错误:执行(ApiError(“无法在节点和运行时之间转换参数`tx`:错误解码字段调用::Poe.0”):运行时API(“执行(ApiError(\”无法在节点和运行时之间转换参数`tx`:错误
判定元件
在RpcCoder._checkError(/c/mvce/js cli/node_modules/@polkadt/rpc provider/coder/index.js:83:13)
在RpcCoder.decodesponse(/c/subscriber mvce/js cli/node_modules/@polkadt/rpc provider/coder/index.js:46:10)
在WsProvider.value(/c/mvce/js cli/node_modules/@polkadt/rpc provider/ws/provider.js:160:90)
在W3CWebSocket.value[as-onmessage](/c/mvce/js-cli/node_modules/@polkadt/rpc-provider/ws/provider.js:140:153)
在W3CWebSocket._dispatchEvent[作为dispatchEvent](/c/mvce/js cli/node_modules/yaeti/lib/EventTarget.js:107:17)
在W3CWebSocket.onMessage(/c/mvce/js cli/node_modules/websocket/lib/W3CWebSocket.js:234:14)

在WebSocketConnection上。

在TypeScript中创建并发送到Subscriber节点的负载有问题。Subscriber节点似乎无法解析该对象

我发现您肯定在
操作
类型定义中缺少一个属性:

  Operation: {
    op: 'Vec<u8>',
    desc: 'Vec<u8>',
    hashAlgo: 'Vec<u8>',
    encodeAlgo: 'Vec<u8>',
    prefix: 'Vec<u8>',
    ops: 'Vec<Operation>',
  },
操作:{
op:‘Vec’,
描述:“Vec”,
hashAlgo:'Vec',
encodeAlgo:'Vec',
前缀:“Vec”,
行动:"Vec",,
},
缺少
哈希位

进一步看,预定义的
photo
规则是否正确满足运行时定义的对象定义并不明显


您需要检查端到端是否正确定义了这些自定义类型,以及生成的有效负载是否有效。

是的,缺少了
哈希位,但这不是解决方案。添加
哈希位后,对定义进行了修改,使其具有完全相同的结构(与键的位置相同)与运行时一样,然后按其应该的方式工作。
这意味着遵循

pub结构规则{
版本:u32,
说明:Vec,
创造者:Vec,
为了什么:为了什么,
家长:Vec,,
行动:Vec,
构建参数:操作,
}
在JS应用程序中必须是这样

{
  Rule: {
    version: 'u32',
    description: 'Vec<u8>',
    creator: 'Vec<u8>',
    forWhat: 'ForWhat',
    parent: 'Vec<u8>',
    ops: 'Vec<Operation>',
    buildParams: 'Operation',
  }
}
{
规则:{
版本:“u32”,
description:'Vec',
创建者:“Vec”,
为了什么,‘为了什么’,
父项:“Vec”,
行动:"Vec",,
buildParams:“操作”,
}
}

如果我们更改定义中键的顺序,它将失败。

您能为
规则
类型提供有效的有效负载吗