源文件需要不同的编译器版本:Truffle

时间:2018-12-30 07:58:29

标签: ethereum solidity truffle

我牢固地编写了一个简单的智能合约,并尝试用松露迁移它。

$ truffle migrate
Compiling .\contracts\Election.sol...
Compiling .\contracts\Migrations.sol...

    /D/ethereum/electiondemo/contracts/Migrations.sol:1:1: SyntaxError: Source file requires different compiler version (current compiler is 0.5.0+commit.1d4f565a.Emscripten.clang - note that nightly builds are considered to be strictly less than the released version
    pragma solidity ^0.4.24;
    ^----------------------^

Compilation failed. See above.`enter code here`
Truffle v5.0.0 (core: 5.0.0)
Node v8.11.1

固体版本为0.5.0。 请找到以下智能合约代码:

pragma solidity ^0.5.0;

contract Election {
    // Read/write candidate
    string public candidate;

    // Constructor
    constructor ( ) public {
        candidate = "Candidate 1";
    }
}

5 个答案:

答案 0 :(得分:7)

得到解决方案: 在truffle.js中。您需要指定实体版本

module.exports = {
  // See <http://truffleframework.com/docs/advanced/configuration>
  // for more about customizing your Truffle configuration!
  networks: {
    development: {
      host: "127.0.0.1",
      port: 7545,
      network_id: "*" // Match any network id
    }
  },
  compilers: {
    solc: {
      **version: "0.4.24"** // ex:  "0.4.20". (Default: Truffle's installed solc)
    }
 }
};

需要在智能合约中给出

答案 1 :(得分:3)

**将以下行添加到truffle.js **
                                                                                                        { compilers: { solc: { version: "0.4.24" // ex: "0.4.20". (Default: Truffle's installed solc) } } }

答案 2 :(得分:0)

您的迁移合同(Migrations.sol)需要0.4.24。

转到您的迁移合同并将您的依赖关系更改为0.5或将您的主合同依赖关系更改为0.4。*

答案 3 :(得分:0)

将其添加到您的truffle.js / truffle-config.js

module.exports = {
// See <http://truffleframework.com/docs/advanced/configuration>
// for more about customizing your Truffle configuration!
networks: {
  development: {
    host: "127.0.0.1",
    port: 7545,
    network_id: "*" // Match any network id
  }
},
compilers: {
  solc: {
    version: "0.4.24" //(Default: Truffle's installed    solc)
  }
 }
};

然后使用npx运行您的软件包。 npx 是本机 npm 软件包,因此它随您的nodejs&npm安装一起提供。 它允许您运行本地节点程序包二进制文件。这样,您就可以摆脱很多全局软件包的安装,而可以使用package.json中定义的本地二进制文件。

npx truffle compile

npx truffle test(可选)

npx truffle migrate

答案 4 :(得分:0)

截至目前,松露使用 '0.5.16' 作为默认值。因此,如果您的代码使用较新的 Solidity 版本,则会引发错误。 您不需要为 solc 版本输入特定值。

这是我在合同中使用的

 pragma solidity >=0.7.0 <0.9.0;

在配置文件中

compilers: {
    solc: {
      // default is 0.5.16
      version: ">=0.7.0 <0.9.0",    // Fetch exact version from solc-bin (default: truffle's version)
    
      }
    }
  },