Remix IDE部署以太坊主网合约遇EVM回滚错误求助
以太坊主网部署合约EVM回滚问题排查方案
- 调整主网Gas参数:主网Gas波动频繁,Remix默认Gas Limit可能不足。手动将Gas Limit设为3000000(ERC20合约部署足够覆盖),Gas Price选择当前主网中位数水平,避免用过低的默认值导致交易失败。
- 确认账户ETH余额:主网部署需支付Gas费,确保钱包内ETH余额足够覆盖预估费用,建议留少量余量,避免刚好够的情况。
- 匹配编译器与依赖版本:代码指定了
^0.8.20的Solidity版本,需确保Remix编译器版本不低于0.8.20;同时检查OpenZeppelin依赖包版本,避免新旧版本不兼容导致编译或部署异常。 - 验证钱包网络连接:重新连接钱包,确认当前网络为以太坊主网(Chain ID=1),排除误连测试网或其他分叉链的可能。
- 从钱包获取交易哈希:Remix未显示哈希时,可在钱包的交易记录中查找(即使失败交易也会生成哈希),用哈希在区块浏览器查询具体回滚原因,比如Gas不足、Nonce冲突等。
- 排查Nonce冲突:若账户存在未确认的主网交易,会导致Nonce冲突。可取消未确认交易,或手动设置Nonce为账户当前正确值(通过区块浏览器查询账户Nonce,在Remix部署的Advanced选项中填写)。
测试代码
// SPDX-License-Identifier: MIT pragma solidity ^0.8.20; import "@openzeppelin/contracts/token/ERC20/ERC20.sol"; import "@openzeppelin/contracts/token/ERC20/extensions/ERC20Permit.sol"; contract MyToken is ERC20, ERC20Permit { constructor() ERC20("MyToken", "MTK") ERC20Permit("MyToken") {} }
内容的提问来源于stack exchange,提问作者Dragos Mija
相关产品推荐
相关产品推荐

