solidity – Truffle Version and solcjs –version Returns Different Versions – Understanding the Differences

solcsoliditytruffle

I want to change solc version on my system(downgrade from 0.5.16 to 0.4.17). I tried uninstalling it with

npm -g uninstall solc

and then installed with

npm -g install solc@0.4.17

but it does not work, "truffle version" still returns "Solidity v0.5.16 (solc-js)" when I run it from my CMD. However when I run

solcjs --version

separately, the correct version is returned – 0.4.17+commit.bdeb9e52.Emscripten.clang

How can I change solc version on my system?

Best Answer

Truffle installs its own internal version of solcjs.

If you're on Truffle 5.x, then you can configure it (after the installation) to use a different compiler for the various commands that it provides (truffle compile, truffle test, truffle deploy, etc).

In your Truffle configuration file (truffle.js or truffle-config.js), add this section:

compilers: {
    solc: {
        version: "0.4.17",
        optimizer: {
            enabled: true,
            runs: 200
        }
    }
}
Related Topic