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