Truffle

請求的 EVM 版本無效和錯誤:Truffle 目前使用的是 solc 0.5.0

  • November 16, 2021

我開始在 youtube 上學習 Dapp 大學指南的可靠性,並且在本指南的第 20 分鐘,我遇到了 Truffle 編譯問題。

我複製了這個儲存庫: git clone -b starter-code https://github.com/dappuniversity/defi_tutorial ./ 這是本教程的 YT 連結: https ://www.youtube.com/watch?v=CgXQC4dbGUE

本指南上的 Truffle 配置如下所示:

require('babel-register');
require('babel-polyfill');

module.exports = {
 networks: {
   development: {
     host: "127.0.0.1",
     port: 7545,
     network_id: "*" // Match any network id
   },
 },
 contracts_directory: './src/contracts/',
 contracts_build_directory: './src/abis/',
 compilers: {
   solc: {
     optimizer: {
       enabled: true,
       runs: 200
     },
     evmVersion: "petersburg"
   }
 }
}

在指南的這一點上,編譯成功,但出現錯誤:

Error: Truffle is currently using solc 0.5.16, but one or more of your contracts specify "pragma solidity ^0.5.0

所以我去了 Truffle 文件,我發現我可以在配置中指定 solc 版本,所以我添加了version欄位,我的配置現在看起來像這樣:

// ...
compilers: {
   solc: {
     version: "0.5.0",
     optimizer: {
       enabled: true,
       runs: 200
     },
     evmVersion: "petersburg"
   }
 }
// ...

我的編譯再次失敗,出現另一個錯誤,但這次是evmVersion

Invalid EVM version requested.

Compilation failed. See above.
Truffle v5.1.39 (core: 5.1.39)
Node v16.9.1

現在我將 EVM 版本從"petersburg"to更改"byzantium"為另一個 Compilation Faild 並出現錯誤: Error: Truffle is currently using solc 0.5.0, but one or more of your contracts specify "pragma solidity ^0.5.0

有人可以為我提供一些如何處理此錯誤的知識嗎?

將 EVM 版本從“petersburg”更改為“byzantium”並將編譯器版本更改為“0.5.0”對我有用。

您需要下載所需的編譯器版本,或更改合約的solidity 版本。

引用自:https://ethereum.stackexchange.com/questions/113056