无法估算执行时的耗电量

时间:2018-12-03 06:20:18

标签: solidity remix

我在使用一个函数时遇到麻烦,该函数调用另一个函数并在另一个实例中发送同一合约的资金:

function buyLoan(address _sellLoan, address _sellPortfolio) public {

    uint tradePrice = Loan(_sellLoan).getBalance();

    // Now check if funds available
    if (tradePrice > address(this).balance) {
        // Not enough funds, so revert
        revert();
    } else {
        // Enough funds, so execute purchase

        // Get Sell Portfolio for transfer
        Portfolio sp = Portfolio(_sellPortfolio);

        // Finalize sale of Loan
        tr.executeTrade(_sellLoan, _tradeDate);

      if (!address(sp).send(tradePrice))
            revert();

        // Now add loan to buying portfolio
        addLoan(_sellLoan, tradePrice);

        // Delete loan from selling portfolio
        sp.deleteLoan(_sellLoan);
        }

}

当我尝试运行此功能时,出现错误,无法估计所需的气体。代码可以编译,而while或for循环则不需要。

我遇到的问题是我什至不知道在哪里可以找到答案...

确切的错误是:

  

气体估计错误,并显示以下消息(请参见下文)。的   事务执行可能会失败。您要强制发送吗?   JsonRpcEngine-响应没有错误或请求结果:{   “ jsonrpc”:“ 2.0”,“ id”:2522037241,“ method”:“ eth_estimateGas”,   “ params”:[{“ from”:“ 0x6d4dcc21e77ee5bc18d0f91497fc5285a71c836a”,   “至”:“ 0x1B15f071B4Fbd625Ebb3cC389D856ea2Ba7284A5”,“数据”:   “ 0x03fb6eb00000000000000000000000006f13ee53f5eced4021b768c2949f45c5075120890000000000000000000000001b15f071b4fbd625ebb3cc389d856ea2ba7284a5”,   “ value”:“ 0x1001d1bf800”}]}

我正在使用版本^ 0.4.25进行混音编译。您能给我任何帮助,我将不胜感激。

谢谢。

1 个答案:

答案 0 :(得分:0)

现在,此问题已解决。问题是使用发送(即2300)时没有足够的气体储备。在Smarx中使用call可以帮助我:

https://ethereum.stackexchange.com/questions/65879/error-when-executing-transfer-with-sufficient-funds?noredirect=1#comment79515_65879

关键是命令:

address(sp).send(tradePrice)

应为:

address(sp).call.value(tradePrice)("")

无论如何,感谢所有响应并试图提供帮助的人。