Solidity

Hardhat 編譯錯誤,即使在配置文件中提到了編譯器版本

  • October 8, 2022

我有一份契約,其中我導入了一個包,該包作為回報從 openzeppelin 導入 IERC20.sol,該包具有solidity^0.7.0版本,而我的契約具有solidity0.8.10版本。我已經在 hardhat.config.js 文件中提到了兩個solidity版本,但它仍然給我這個錯誤:

Error HH606: The project cannot be compiled, see reasons below.

These files depend on other files that use a different and incompatible version of Solidity:

 * contracts/Test.sol (0.8.10) depends on @openzeppelin/contracts/token/ERC20/IERC20.sol (^0.7.0)

To learn more, run the command again with --verbose

Read about compiler configuration at https://hardhat.org/config

我有這樣的hardhat.config.js文件:

require("@nomicfoundation/hardhat-toolbox");

/** @type import('hardhat/config').HardhatUserConfig */
module.exports = {
 solidity: {
   compilers: [
     {
       version: "0.8.10",
     },
     {
       version: "0.6.12",
     },
     {
       version:"0.7.0",
     }
   ],
 },
};

我已經提到了我的合約所需的所有可靠版本,但仍然安全帽讓我在編譯智能合約時出錯。有誰知道我在這裡做錯了什麼?

這裡有一個非常相似的主題:https ://stackoverflow.com/questions/68163319/failing-to-compile-multiple-solidity-versions

有人提到這個安全帽常見問題解答說:

但在某些情況下,您可能有一個帶有 ^0.7.0 版本的編譯指示的契約,它導入了一個帶有 ^0.6.0 的契約。這永遠無法編譯。Pragma 版本指示可以使用編譯器版本的哪個子集,如果兩個 pragma 版本不相交(如本範例中所示),則無法編譯文件。時期。

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