看了四五年,第一次发博客还有点小激动hhh,希望可以帮助到初学智能合约的大家。
Ubuntu中在geth控制台中用solc命编译以太坊合约时报错,如下:
Source file requires different compiler version...
原因是因为我的solc版本是最新的0.7.1,而我编译的合约第一行是pragma solidity ^0.4.21,意思是合约代码第一行指定该合约使用的Solidity版本为0.4.21,不支持高于0.4.21版本的Solidity特性。
但是如果把 0.7.1 版本卸载,安装 0.4.21 版本,下次调试其他版本合约又要卸载重装,显然不可行,在百度了很久之后,终于找到了解决办法,solc—select,它是一个在Solidity编译器版本之间快速切换的脚本。solc select是一个实用程序,它允许用户通过设置环境变量来运行Solidity的任何旧版本。
在Ubuntu中的安装过程如下:
分别输入
git clone https://github.com/crytic/solc-select.git
./solc-select/scripts/install.sh