外部验证错误:... FailedToConvertParameter "validate_transaction" 无法解码 MultiAddress

问题描述

我很抱歉这个新手问题...

我的计划是将鳍状肢合约部署到 substrate-node-template ((https://github.com/substrate-developer-hub/substrate-node-template);特别是 tag = 'monthly-2021-05'

我复制了 canvas-node (https://github.com/paritytech/canvas-node) 上的内容;任何pallets_contracts*
包括runtime lib.rs 中:

parameter_types! {
  ...
  pub const MaxDepth: u32 = 100;
  pub const MaxValueSize: u32 = 16_384;
  pub const MaxCodeSize: u32 = 2 * 1024;
}

impl pallet_contracts::Config for Runtime { 
  ... 
  type MaxDepth = MaxDepth;
  type MaxValueSize = MaxValueSize;
  type MaxCodeSize = MaxCodeSize;
}
...

impl_runtime_apis! {
  impl pallet_contracts_rpc_runtime_api::ContractsApi< 
   Block,AccountId,Balance,BlockNumber,Hash
> for Runtime {
  ... 
}

node rpc.rs

io.extend_with(
    ContractsApi::to_delegate(Contracts::new(client.clone()))
);

项目将构建,但当我点击 canvas-ui 上的 SignAndSubmit 按钮时,会出现警告:

enter image description here

 RPC-CORE: submitAndWatchExtrinsic(extrinsic: Extrinsic): ExtrinsicStatus:: 1002: Verification Error: Runtime error: Execution Failed: ApiError(FailedToConvertParameter { function: "validate_transaction",parameter: "tx",error: Error { cause: None,desc: "Could not decode `MultiAddress`,variant doesn\'t exist" } }): RuntimeApi,Execution Failed: ApiError,FailedToConvertParameter { function: \"validate_transaction\",parameter: \"tx\",desc: \"Could not decode `MultiAddress`,variant doesn\\\'t exist\" } }

我做错了什么?还是 Canvas-UI 仅适用于 Canvas-Node?​​p>

解决方法

感谢@NukeManDan,我进入了 polkadot.js.org/apps 中的设置下拉菜单 -> 开发人员,并更改为:

{ 
  "Address": "MultiAddress","LookupSource": "MultiAddress" 
}

之后,我刚刚进入 Developer 下拉菜单 -> Contracts ,点击 Upload & deploy code 按钮并选择我的 .contract 文件。

是的,我不再使用 Canvas UI。