如何使用最新的 polkadot-js 和基板合约节点查询合约信息?

Posted

技术标签:

【中文标题】如何使用最新的 polkadot-js 和基板合约节点查询合约信息?【英文标题】:How can I query contract info with the latest polkadot-js and substrate contracts node? 【发布时间】:2021-11-03 14:37:57 【问题描述】:

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

这些是我采取的步骤:

    使用salt 部署合约 检索合同deployedAddress 使用contractInfoOf const contractInfo = await api.query.contracts.contractInfoOf(deployedAddress);

我尝试将ink! 降级为3.0-rc53.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。

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

> rustup info

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

issue on polkadot-js 中有更多详细信息。

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

【问题讨论】:

【参考方案1】:

这里的问题是substrate-contracts-node 使用old version of the metadata。

我能够在元数据合并恢复并在本地构建之前签出存储库 (cargo build)。

因此,请查看 8d91b8e 以使该节点与 polkadot-js 包的 7.7.16.6.1 版本一起使用。

> git checkout 8d91b8e578065a7c06433cbd41ac059bf478a0bd
> cargo build
> ./target/debug/substrate-contracts-node --dev --tmp --version
substrate-contracts-node 0.1.0-8d91b8e-x86_64-linux-gnu

【讨论】:

以上是关于如何使用最新的 polkadot-js 和基板合约节点查询合约信息?的主要内容,如果未能解决你的问题,请参考以下文章

Hyperledger Fabric 2.x 动态更新智能合约

markdown 我为网页设计师和开发者提供的“杀手合约”的最新版本

markdown 我为网页设计师和开发者提供的“杀手合约”的最新版本

markdown 我为网页设计师和开发者提供的“杀手合约”的最新版本

markdown 我为网页设计师和开发者提供的“杀手合约”的最新版本

markdown 我为网页设计师和开发者提供的“杀手合约”的最新版本