3

我一直在尝试在使用 EVM 和 Solidity 的 Harmony 区块链中使用 openzeppelin 制作可升级的智能合约......它在不使用 openzeppelin 时是可部署的,但是当我这样做时,它会抛出上述错误......还有我的一个队友能够毫无错误地部署它...

我不知道这是我的系统的问题,还是 Harmony 的 TruffleProvider 的问题......他们似乎正在尝试解决这个问题并在这个分支上构建https://github.com/harmony-one/sdk/tree/ truffle_provider,我的队友终于能够部署它,但我仍然遇到同样的错误:

$盎司部署

无需编译,所有合同都是最新的。

? 选择要实例化的合约:Ball

? 选择网络:稳定

✓ 新增合同:Ball

返回错误:方法 web3_clientVersion 不存在/不可用

4

1 回答 1

-1

代替

var web3 = new Web3(window.web3.currentProvider);

var web3 = new Web3(new Web3.providers.HttpProvider('http://localhost:8545'));

将 url 调整为以太坊节点地址(在我的例子中是 ganache-cli)。

在我的情况下,调用web3.version.getNode(). 发现此方法已被web3.eth.getNodeInfo()on web3 v1.0 取代。尝试将代码更新为web3.eth.getNodeInfo()但会抛出错误"web3Obj.eth.getNodeInfo is not a function"。ganashe-cli 和 metamask web3 提供程序之间很可能存在版本冲突。做出这种改变解决了这个问题。

于 2020-07-17T01:57:34.200 回答