安装solidity

原文地址
date:20170613

版本号

solidity的版本号命名遵从语义化版本协议。除了正式版本之外,最新的开发版本也是可以使用的。最新的开发版本不保证稳定运行,并且包含未文档化的或者不兼容的变更(?broken changes)。我们推荐使用最新的正式版本。下面的安装程序会选择最新的正式版本。

Remix

如果你想要尝试solidity的智能合约,你可以尝试使用Remix,它不需要安装任何软件。如果你像在离线的时候使用Remix,你可以到这个项目中下载zip包。

npm/nodejs

这是安装solidity最方便的方法。
里边提供了一个平台独立的javascript库,它是由c++源码通过Emscripten转换为javascript的。它可以在项目中直接使用(像Remix一样)。可以参考solc-js项目查看指令。
它也有命令行工具,叫做solcjs,可以通过如下npm命令安装:

npm install -g solc

注意:olcjs的命令行选项与solc是不兼容的。所有与solc一同协作的工具(如geth)在solcjs中是不管用的

Docker

我们提供了编译器最新的docker编译。stable仓库包含的是发行版本,而nightly包含的是不稳定的心功能。

docker run ethereum/solc:stable solc --version

目前,docker容器只包含了编译器可执行程序,所以你还要做些额外的工作,选择源码和输出目录。

二进制安装包

Solidity的二进制安装包可以在这个页面找到。
我们也为Ubuntu系统提供PPAs。如下命令,获取最新的稳定版本:

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也有安装包,但是只限开发版本:

pacman -S solidity-git

Homebrew安装,在目前为止还没有编译好的安装包,但是Homebrew可以通过编译源码安装。我们也会马上添加编译好的安装包。

brew update
brew upgrade
brew tap ethereum/ethereum
brew install solidity
brew linkapps solidity

如果你想要获取特定版本的solidity,你可以通过homebrew直接从github安装。
参看github上solidity.rb提交
查看历史提交,直到找到所需的solidity.rb的源码。然后通过brew安装:

brew unlink solidity
# Install 0.4.8
brew install https://raw.githubusercontent.com/ethereum/homebrew-ethereum/77cce03da9f289e5a3ffe579840d3c5dc0a62717/solidity.rb

我们也为Gentoo linux提供了solidity安装包。通过emerge安装:

demerge ev-lang/solidity

从源码安装

这部分保留,不做翻译,需要的读者直接看原文。

从仓库clone源码
macOS所需环境
windows所需环境
外部依赖库
命令行构建

版本号说明

Solidity的版本号包含四部分:

  • 版本号
  • 前缀标记,通常是develop.YYYY.MM.DD或者nightly.YYYY.MM.DD
  • 通过commit.GITHASH格式提交
  • 一些平台和编译器的信息。

如果存在一些本地修改,提交会加上.mod后缀。
语义化版本协议(semantic-versioning,简写Semver)将这些部分结合起来。Solidity的预发行标记和Semver的预发行标记相同,Solidity的提交和平台结合起来成为Semver的构建元数据。
一个正式版本的例子:0.4.8+commit.60cc1668.Emscripten.clang
一个开发版本的例子:0.4.9-nightly.2017.1.17+commit.6ecb4aa3.Emscripten.clang

版本号的重要信息

当一个正式版本发行的时候,一个补丁版本的层级也会上升。因为我们假设只有补丁代号部分变化。当更改合并的时候,版本号根据Semver规则变化。最终一个正式版本总是跟随着一个开发版本,但是没有prerelease指示。(?After a release is made, the patch version level is bumped, because we assume that only patch level changes follow. When changes are merged, the version should be bumped according to semver and the severity of the change. Finally, a release is always made with the version of the current nightly build, but without the prerelease specifier.)(ps:这段内容和sematic-versioning有很大关系,但是我对它不了解。)
例如:

  1. 0.4.0正式版本发布
  2. 最新开发版本是0.4.1
  3. 如果没有不兼容的更改,就不对版本号做更改。
  4. 如果引入了不兼容的更改,版本号升级为0.5.0
  5. 0.5.0 发行版本发布

这个规则同version pragma运行得很好。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 172,813评论 25 708
  • 因为要结局swift3.0中引用snapKit的问题,看到一篇介绍Xcode8,swift3变化的文章,觉得很详细...
    uniapp阅读 4,467评论 0 12
  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 12,180评论 4 61
  • 杀死那个太监 虎牙村来了一个太监。 这个季节,正是狗尾巴花开的季节,满山遍野,那迷人的清香,飘满了山谷,勤劳的村民...
    刘宗勇阅读 336评论 0 1
  • 你有没有过相同的感受 当某个人在任何场合都能自由无所顾忌地表达出他的要求和想法时 你会投以羡慕的眼光 其实自己内心...
    斯寒阅读 217评论 0 0