Installing the Solidity Compiler

Versioning

Solidityのバージョンは semantic versioning に準じており、リリースに加え、nightly development builds も使用可能となっています。ドキュメントに含んでいないものや大きな変更を含んだ成果が組み込まれているものの、nightly buildsは動作を保証されていません。 最新バージョンを使用することをお薦めします。下記のパッケージインストーラでは最新バージョンを使用しています。

Remix

小規模のコントラクトやさっとSolidityを学ぶのにRemixをお薦めしています。

Remix onlineにアクセスして下さい。何もインストールする必要はありません。 もしインターネット接続無しで使用したい場合は https://github.com/ethereum/remix-live/tree/gh-pages にアクセスし、指示に従って .zip ファイルをダウンロードして下さい。

追加オプションとしてこのページではコマンドラインのSolidityコンパイラのインストール方法を紹介しています。大規模なコントラクトやもっと複雑なコンパイルオプションが必要な場合にはコマンドラインコンパイラを使用してください。

npm / Node.js

Solidityコンパイラである solcjs の便利で簡単なインストール方法として npm を使用してください。solcjs はこの後紹介するコンパイラへのアクセス方法に比べて機能は少ないです。Using the Commandline Compiler のドキュメンテーションでは全ての機能が備わっている solc というコンパイラを使用します。solcjs の使用方法はその レポジトリ にドキュメント化されています。

注意: solc-jsプロジェクトはEmscriptenを使うことでC++ solc から派生されています。つまり両方とも同じコンパイラのソースコードを使用しているということです。solc-js はJavascriptのプロジェクトで(Remixの様に)直接使用可能です。使い方はsolc-jsレポジトリを参照して下さい。

npm install -g solc

注釈

コマンドラインの実行ファイル名は solcjs です。

solcjs のコマンドラインオプションは solc と互換性がなく、solc では動く様なツール(例えば geth )は solcjs では動作しません。

Docker

コンパイラ用に最新のdockerビルドが提供されています。stable レポジトリはリリースされたバージョンを含み、nightly レポジトリはdevelopブランチに潜在的に不安定になりうる変更を含んでいます。

docker run ethereum/solc:stable --version

現在、dockerイメージはコンパイラ実行ファイルだけを含んでいます。そのためソースとアウトプットディレクトリをリンクする作業が必要です。

Binary Packages

Solidityのバイナリパッケージは solidity/releases で利用可能です。

更にUbuntu用にPPA(Personal Package Archive)もあるので、下記のコマンドで最新の安定バージョンを取得可能です:

sudo add-apt-repository ppa:ethereum/ethereum
sudo apt-get update
sudo apt-get install solc

nightlyバージョンは下記のコマンドでインストール可能です:

sudo add-apt-repository ppa:ethereum/ethereum
sudo add-apt-repository ppa:ethereum/ethereum-dev
sudo apt-get update
sudo apt-get install solc

snap package もリリースしています。これは全ての supported Linuxディストリビューション でインストール可能です。solcの最新の安定バージョンは下記でインストールできます。

sudo snap install solc

もし最新のSolidityのdevelopmentバージョンの最近の変更のテストを手伝って頂けるのであれば、下記を使用してください:

sudo snap install solc --edge

最新developmentバージョンに限られますが、Arch Linuxもパッケージがあります:

pacman -S solidity

Homebrewでbuild-from-sourceとしてSolidityのコンパイラを提供しています。Pre-built bottlesは現在サポートされていません。

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

もしSolidityの特定バージョンが必要であればHomebrew formulaをGithubから直接インストールできます。

solidity.rb commits on Github を確認して下さい。

solidity.rb の特定のコミットのraw file linkを持つまでは過去のリンクを参照して下さい。

brew を使用してインストールして下さい:

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

Gentoo Linuxも emerge を使用してインストール可能なSolidityのパッケージを提供しています:

emerge dev-lang/solidity

Building from Source

Prerequisites - Linux

SolidityのLinux buildのために下記のdependenciesをインストールする必要があります:

Software Notes
Git for Linux Command-line tool for retrieving source from Github.

Prerequisites - macOS

macOS用に最新バージョンの Xcodeがインストールされている ことを確認して下さい。これには Clang C++ compilerXcode IDE、それに他のOS XでC++アプリを開発するのに必要なAppleのdevelopmentツールが含まれています。もしXcodeをインストールするのが初めて、もしくは新しいバージョンをインストールしたばかりなのであれば、コマンドラインbuildsをする前にライセンスに同意する必要があります:

sudo xcodebuild -license accept

私たちのOS X buildsは外部のdependenciesをインストールするのに Homebrew package managerのインストール を要求しています。もし始めから行いたい場合は、こちらが Homebrewのアンインストール 方法です。

Prerequisites - Windows

SolidityのWindows buildsに下記のdependenciesのインストールが必要です:

