「移行」は、デプロイ中に無効なオペコードを検出しました。試す:###
リーリー
私の truffle config.js ファイルああああ
これは、solc
バージョン 0.8.20 以降、新しいオペコード PUSH0
が最近導(dǎo)入されたことが原因である可能性があります。
完全なリストについては、「各オペコードが EVM に追加されたのはいつですか?」を參照してください。 p> 本質(zhì)的に、Solidity コンパイラのバージョンは、展開しようとしているネットワークよりも「先」にあります。言い換えれば、
solc はオペコードを含むバイトコードを出力しますが、ネットワークにはまだそれがありません。
に接続していることを示しているので、これはローカルで実行しているネットワーク (例: Ganache) の最新バージョンにアップグレードできることを意味します。問題を解く# ##
以前のバージョンの
Solidity ファイルの pragma Solidity 0.8.19;
version: "0.8.19"
エラーの根本原因が実際に solc
バージョン 0.8.19 ではこれが出力されないため、これで問題は解決します。
truffle 構(gòu)成ファイルの settings: { evmVersion: 'london' }
0.8.20 はデフォルトで PUSH0
を出力できることを意味します。
ただし、2 番目に新しいターゲット EVM バージョン (2023 年 6 月時點) である solc
を伝えることになります。 出力
PUSH0 を避けてください。
エラーの根本原因が実際に
PUSH0 はこれを出力しないように指示されているため、これで問題は解決します。