我一直在尝试使用 Harmony 区块链中的 openzeppelin 制作一个可升级的智能合约,该区块链使用 EVM 和 Solidity... 不使用 openzeppelin 时它是可部署的,但是当我这样做时,它会抛出上述错误...... 我的一位队友能够毫无错误地部署它......
我不知道是我的系统问题,还是Harmony的松露提供商的问题......他们似乎正在尝试解决此问题并在此分支 https://github.com/harmony-one/sdk/tree/truffle_provider 上构建,我的队友最终能够部署它,但我仍然收到相同的错误:
$ 盎司部署
无需编译,所有合同都是最新的。
?选择要实例化的合约:Ball
?选择一个网络:稳定
✓ 新增合同:球
返回的错误:方法web3_clientVersion不存在/不存在 可用
替换
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 和小狐狸钱包 web3 提供商之间存在版本冲突。进行该更改解决了问题。