1

最近由于Unable to create Enum via index 128, in Alive, Tombstone使用api.query.contracts.contractInfoOf. 我在命令行和 polkadot-js 应用程序资源管理器中都收到此错误。

这些是我采取的步骤:

  1. 部署一个合约salt
  2. 取回合同deployedAddress
  3. 采用contractInfoOf
  4. const contractInfo = await api.query.contracts.contractInfoOf(deployedAddress);

我试过降级ink!3.0-rc5, 3.0-rc43.0-rc3然后编译,但似乎没有任何区别。每当我的合同建立时,它都会rc6在顶部引用:

{"metadataVersion":"0.1.0","source":{"hash":"0x...","language":"ink! 3.0.0-rc6","compiler":"rustc 1.58.0-nightly",

这表明它忽略了我.toml并使用rc6来编译合同。

我将我的cargo-contract版本更改为,0.14但这会导致 polkadot-js 无法读取合约 abi。

我已经尝试使用来自 master 的最新提交以及使用release的substrate-contracts-node 。v0.1.0两种情况下的错误相同。

> rustup info

stable-x86_64-unknown-linux-gnu (default)
rustc 1.56.1 (59eed8a2a 2021-11-01)

有关 polkadot-js的问题中有更多详细信息。

有关如何获得工作设置的任何指示都会非常有帮助!

4

1 回答 1

1

这里的问题是substrate-contracts-node使用旧版本的元数据

在还原元数据合并并在本地构建之前,我能够检查 repo(cargo build)。

所以检查8d91b8e以使节点与版本7.7.16.6.1polkadot-js 包一起工作。

> git checkout 8d91b8e578065a7c06433cbd41ac059bf478a0bd
> cargo build
> ./target/debug/substrate-contracts-node --dev --tmp --version
substrate-contracts-node 0.1.0-8d91b8e-x86_64-linux-gnu
于 2021-11-03T19:59:41.247 回答