Не удалось преобразовать параметр `tx` между узлом и средой выполнения: поле декодирования ошибки Вызов - PullRequest
0 голосов
/ 13 апреля 2020

Когда я хочу использовать метод, который встроен в цепочку на основе подложки, вместе с пользовательским типом, я получаю следующую ошибку:

2020-04-13 21:03:01 RPC-CORE: submitAndWatchExtrinsic(extrinsic: Extrinsic): ExtrinsicStatus:: 1002: Verification Error: Execution(ApiError("Could not convert parameter `tx` between node and runtime: Error decoding field Call :: Poe.0")): RuntimeApi("Execution(ApiError(\"Could not convert parameter `tx` between node and runtime: Error de
2020-04-13 21:03:01 DRR: Error: 1002: Verification Error: Execution(ApiError("Could not convert parameter `tx` between node and runtime: Error decoding field Call :: Poe.0")): RuntimeApi("Execution(ApiError(\"Could not convert parameter `tx` between node and runtime: Error 
de
    at RpcCoder._checkError (/c/substrate-mvce/js-cli/node_modules/@polkadot/rpc-provider/coder/index.js:83:13)
    at RpcCoder.decodeResponse (/c/substrate-mvce/js-cli/node_modules/@polkadot/rpc-provider/coder/index.js:46:10)
    at WsProvider.value (/c/substrate-mvce/js-cli/node_modules/@polkadot/rpc-provider/ws/Provider.js:160:90)
    at W3CWebSocket.value [as onmessage] (/c/substrate-mvce/js-cli/node_modules/@polkadot/rpc-provider/ws/Provider.js:140:153)
    at W3CWebSocket._dispatchEvent [as dispatchEvent] (/c/substrate-mvce/js-cli/node_modules/yaeti/lib/EventTarget.js:107:17)
    at W3CWebSocket.onMessage (/c/substrate-mvce/js-cli/node_modules/websocket/lib/W3CWebSocket.js:234:14)
    at WebSocketConnection.<anonymous> (/c/substrate-mvce/js-cli/node_modules/websocket/lib/W3CWebSocket.js:205:19)
    at WebSocketConnection.emit (events.js:315:20)
    at WebSocketConnection.processFrame (/c/substrate-mvce/js-cli/node_modules/websocket/lib/WebSocketConnection.js:554:26)
    at /c/substrate-mvce/js-cli/node_modules/websocket/lib/WebSocketConnection.js:323:40

В основном я пытаюсь использовать типы, которые я определяю в динамический поддон Типы автоматически генерируются из метаданных с использованием пакета @polkadot/typegen.

Полный код для воспроизведения здесь https://github.com/woss/substrate-mvce

Ответы [ 2 ]

1 голос
/ 14 апреля 2020

Да, пропал hashBits, но это не было решением. После добавления hashBits AND внесены изменения в определение, чтобы иметь ТОЧНО ту же структуру (ту же позицию клавиш), что и во время выполнения, тогда он работал как надо. Это означает следующее

pub struct Rule {
  version: u32,
  description: Vec<u8>,
  creator: Vec<u8>,
  for_what: ForWhat,
  parent: Vec<u8>,
  ops: Vec<Operation>,
  build_params: Operation,
}

Это должно быть в приложении JS

{
  Rule: {
    version: 'u32',
    description: 'Vec<u8>',
    creator: 'Vec<u8>',
    forWhat: 'ForWhat',
    parent: 'Vec<u8>',
    ops: 'Vec<Operation>',
    buildParams: 'Operation',
  }
}

. Если мы изменим порядок ключей в определении, произойдет сбой.

0 голосов
/ 14 апреля 2020

Что-то не так с полезной нагрузкой, которую вы создаете в TypeScript и отправляете на узел Substrate. Кажется, что узел Substrate не может проанализировать объект.

Я обнаружил, что вам определенно не хватает свойства в определении типа Operation:

  Operation: {
    op: 'Vec<u8>',
    desc: 'Vec<u8>',
    hashAlgo: 'Vec<u8>',
    encodeAlgo: 'Vec<u8>',
    prefix: 'Vec<u8>',
    ops: 'Vec<Operation>',
  },

Это отсутствует hashBits.

И если посмотреть дальше, то не очевидно, что ваши предопределенные photo правила правильно удовлетворяют определению объекта, определенному вашей средой выполнения.

Вам необходимо проверять конец в конец что вы правильно определили эти пользовательские типы и что генерируемая полезная нагрузка действительна.

...