文章目录

版本管理
Solidity 遵循 语义化版本控制(Semantic Versioning),在版本号为 0(即 0.x.y)的情况下,补丁级别的发布不会引入破坏性更改。这意味着使用版本 0.x.y 编译的代码,在版本 0.x.z(z > y)发布时仍然能够正常编译。
除了正式版本发布,Solidity 官方还提供每夜构建版本(nightly builds),开发者可以提前尝试新功能并提供反馈。然而,每夜构建版本包含开发分支的最新代码,并不保证始终可用,可能存在未记录或已损坏的更改,这些更改可能最终不会出现在正式版本中。因此,每夜构建版本不适合用于生产环境。
在部署合约时,建议使用最新发布的 Solidity 稳定版本。由于 Solidity 仍在快速发展,新版本经常引入破坏性更改、新功能以及错误修复。因此,Solidity 依然使用 0.x 版本号来反映这一变化。
Remix 编译器
对于小型合约或学习 Solidity,推荐使用 Remix。
Remix 提供了一个在线编译器,无需安装任何软件即可访问。如果需要在离线环境下使用 Remix,可以访问 Remix 离线版本并按照页面上的说明操作。
https://github.com/ethereum/remix-live/tree/gh-pages#readme
Remix 还支持测试每夜构建版本,而无需安装多个 Solidity 版本,便于开发者快速切换和试用最新功能。
其他安装方式
1. 使用 npm / Node.js 安装
如果希望以便捷且可移植的方式安装 Solidity 编译器,可以使用 npm 安装 solcjs:
npm install --global solc
注意:
1.安装后,命令行可执行文件为 solcjs,而不是 solc。
2.solcjs 和 solc 不兼容,它们的命令行选项不同,因此一些工具(如 geth)可能无法与 solcjs 兼容。
3.solc-js 是通过 Emscripten 将 C++ 版本的 solc 转译而来,它们使用相同的编译器源码。
4.solc-js 适用于 JavaScript 项目(例如 Remix)。
5.更多信息请参考 solc-js 的 GitHub 仓库:
https://github.com/ethereum/solc-js
2. 使用 Docker 安装
Solidity 编译器的 Docker 镜像可以从 ethereum/solc 获取。
要使用最新稳定版,可以运行以下命令:
docker run ethereum/solc:stable --help
注意:
1.可以使用特定版本的 Docker 镜像,例如 ethereum/solc:0.8.23。
2.建议使用 stable 标签,以确保获取最新的稳定版本,避免使用过时版本。
使用 Docker 编译 Solidity 文件有下面两种方式。
在本机编译 Solidity 文件
可以通过挂载本地文件夹的方式,使用 Docker 进行 Solidity 编译,例如:
docker run \
--volume "/tmp/some/local/path/:/sources/" \
ethereum/solc:stable \
/sources/Contract.sol \
--abi \
--bin \
--output-dir /sources/output/
使用标准 JSON 接口(推荐)
在工具链中使用 Solidity 编译器时,建议通过 JSON 接口进行交互:
docker run ethereum/solc:stable --standard-json < input.json > output.json
这种方式可以避免挂载本地目录,只要 JSON 输入是自包含的(不依赖外部文件)。
3. 使用 Linux 包管理器安装
可以在 Solidity 官方发布页下载二进制文件:
https://github.com/ethereum/solidity/releases
Ubuntu(PPA 源)
要安装最新稳定版本的 solc,可以运行以下命令:
sudo add-apt-repository ppa:ethereum/ethereum
sudo apt-get update
sudo apt-get install solc
要安装每夜构建版本(开发版),可以运行:
sudo add-apt-repository ppa:ethereum/ethereum
sudo add-apt-repository ppa:ethereum/ethereum-dev
sudo apt-get update
sudo apt-get install solc
注意:某些 Linux 发行版维护了自己的 Solidity 包,这些包通常由社区维护更新,但并非官方发布。
Arch Linux
Arch Linux 的 AUR(Arch User Repository)提供了两个 Solidity 相关的包:
-
solidity(开发版)
-
solidity-bin(二进制版本)
注意:AUR 包是由用户贡献的非官方包,请谨慎使用。
Snap 包(不推荐)
目前 Solidity 提供了 solc 的 Snap 包,但该 Snap 包未被维护。
可以通过运行以下命令安装:
sudo snap install solc
要安装最新的开发版,可以运行:
sudo snap install solc --edge
注意:Snap 使用严格封闭(strict confinement)模式,这种模式虽然更安全,但也带来了一些限制,比如只能访问 /home 和 /media 目录。
更多信息请参考 Snap 官方文档:
https://snapcraft.io/docs/security-policy-and-sandboxing
4. macOS 上的 Solidity 安装
我们通过 Homebrew 分发 Solidity 编译器。目前仅支持从源代码构建,并不提供预编译的二进制文件(bottles)。
4.1 通过 Homebrew 安装
首先更新 Homebrew:
brew update
brew upgrade
然后添加 Ethereum 的 Homebrew 仓库并安装 Solidity:
brew tap ethereum/ethereum
brew install solidity
如果需要安装旧版本或特定版本,请参考下面的 4.2 和 4.3 节,其他情况可以跳过。
4.2 安装旧版本(0.4.x / 0.5.x)
如果你需要安装 Solidity 的 0.4.x 或 0.5.x 版本,可以使用以下命令:
brew install solidity@4 # 安装 0.4.x 版本
brew install solidity@5 # 安装 0.5.x 版本
4.3 安装特定版本
如果你需要安装特定版本的 Solidity,可以通过从 GitHub 下载 Homebrew 配方(Formula)来实现。
步骤如下
1.在 GitHub 上查看 [solidity.rb] 的提交记录,找到你需要的版本的提交哈希值(commit hash):
https://github.com/ethereum/homebrew-ethereum/commits/master
2.克隆 Homebrew Ethereum 仓库并切换到指定版本
git clone https://github.com/ethereum/homebrew-ethereum.git
cd homebrew-ethereum
git checkout <你的提交哈希值>
3.安装特定版本
brew unlink solidity # 先卸载当前版本
brew install solidity.rb # 安装特定版本
5. Solidity 静态二进制文件
官方维护了一个静态编译版本存储库 solc-bin,可以从以下链接获取编译器的所有历史版本和当前版本:
https://binaries.soliditylang.org
该存储库也提供每夜构建版本(nightly builds)。
特点
1.直接下载即可使用,无需额外安装或解压(部分旧版 Windows 可能需要 DLL 文件)。
2.支持第三方工具,通过 https://binaries.soliditylang.org 镜像,支持 HTTP 和 HTTPS。
3.高向后兼容性,文件一旦添加不会删除或移动,除非文件损坏。
4.提供多种下载方式:
-
HTTPS 下载:https://binaries.soliditylang.org/
-
IPFS 下载,去中心化存储,例如:dweb:/ipfs/QmTLs5MuLEWXQkths41HiACoXDiH8zxyqBHGFDRSzVE5CS
获取 Solidity 0.7.4 版本的二进制文件的示例:
{
"path": "solc-emscripten-wasm32-v0.7.4+commit.3f05b770.js",
"version": "0.7.4",
"build": "commit.3f05b770",
"longVersion": "0.7.4+commit.3f05b770",
"keccak256": "0x300330ecd127756b824aa13e843cb1f43c473cb22eaf3750d5fb9c99279af8c3",
"sha256": "0x2b55ed5fec4d9625b6c7b3ab1abd2b7fb7dd2a9c68543bf0323db2c7e2d55af2",
"urls": [
"dweb:/ipfs/QmTLs5MuLEWXQkths41HiACoXDiH8zxyqBHGFDRSzVE5CS"
]
}
说明
1.下载地址为:
https://binaries.soliditylang.org/emscripten-wasm32/solc-emscripten-wasm32-v0.7.4+commit.3f05b770.js
2.通过 keccak256 或 sha256 哈希值校验文件完整性:
keccak256sum solc-emscripten-wasm32-v0.7.4+commit.3f05b770.js
sha256sum solc-emscripten-wasm32-v0.7.4+commit.3f05b770.js
避免使用以下过时路径:
1.bin/ 目录:应使用 emscripten-wasm32/(WebAssembly 性能更佳)。
2.wasm/ 目录:应使用 emscripten-asmjs/ 或 emscripten-wasm32/。
3.list.js 和 list.txt:应使用 list.json 获取完整信息。
此外,https://ethereum.github.io/solc-bin/ 站点已经停止更新。该站点自 Solidity 0.7.2 版本后停止维护,不再提供新版本或每夜构建。建议使用 https://binaries.soliditylang.org。
6. 从源码构建编译器
安装教程可以参考官方文档:
https://docs.soliditylang.org/en/latest/installing-solidity.html#building-from-source
2700

被折叠的 条评论
为什么被折叠?



