truffle-config.js 指定了solc版本之后:
编译时一直:
× Fetching solc version list from solc-bin. Attempt #3
Error: Failed to complete request to: version URLs. Are you connected to the internet?
RequestError: Error: connect ECONNREFUSED 127.0.0.1:443
怎么破?有没有办法手动下载solc编译器?
办法是有的。
truffle 自动下载的 solc 编译器都存放在这个目录:~/.config/truffle/compilers/node_modules
(~
表示的账号的根目录)。
比如我的电脑上,有这么几个版本:
ls ~/.config/truffle/compilers/node_modules
soljson-v0.5.16+commit.9c3226ce.js
soljson-v0.6.10+commit.00c0fcaf.js
soljson-v0.6.6+commit.6c089d02.js
soljson-v0.6.9+commit.3e3065ac.js
soljson-v0.5.8+commit.23d335f2.js
soljson-v0.6.4+commit.1dca32f3.js
soljson-v0.6.8+commit.0bbfe453.js
因此只要找到对应的版本的soljson-v0.x.x+commit.xxxxxxx.js
文件就可以。
在以太坊官方的 github 上,提供了所有的编译器的版本, 可以通过这个链接下载 :https://github.com/ethereum/solc-bin/tree/gh-pages/bin
如果 GitHub 打开很慢,也可以用我在gitee fork的版本:https://gitee.com/xilibi2003/solc-bin/tree/gh-pages/bin
现在假设你下载好了soljson-v0.7.0+commit.9e61f92b.js 并放在了前面提到的编译器目录。
下载时,尽量选择正式版本,文件名没有 nightly
然后就可以在truffle-config.js
里把编译器版本修改为0.7.0:
compilers: {
solc: {
version: "0.7.0",
}
}
这时编译就直接使用下载好的编译器。大功告成。