在测试网上使用 Remix 部署合约时出现的问题

时间:2021-04-26 04:17:13

标签: solidity smartcontracts remix

我尝试使用 Remix 将合约部署到测试网(所有测试网都返回相同的消息),但出现此错误:

Gas estimation errored with the following message (see below). The transaction execution will likely fail. Do you want to force sending?
Internal JSON-RPC error. { "code": -32000, "message": "gas required exceeds allowance (30000000) or always failing transaction" }

但是当我尝试在 BSC 主网中部署它时,一切正常,没有错误。有什么建议吗?

这是相关代码

contract artemis is Context, IERC20, Ownable {
    // ...

    constructor() public {
        _rOwned[_msgSender()] = _rTotal;

        IUniswapV2Router02 _uniswapV2Router =
            IUniswapV2Router02(0x05fF2B0DB69458A0750badebc4f9e13aDd608C7F);
        // Create a Pancakeswap pair for this new token
        uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory())
            .createPair(address(this), _uniswapV2Router.WETH());

        // set the rest of the contract variables
        uniswapV2Router = _uniswapV2Router;

        //exclude owner and this contract from fee
        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;

        emit Transfer(address(0), _msgSender(), _tTotal);
    }

    // ...
}

我在这里上传了整个代码,因为它很长。

code

1 个答案:

答案 0 :(得分:6)

IUniswapV2Router02 _uniswapV2Router =
    IUniswapV2Router02(0x05fF2B0DB69458A0750badebc4f9e13aDd608C7F);
// Create a Pancakeswap pair for this new token
uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory())
    .createPair(address(this), _uniswapV2Router.WETH());

构造函数中的这些行试图与主网上 exists 的合约进行交互。但是您在测试网上,在此地址上有 no contract

this post 中所述,Pancake 测试网路由器地址为 0xD99D1c33F9fC3444f8101754aBC46c52416550D1。所以你需要把硬编码的地址替换成这个。