Software Notes
Git for Windows Command-line tool for retrieving source from Github.
CMake Cross-platform build file generator.
Visual Studio 2017 Build Tools C++ compiler
Visual Studio 2017 (Optional) C++ compiler and dev environment.

もし既にIDEを持っており、コンパイラとライブラリだけが必要な場合には、Visual Studio 2017ビルドツールをインストールできます。

Visual Studio 2017はIDEと必要なコンパイラとライブラリを提供しています。そのためもしIDEを持っておらずSolidityの開発を行いたい場合にはVisual Studio 2017は全てを簡単にセットアップするための選択肢かもしれません。

こちらがVisual Studio 2017 Build ToolsもしくはVisual Studio 2017でインストールされるコンポーネントのリストです。

  • Visual Studio C++ core features
  • VC++ 2017 v141 toolset (x86,x64)
  • Windows Universal CRT SDK
  • Windows 8.1 SDK
  • C++/CLI support

Clone the Repository

ソースコードをクローンするのに下記のコマンドを実行して下さい:

git clone --recursive https://github.com/ethereum/solidity.git
cd solidity

もしSolidityの開発に助力頂けるのであればSolidityをforkしてセカンドリモートとしてあなたの個人的なforkを追加して下さい:

git remote add personal git@github.com:[username]/solidity.git

External Dependencies

macOS、Windows、多数のLinuxディストリビューションで必要な全ての外部dependenciesをインストールするヘルパースクリプトがあります。

./scripts/install_deps.sh

もしくはWindows上では:

scripts\install_deps.bat

Command-Line Build

開発を始める前に外部dependenciesをインストールするのを忘れないでください(上記参照)。

Solidityプロジェクトはビルドを設定するためにCMakeを使っています。繰り返して行うbuildを高速化するためにccacheをインストールした方が良いでしょう。CMakeは自動的にccacheをピックアップします。 SolidityのビルドはLinux、macOSや他のUniX上ではほぼ同じです。

mkdir build
cd build
cmake .. && make

もしくはもっと簡単に:

#note: これはbinaries solcとsoltestをusr/local/bin
./scripts/build.sh上にインストールします。

そしてWindowsでは:

mkdir build
cd build
cmake -G "Visual Studio 15 2017 Win64" ..

後半のやり方ではbuildディレクトリに solidity.sln を作成します。これをダブルクリックするとVisual Studioが起動するはずです。Release configurationをビルドすることをお薦めしますが、他は全て動作します。

他の方法として、Windowsのコマンドラインでもビルドできます:

cmake --build . --config Release

CMake options

もし何のCMakeオプションが使用可能か興味があるのであれば cmake .. -LH を動かしてください。

SMT Solvers

Solidityはデフォルトでシステム内でSMT solversがあれば、それを使ってビルドすることができます(デフォルトで使用します)。cmake オプションで全てのsolverは無効にできます。

注意: いくつかの例においては潜在的にビルドの失敗を引き起こす場合があります。

デフォルトで有効になっていますが、buildフォルダ内ではsolverは無効にできます:

# disables only Z3 SMT Solver.
cmake .. -DUSE_Z3=OFF

# disables only CVC4 SMT Solver.
cmake .. -DUSE_CVC4=OFF

# disables both Z3 and CVC4
cmake .. -DUSE_CVC4=OFF -DUSE_Z3=OFF

The version string in detail

Solidityのバージョン文字列は4つの要素を含んでいます:

  • バージョンナンバー
  • プレリリースタグ、通常 develop.YYYY.MM.DD もしくは nightly.YYYY.MM.DD
  • commit.GITHASH のフォーマットでコミット
  • 任意の数のアイテムを持ったプラットフォームで、そのプラットフォームとコンパイラの詳細が記述されている

もしローカルな修正があった場合にはコミットは .mod という接尾辞がつきます。

これらの要素はSemverの要求通りに結合され、SolidityのプレリリースタグはSemverのプレリリースに相当します。そしてSolidityのコミットとプラットフォームの2つでSemver buildのメタデータを作ります。

リリースの例: 0.4.8+commit.60cc1668.Emscripten.clang.

プレリリースの例: 0.4.9-nightly.2017.1.17+commit.6ecb4aa3.Emscripten.clang

Important information about versioning

リリース後はパッチバージョンのレベルは上がっていきます。これはパッチレベルの変更だけは進んでいくと考えているからです。変更がマージされたらバージョンはsemverと変更の重要度により 上がっていきます。最後に、リリースは常に現在のnightly buildのバージョンでされますが、prerelease の指定はありません。

例:

  1. 0.4.0版がリリース
  2. nightly buildの0.4.1版ができる
  3. 大きな変更がないので、バージョンの変更はなし
  4. 大きな変更があるので、バージョンが0.5.0に上がる
  5. 0.5.0がリリースされる

このバージョニングは version pragma でちゃんと動作します。