【问题标题】:gas required exceeds allowance (8000000)所需气体超过限额 (8000000)
【发布时间】:2022-11-14 14:01:40
【问题描述】:

我的智能合约通常在本地 ganache 和公共测试网络上以 bsc 运行, 但是在我自己搭建的私链中,总是提示gas required超出了限额(8000000)。我根本找不到解决问题的办法。帮帮我

源代码:

IERC20 diamond;

function upgradePre(
        uint256 recordNo,
        uint256 tokenType,
        uint256 tokenId,
        uint256 expireTime,
        uint256 diamondquantity
    ) public payable {
        //is it timed out
        require(expireTime >= block.timestamp, "request expired");
        //Check for duplicate submissions
        require(!orders[recordNo].isCompletePre, "repeat transaction");
        //Ownership of the token
        require(
            msg.sender == _getOwnerByTokenIdAndTokenType(tokenId, tokenType),
            "owner exception"
        );
        //token's current level
        uint256 currentLevel = _getLevelByTokenIdAndTokenType(
            tokenId,
            tokenType
        );

        UpgradeConfItem memory upgradeConfItem = _getUpradeConf(tokenId, tokenType, currentLevel + 1);
        //start transfer
        require(upgradeConfItem.diamondquantity > 0 && diamondquantity >= upgradeConfItem.diamondquantity, "diamondquantity too small");
        require(
            diamond.balanceOf(msg.sender) >= diamondquantity,
            "Insufficient balance"
        );
        require(
            (diamond.allowance(msg.sender, address(this)) >= (diamondquantity)),
            "0xSUB: Allowance required"
        );
        require(
            diamond.transferFrom(msg.sender, receiveAddress, diamondquantity),
            "payment failed"
        );

        //init upgrade order
        _initUpgradeOrder(recordNo, tokenId, tokenType, currentLevel);
        //request random number
        logService.requestRandomNum(1, recordNo);
        //print biz log
        _logUpgradePre(
            recordNo,
            tokenId,
            tokenType,
            diamondquantity,
            currentLevel
        );
    }

【问题讨论】:

    标签: ethereum solidity bsc


    【解决方案1】:

    因为这在 BSC 和 Ganache 中成功运行。然后请检查钱包中是否有足够的私链原生代币。

    【讨论】:

      【解决方案2】:

      我遇到了这个问题,因为网络问题。

      只需更改为具有更好网络的另一台服务器(或者哪个网络没有被 rpc 服务器阻止)

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-08-12
        • 1970-01-01
        • 2022-01-08
        相关资源
        最近更新 更多