【问题标题】:Returned error: The method web3_clientVersion does not exist/is not available返回错误:方法 web3_clientVersion 不存在/不可用
【发布时间】:2020-09-30 03:29:24
【问题描述】:
我一直在尝试在使用 EVM 和 Solidity 的 Harmony 区块链中使用 openzeppelin 制作可升级的智能合约......
不使用openzeppelin时它是可部署的,但是当我这样做时,它会抛出上述错误......
我的一位队友能够毫无错误地部署它......
我不知道这是我的系统问题还是 Harmony 的 TruffleProvider 的问题......他们似乎正在尝试解决这个问题并在此分支上构建 https://github.com/harmony-one/sdk/tree/truffle_provider ,我的队友终于能够部署它,但我仍然遇到同样的错误:
$ oz 部署
无需编译,所有合约都是最新的。
?选择要实例化的合约:Ball
?选择网络:稳定
✓ 添加合同:Ball
返回错误:方法 web3_clientVersion 不存在/不可用
【问题讨论】:
标签:
ethereum
solidity
web3
web3js
openzeppelin
【解决方案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 v1.0 上被 web3.eth.getNodeInfo() 取代。尝试将代码更新为web3.eth.getNodeInfo(),但会抛出错误“web3Obj.eth.getNodeInfo 不是函数”。 ganashe-cli 和 metamask web3 提供程序之间很可能存在版本冲突。进行该更改可以解决问题。