【问题标题】:Web3 with WalletConnectProvider is not responding when using contract使用合约时带有 WalletConnectProvider 的 Web3 没有响应
【发布时间】:2021-10-02 22:43:54
【问题描述】:

我在 walletconnectprovider 和 web3 中使用 angular 我在调用 web3 没有返回任何响应的合同中的任何方法时遇到了这个问题。

这就是我初始化提供程序的方式

this.provider = new WalletConnectProvider({
  // infuraId: "27e484dcd9e3efcfd25a83a78777cdf1",
  rpc: {
    56: "https://bsc-dataseed.binance.org/"
  },
  chainId: 56
});

初始化 web3 和合约

const web3 = await new Web3(this.provider as any);

const contract = new web3.eth.Contract(JSON.parse(this.smartContract.abi),this.smartContract.contractAddress,{
  from: this.provider.wc.accounts[0]
});

每次我调用这个方法时,它下面的所有代码都不会执行。我还检查了我的网络选项卡,似乎根本没有运行 Http 请求。

await contract.methods.balanceOf(this.toAddress).call()
// codes here is not called

【问题讨论】:

  • 你有没有解决过这个问题,我也有同样的问题,只是在等待发送或呼叫的承诺时挂起,与 web3 中的其他承诺一起工作正常,例如web3.eth.getAccounts()
  • 仅更新 .call 将与 @wallet-connect/ethereum-provider 一起使用,但 .send 不起作用,交易将签署并完成,但承诺不会解决或捕获
  • 你们找到解决方案了吗?我也卡在这里了。

标签: angular web3 wallet-connect


【解决方案1】:

在函数中,在合约迭代前添加如下语句:

provider.enable();

对我来说它工作正常。如果我之前不包含这句话,则不会执行任何操作。

【讨论】:

  • 您的答案可以通过额外的支持信息得到改进。请edit 添加更多详细信息,例如引用或文档,以便其他人可以确认您的答案是正确的。你可以找到更多关于如何写好答案的信息in the help center
猜你喜欢
  • 2019-08-27
  • 2021-05-02
  • 2021-03-10
  • 1970-01-01
  • 2013-03-08
  • 2021-04-09
  • 2012-06-04
  • 2021-12-20
  • 2019-01-17
相关资源
最近更新 更多