You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何解决Solidity部署时‘Migrations触发无效操作码’错误?

解决部署Migrations合约时的"invalid opcode"错误

部署Solidity合约时触发错误:"Migrations" hit an invalid opcode while deploying,结合提供的代码分析,问题根源在于Truffle配置文件中的编译器版本冲突,而非合约代码本身的构造函数问题(你的Migrations合约无自定义构造函数,仅初始化owner,不存在assert断言或数组越界逻辑)。

问题分析

你的truffle-config.js中存在重复的编译器配置块:

  • 一处是compilers.solc.version: "^0.8.0"
  • 另一处是顶层的solidity.version: "0.8.3"

这种重复配置会导致Truffle解析编译器设置时出现混乱,编译出的合约字节码可能存在兼容性问题,最终在部署时触发无效操作码错误。

解决方案

1. 修复Truffle配置文件

删除冗余的编译器配置,统一版本和设置。修改后的truffle-config.js如下:

const path = require("path");

module.exports = {
  contracts_build_directory: path.join(__dirname, "/build"),
  networks: {
    development: {
      host: "127.0.0.1",
      port: 8545,
      network_id: "*" // 匹配任意网络ID
    }
  },
  plugins: ["truffle-contract-size"],
  compilers: {
    solc: {
      version: "0.8.3", // 使用明确版本替代模糊范围,避免版本差异
      settings: {
        optimizer: {
          enabled: true,
          runs: 1000
        }
      }
    }
  }
};

2. 清理旧编译产物

删除项目根目录下的build文件夹,确保重新编译生成干净的字节码文件。

3. 重新编译部署

执行以下命令重新编译并部署合约:

truffle compile
truffle migrate

额外排查点(若问题仍存在)

  • 确认本地Ganache(或其他开发链)版本支持Solidity 0.8.x版本特性;
  • 检查部署账户是否有足够的ETH(开发链默认账户通常已分配足够额度,可忽略此步)。

内容的提问来源于stack exchange,提问作者karthik lomte

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.20 01:22:23