7

我使用geth. 我还有一个合同,其中有一个函数调用另一个函数,它是第三个合同来设置地址。我可以在本地区块链上调用这个函数,比如 testRPC 和 Ganache 区块链,即使它在 TestNet 中也能工作。但是一旦我使用()设置了私有区块链geth。我收到此错误:

气体估计错误并显示以下消息(见下文)。事务执行可能会失败。是否要强制发送?

所需气体超过限额或交易总是失败

我在来电者帐户中有足够的 ETH,并且

  • 我在来电者帐户中有足够的 ETH,并且
  • GasLimit 足够高
  • 这些函数没有任何循环或花哨的操作,设置地址和一些条件检查
  • 节点是 Ubuntu 16.04
  • geth -v --> 1.8.12-stable
 // in contract 1 
 function func(address addr) public returns (bool result) {
    Cantract2 c = Cantract2(addr);
    if (!c.setAddress(..)) {
       return false;
    }
       .....
    return true;
  }
4

1 回答 1

0

您可能想要检查您的私有测试链的创世文件/链规范。

有一个称为块气体限制的变量会影响您可以在每个块上花费多少气体。我记得过去的默认值过去非常低,也许您正在使用这样的配置。你可以做什么:

  • 检查开发链配置中的块气体限制并根据您的需要增加它
  • 或者让本地测试链运行一段时间,因为客户端会慢慢投票默认区块气体限制,允许您在每个区块中进行更大的交易
于 2021-09-22T07:19:15.693 回答