ParserError:源文件需要不同的编译器版本(当前编译器是0.8.7+commit.e28d00a7.Emscripten.clang)

Gou*_*wat 7 blockchain solidity chainlink

我最终尝试在 remix IDE 中运行此代码,我使用 0.6.6 版本的 Solidity 运行此代码并遇到了此错误。我也尝试过使用其他版本,例如 0.8 和 0.6。

// SPDX-License-Identifier: MIT

pragma solidity =0.8.7;

import "@chainlink/contracts/src/v0.6/vendor/SafeMathChainlink.sol";

contract myContract{
    using SafeMathChainlink for uint256;
    mapping(address => uint256) public payTo;

    function Payment() public payable {
        uint256 minimumUSD = 50 * 10 ** 18;
        require(getConversionRate(msg.value) >= minimumUSD, "Doesn't satisfy the minimum condition");
        payTo[msg.sender] += msg.value;
    }
}
Run Code Online (Sandbox Code Playgroud)

Pet*_*jda 9

您的代码需要 Solidity 0.8.7,但导入的SafeMathChainlink.sol需要 Solidity 0.6.*。

一个简单的解决方案是将代码更改为需要 v0.6 并使用此版本进行编译。

pragma solidity ^0.6.0;
Run Code Online (Sandbox Code Playgroud)

或者您可以删除SafeMath 库的importusing ... for,因为 0.8 不再需要它。自版本 0.8.0 以来,库中执行的所有验证现在都在语言级别上执行。