1

建立委托合同...

  1. Git 克隆“https://github.com/paritytech/ink.git”。
  2. 移动“示例/委托人”。
  3. 使用“build-all.sh”构建合约。

部署和执行

  1. 使用 Contract Pallet 执行 Substrate-Node-Template。
  2. 访问 Polkadot/Substrate 门户(https://polkadot.js.org/apps/?rpc=ws%3A%2F%2F127.0.0.1%3A9944#/accounts
  3. 转到合约页面(https://polkadot.js.org/apps/?rpc=ws%3A%2F%2F127.0.0.1%3A9944#/contracts
  4. 部署“delegator/target/ink/accumulator/accumulator.contract”。
  5. 通过将“accumlator”地址作为参数来部署“delegator/target/ink/adder/adder.contract”。
  6. 执行加法器合约的“inc”。
  7. 我收到错误“system.ExtrinsicFailedcontracts.ContractTrapped”

我怎么解决这个问题?

4

4 回答 4

2

最近,ContractTrapped如果您的合同构造函数不是,则可以返回payable。您目前需要payable如下装饰:

impl Dapp {
    /// Creates a new payable contract
    #[ink(constructor, payable)]
    pub fn new(initial_supply: Balance) -> Self {
        ...
    }
于 2022-01-26T11:12:11.023 回答
0

尝试从链下工作人员测试环境中调用智能合约时,我遇到了类似的问题。

DispatchError::Module { index: 0, error: 17, message: Some("ContractTrapped") }

在这里找到:primitives/sandbox/with_std.rs:275 中的错误:

Trap(Trap { kind: Unreachable })

但仍然不知道它为什么会发生以及如何解决它。

于 2021-06-03T15:50:38.753 回答
0

可能为时已晚,但我会将其留给未来的奋斗者。如果您遇到TrapCode,请仔细查看它以及TrapCode它是什么类型。这里有更多信息TrapCodeshttps ://docs.wasmtime.dev/api/wasmtime/enum.TrapCode.html

例如,我得到了一个TrapCode。我的底层节点告诉我TrapCode::UnreachableCodeReached这是因为我的智能合约没有实现某些功能,而其他合约试图从第一个智能合约调用这些功能,因此无法访问代码。

于 2021-10-26T18:13:58.547 回答
0

ContractTrapped如果您的基板节点和polkadot-js版本不兼容,您可能会遇到。

尝试更新您的以下内容packages.json

"@polkadot/api": "<add latest version>",
"@polkadot/api-contract": "<add latest version>",
"@polkadot/types": "<add latest version>",
"@polkadot/util": "<add latest version>"

最新版本可以在 GitHub 上的标签中找到。

于 2021-10-29T16:37:39.790 回答