solidity - Source File requires different compiler version - Ethereum Stack Exchange

Tags
URLhttps://ethereum.stackexchange.com/questions/63530/source-file-requires-different-compiler-version

During solidity (solc) 0.5 releases the different frameworks like solc, truffle, web3, openzeppelin had a timeframe where some had a 0.5 compatible version released and some didn't. I think you could have changed specified the solc version like here (didn't try that) but meanwhile all of the mentioned fully support 0.5 (openzeppelin since 2 days ago at time of writing).

Consider doing the following

npm outdated
npm install [my-outdated-package] #repeat for all outdated packages
rm -R -f build #cleanup step (might not be necessary)
rm -R -f node_modules #cleanup step (might not be necessary)
npm install
truffle compile #(will still fail)

Check with truffle version in a terminal window at some other place (not project dir) if it matches the current release here otherwise do this:

npm uninstall -g truffle
npm install truffle

Usually you should avoid installing global packages but e.g. BlockCatIO/solidity-flattener requires that solc is installed globally because of certain features (installation described here). Remember to upgrade that one too.

When you then run truffle-compile you should still see errors because they changed the syntax of pragma (found that here).

So change:

#old
pragma solidity ^0.4.20;

#new
pragma solidity >=0.4.20;

I also recommend upgrading ganache-cli (I had problems running the tests with old version):

npm install -g ganache-cli

You might then still see compile errors but that's what makes v0.5 great because they made some improvements you should troubleshoot one-by-one

Here the Breaking Changes in Solidity 0.5.0

Doing this I got it compiling again :)