.. index:: ! installing
Solidity ๋ฒ์ ๊ด๋ฆฌ๋ semantic versioning ๋ฅผ ๋ฐ๋ฅด๋ฉฐ nightly development builds ๊ฐ ๋ฐฐํฌ๋ ์ ๋ ์์ต๋๋ค. nightly builds๋ ์๋์ด ๋ณด์ฅ๋์ง ์๊ณ ์ต์ ์ ๋ ธ๋ ฅ์ ๋คํ๊ฒ ์ง๋ง ๋ฌธ์ํ๋์ง ์๊ฑฐ๋ ์๋ชป๋ ๋ณ๊ฒฝ์ฌํญ์ด ์์ ์ ์์ต๋๋ค. ์ฐ๋ฆฌ๋ ์ต์ ๋ฐฐํฌํ์ ์ฌ์ฉํ๊ธธ ๊ถ์ฅํฉ๋๋ค. ์๋์ ํจํค์ง ์ธ์คํจ๋ฌ๋ ์ต์ ํ์ ์ฌ์ฉํ ์์ ์ ๋๋ค.
๊ฐ๋จํ ์ปจํธ๋ํธ ์์ฑ๊ณผ ๋น ๋ฅธ Solidity ํ์ต์๋ Remix๋ฅผ ์ถ์ฒํฉ๋๋ค.
Remix ์จ๋ผ์ธ์ ์ ์ํ์ธ์, ์๋ฌด๊ฒ๋ ์ค์น ํ ํ์ ์์ต๋๋ค.
์ธํฐ๋ท ์ ์์ด ์๋๋ ํ๊ฒฝ์์ Remix๋ฅผ ์ฌ์ฉํ๊ธธ ์ํ๋ค๋ฉด, https://github.com/ethereum/remix-live/tree/gh-pages ๋ก ๊ฐ์ .zip
ํ์ผ์ ๋ด๋ ค๋ฐ์ผ์ธ์.
์ด ํ์ด์ง์ ๋ค์ ํญ๋ชฉ๋ค์ ์ปค๋งจ๋๋ผ์ธ Solidity ์ปดํ์ผ๋ฌ ์ํํธ์จ์ด๋ฅผ ์ค์นํ๋ ๋ด์ฉ์ ์ด๊ฑฐํ๊ณ ์์ต๋๋ค. ํฐ ๊ท๋ชจ์ ์ปจํธ๋ํธ๋ฅผ ์์ ํ๊ฑฐ๋ ๋ ๋ง์ ํธ์ง ์ต์ ์ด ํ์ํ๋ค๋ฉด ์ปค๋งจ๋๋ผ์ธ ์ปดํ์ผ๋ฌ๋ฅผ ์ฌ์ฉํ์ธ์.
Solidity ์ปดํ์ผ๋ฌ์ธ solcjs ๋ฅผ ์ค์นํ๋ ค๋ฉด ๊ฐํธํ npm ์ ์ฌ์ฉํ์ธ์. solcjs ํ๋ก๊ทธ๋จ์ ํ ํ์ด์ง ์๋์ ์ค๋ช ๋ ์ปดํ์ผ๋ฌ์ ์ ๊ทผํ๋ ๋ฐฉ๋ฒ๋ณด๋ค ๋ ์ ์ ๊ธฐ๋ฅ์ ๊ฐ์ง๊ณ ์์ต๋๋ค. :ref:`commandline-compiler` ๋ฌธ์๋ ์ฌ๋ฌ๋ถ์ด ๋ชจ๋ ๊ธฐ๋ฅ์ ๊ฐ์ถ ์ปดํ์ผ๋ฌ solc ์ ์ฌ์ฉํ๋ค๊ณ ๊ฐ์ ํฉ๋๋ค. solcjs ์ ์ฌ์ฉ๋ฒ์ ์ ์ฅ์ ์ ๋ฌธ์ํ ๋์ด ์์ต๋๋ค.
์ฃผ์: solc-js ํ๋ก์ ํธ๋ Emscripten์ ์ฌ์ฉํ๋ C++ solc ์์ ํ์๋์์ต๋๋ค. solc-js์ Emscripten๋ ๋์ผํ ์ปดํ์ผ๋ฌ ์์ค ์ฝ๋๋ฅผ ์ฌ์ฉํฉ๋๋ค. solc-js ๋ Javascript ํ๋ก์ ํธ์์ ์ฌ์ฉ๋ ์ ์์ต๋๋ค(์: Remix). ์์ธํ ๋ด์ฉ์ solc-js ์ ์ฅ์๋ฅผ ์ฐธ์กฐํ์ญ์์ค.
npm install -g solc
Note
์คํ๊ฐ๋ฅํ ์ปค๋งจ๋๋ผ์ธ์ ์ด๋ฆ์ solcjs ์ ๋๋ค.
solc ์ ๋ช ๋ น์ด๊ฐ solcjs ์์ ์๋ํ์ง ์๋ฏ์ด solcjs ์ ์ปค๋งจ๋๋ผ์ธ ์ต์ ์ solc ๊ทธ๋ฆฌ๊ณ geth ๊ฐ์ ๋๊ตฌ๋ค์์ ํธํ๋์ง ์์ต๋๋ค.
์ฐ๋ฆฌ๋ ์ปดํ์ผ๋ฌ๊ฐ ํฌํจ๋ ์ต์ Docker ๋น๋๋ฅผ ์ ๊ณตํฉ๋๋ค.
stable
์ ์ฅ์์๋ ๋ฐฐํฌ๋ ๋ฒ์ ์ด ํฌํจ๋์ด ์์ผ๋ฉฐ
nightly
์ ์ฅ์์๋ ์ ์ฌ์ ์ผ๋ก ๋ถ์์ ํ ๋ณ๊ฒฝ์ฌํญ์ด ํฌํจ๋ ๊ฐ๋ฐ ๋ธ๋์น์ ๋ฒ์ ์ด ํฌํจ๋์ด ์์ต๋๋ค.
docker run ethereum/solc:stable --version
ํ์ฌ, Docker ์ด๋ฏธ์ง์๋ ์ปดํ์ผ๋ฌ ์คํ ํ์ผ๋ง ํฌํจ๋์ด ์์ต๋๋ค, ๊ทธ๋ฌ๋ฏ๋ก ์์ค์ ์ถ๋ ฅ ๋๋ ํฐ๋ฆฌ๋ฅผ ์ฐ๊ฒฐํ๊ธฐ ์ํด์ ๋ช ๊ฐ์ง ์ถ๊ฐ ์์ ์ ํด์ผ ํฉ๋๋ค.
Solidity ๋ฐ์ด๋๋ฆฌ ํจํค์ง๋ solidity/releases ์์ ์ด์ฉ ๊ฐ๋ฅํฉ๋๋ค.
Ubuntu์์ ์ฌ์ฉ ๊ฐ๋ฅํ PPA๋ ์์ต๋๋ค. ์์ ๋ ์ต์ ๋ฒ์ ์ ์๋ ๋ช ๋ น์ด๋ฅผ ํตํด ์ค์น๊ฐ๋ฅํฉ๋๋ค.
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
์ฐ๋ฆฌ๋ ๋ํ snap package ๋ฅผ ๋ฐฐํฌํ๊ณ ์์ต๋๋ค. ์ด ํจํค์ง๋ ์ง์๋๋ ๋ชจ๋ Linux ๋ฐฐํฌํ ์ ์ค์นํ ์ ์์ต๋๋ค. solc์ ์์ ๋ ์ต์ ๋ฒ์ ์ ์ค์นํ๋ ค๋ฉด ๋ค์ ๋ช ๋ น์ด๋ฅผ ์ด์ฉํ์ธ์:
sudo snap install solc
์ต์ ๋ณ๊ฒฝ์ฌํญ์ด ํฌํจ๋ Solidity์ ์ต์ ๊ฐ๋ฐ๋ฒ์ ์ ํ ์คํธํ๋ ๋ฐ ๋์์ ์ฃผ๊ณ ์ถ๋ค๋ฉด ๋ค์์ ๋ฐ๋ฅด์ธ์:
sudo snap install solc --edge
๊ฐ๋ฐ ์ค์ธ ์ต์ ๋ฒ์ ๋ฟ์ด์ง๋ง Arch Linux ์ญ์ ํจํค์ง๊ฐ ์์ต๋๋ค:
pacman -S solidity
์ฐ๋ฆฌ๋ Homebrew๋ฅผ ํตํด Solidity ์ปดํ์ผ๋ฌ๋ฅผ build-from-source ๋ฒ์ ์ผ๋ก ๋ฐฐํฌํฉ๋๋ค. pre-built bottles ๋ ํ์ฌ ์ง์๋์ง ์์ต๋๋ค.
brew update
brew upgrade
brew tap ethereum/ethereum
brew install solidity
Solidity์ ํน์ ๋ฒ์ ์ด ํ์ํ ๊ฒฝ์ฐ, ๊นํ๋ธ์์ ์ง์ Homebrew formula๋ฅผ ์ค์นํ ์ ์์ต๋๋ค.
๊นํ๋ธ์ solidity.rb ์ปค๋ฐ ๋ด์ญ ์ ์ฐธ์กฐํ์ธ์.
solidity.rb
์ ํน์ ์ปค๋ฐ์ raw file ๋งํฌ๋ฅผ ์ฐพ์ ๋๊น์ง ํ์คํ ๋ฆฌ ๋งํฌ๋ฅผ ๋ฐ๋ผ๊ฐ์ธ์.
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
Solidity๋ฅผ Linux์์ ๋น๋ ํ๊ธฐ์ํด ๋ค์ ์์กด ํญ๋ชฉ์ ์ค์นํด์ผ ํฉ๋๋ค:
์ํํธ์จ์ด | ์ค๋ช |
---|---|
Git for Linux | Github์์ ์์ค๋ฅผ ๊ฒ์ํ๊ธฐ ์ํ ์ปค๋งจ๋๋ผ์ธ ํด |
macOS์ ๊ฒฝ์ฐ, ๋ฐ๋์ ์ต์ ๋ฒ์ ์ `Xcode<https://developer.apple.com/xcode/download/>`_ ๊ฐ ์ค์น๋์ด์ผ ํฉ๋๋ค. ์ฌ๊ธฐ์๋ Clang C++ compiler, Xcode IDE ์ ๊ทธ ์ธ OS X์์ C++ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋น๋ํ๊ธฐ ์ํ ์ ํ ๊ฐ๋ฐ๋๊ตฌ๋ค์ด ํฌํจ๋์ด ์์ต๋๋ค. Xcode๋ฅผ ์ฒ์ ์ค์นํ๊ฑฐ๋ ์ ๋ฒ์ ์ ์ค์นํ๋ค๋ฉด, ์ปค๋งจ๋๋ผ์ธ์์ ๋น๋ํ๊ธฐ ์ ๋ผ์ด์ ์ค์ ๋์ํด์ผ ํฉ๋๋ค:
sudo xcodebuild -license accept
์ธ๋ถ ์์กด ํญ๋ชฉ์ ์ค์นํ๊ธฐ ์ํด OSX ๋น๋๋ Homebrew ํจํค์ง ๋งค๋์ ๋ฅผ ํ์๋ก ํฉ๋๋ค. ํน์ ์ฒ์๋ถํฐ ๋ค์ ์์ํ๊ณ ์ถ๋ค๋ฉด, ์ฌ๊ธฐ Homebrew ์ญ์ ํ๋ ๋ฐฉ๋ฒ์ ๋๋ค.
Solidity์ Windows ๋น๋๋ฅผ ์ํด ์๋์ ์์กด ํญ๋ชฉ๋ค์ ์ค์นํด์ผ ํฉ๋๋ค:
์ํํธ์จ์ด | ์ค๋ช |
---|---|
Git for Windows | Github์์ ์์ค๋ฅผ ๊ฒ์ํ๊ธฐ ์ํ ์ปค๋งจ๋๋ผ์ธ ๋๊ตฌ. |
CMake | ํฌ๋ก์ค ํ๋ซํผ ๋น๋ ํ์ผ ์์ฑ๊ธฐ. |
Visual Studio 2017 Build Tools | C++ ์ปดํ์ผ๋ฌ |
Visual Studio 2017 (Optional) | C++ ์ปดํ์ผ๋ฌ ๋ฐ ๊ฐ๋ฐ ํ๊ฒฝ. |
IDE๊ฐ ํ๋ ๋ฟ์ด๊ณ , ์ปดํ์ผ๋ฌ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ง ์์ผ๋ฉด, Visual Studio 2017 Build Tools๋ฅผ ์ค์นํ ์ ์์ต๋๋ค.
Visual Studio 2017์ IDE์ ํ์ํ ์ปดํ์ผ๋ฌ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ๋ชจ๋ ์ ๊ณตํฉ๋๋ค. ๋ฐ๋ผ์ IDE๊ฐ ์๋ ์ํฉ์์ Solidity ๊ฐ๋ฐ์ ์๊ฐํ๊ณ ์๋ค๋ฉด, Visual Studio 2017์ด ๋ชจ๋ setup์ ์ฝ๊ฒ ํด ์ค ์ ์๋ ์ ํ์ด ๋ ๊ฒ์ ๋๋ค.
๋ค์์ 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
์์ค์ฝ๋๋ฅผ ๋ณต์ ํ๊ธฐ ์ํด์๋, ์๋์ ๋ช ๋ น์ด๋ฅผ ์คํํ์ธ์:
git clone --recursive https://github.com/ethereum/solidity.git
cd solidity
Solidity ๊ฐ๋ฐ์ ๋๊ณ ์ถ๋ค๋ฉด, Solidity ํ๋ก์ ํธ๋ฅผ ํฌํฌํ๊ณ , ๋ ๋ฒ์งธ ์๊ฒฉ ์ ์ฅ์๋ก ์์ ์ ์ ์ฅ์๋ฅผ ์ถ๊ฐํ์ธ์:
git remote add personal [email protected]:[username]/solidity.git
macOS, Windows ์ธ ์๋ง์ Linux ๋ฐฐํฌํ์ ํ์ํ ๋ชจ๋ ์ธ๋ถ ์์กด ํญ๋ชฉ์ ์ค์นํ๋ ๋์ฐ๋ฏธ ์คํฌ๋ฆฝํธ๊ฐ ์์ต๋๋ค.
./scripts/install_deps.sh
Windows์์ ์๋์ ๊ฐ์ต๋๋ค:
scripts\install_deps.bat
** ๋น๋ํ๊ธฐ ์ ์ธ๋ถ ์์กด ํญ๋ชฉ์(์๋ถ๋ถ ์ฐธ์กฐ) ๋ฐ๋์ ์ค์นํด์ผ ํฉ๋๋ค.**
Solidity ํ๋ก์ ํธ๋ ๋น๋๋ฅผ ๊ตฌ์ฑํ๊ธฐ ์ํด CMake๋ฅผ ์ฌ์ฉํฉ๋๋ค. ๋ฐ๋ณต๋ ๋น๋ ์๋๋ฅผ ๋์ด๊ธฐ ์ํด์ ccache๋ฅผ ์ค์นํ๋ ๊ฒ์ด ์ข์ต๋๋ค. CMake๊ฐ ์๋์ผ๋ก ccache๋ฅผ ์ ํํ ๊ฒ์ ๋๋ค. Solidity ๋น๋๋ Linux, macOS ๋ฐ ๊ธฐํ Unix์์ ๋งค์ฐ ์ ์ฌํ๊ฒ ์งํ๋ฉ๋๋ค:
mkdir build
cd build
cmake .. && make
๋๋ ์กฐ๊ธ ๋ ์ฌ์ด ๋ฐฉ๋ฒ:
.. code-blcok:: bash #์ฃผ์: ์ด ๋ช ๋ น์ด๋ ๋ฐ์ด๋๋ฆฌ solc์ soltest๋ฅผ usr/local/bin์ ์ค์นํ ๊ฒ์ ๋๋ค. ./scripts/build.sh
Windows์์๋:
mkdir build
cd build
cmake -G "Visual Studio 15 2017 Win64" ..
์ด ๋ช ๋ น์ด์ ๊ฒฐ๊ณผ๋ก ํด๋น ๋น๋ ๋๋ ํฐ๋ฆฌ์ solidity.sln ๊ฐ ์์ฑ๋ฉ๋๋ค. ์ด ํ์ผ์ ๋๋ธํด๋ฆญํ๋ฉด Visual Studio๊ฐ ์คํ๋ฉ๋๋ค. ์ฐ๋ฆฌ๋ Release ํ๊ฒฝ์ค์ ์ ๋น๋ํ๋ ๊ฑธ ์ ์ํฉ๋๋ค.
๋ ๋ค๋ฅธ ๋ฐฉ๋ฒ์ผ๋ก๋ Windows ์ปค๋งจ๋๋ผ์ธ์์ ์๋์๊ฐ์ด ๋น๋๋ฅผ ์งํํ ์ ์์ต๋๋ค:
cmake --build . --config Release
CMake ์ต์
์ ์๊ณ ์ถ๋ค๋ฉด cmake .. -LH
๋ช
๋ น์ด๋ฅผ ์คํํ์ญ์์ค.
Solidity๋ SMT solvers์ ๋ํด ๋น๋ ๋ ์ ์์ผ๋ฉฐ, ์์คํ ์์ ๋ฐ๊ฒฌ๋๋ฉด ๋ํดํธ๋ก ์ํ๋ ๊ฒ์ ๋๋ค. ๊ฐ solver๋ cmake ์ต์ ์ ์ํด ๋นํ์ฑํ ๋ ์ ์์ต๋๋ค.
์ฃผ์ : ๊ฒฝ์ฐ์ ๋ฐ๋ผ ๋น๋ ์คํจ์ ์ ์ฌ์ ์ธ ํด๊ฒฐ๋ฐฉ๋ฒ์ด ๋ ์๋ ์์ต๋๋ค.
๋น๋ ํด๋์์๋ ๋ํดํธ๋ก ์ฌ์ฉํ๋๋ก ์ค์ ๋์ด ์๊ธฐ ๋๋ฌธ์, ์ฌ์ฉํ์ง ์๋๋ก ์ค์ ํ ์ ์์ต๋๋ค.
# Z3 SMT Solver ๋ง ๋นํ์ฑํ
cmake .. -DUSE_Z3=OFF
# CVC4 SMT Solver ๋ง ๋นํ์ฑํ
cmake .. -DUSE_CVC4=OFF
# Z3์ CVC4 ๋ชจ๋ ๋นํ์ฑํ
cmake .. -DUSE_CVC4=OFF -DUSE_Z3=OFF
Solidity ๋ฒ์ ๋ฌธ์์ด์ ๋ค ๋ถ๋ถ์ผ๋ก ๊ตฌ์ฑ๋ฉ๋๋ค:
- ๋ฒ์ ์ซ์
- pre-release ํ๊ทธ, ๋๊ฐ
develop.YYYY.MM.DD
๋nightly.YYYY.MM.DD
ํํ๋ฅผ ์ง๋ - ๋ค์๊ณผ ๊ฐ์ ํํ์ ์ปค๋ฐ
commit.GITHASH
- ํ๋ซํผ ๋ฐ ์ปดํ์ผ๋ฌ์ ๋ํ ์ธ๋ถ ์ ๋ณด๋ฅผ ํฌํจํ๋ ๋ช ๊ฐ์ง ํญ๋ชฉ
๋ก์ปฌ์์ ์์ ๋ ๋ถ๋ถ์ด ์๋ค๋ฉด, ์ปค๋ฐ ๋ค์ .mod
๊ฐ ๋ถ์ต๋๋ค.
์ด ๋ถ๋ถ๋ค์ Semver(Semantic Versioning)์ ๋ฐ๋ผ ํ์์ ์ํด ๊ฒฐํฉ๋ฉ๋๋ค. ์ฌ๊ธฐ์ Solidity pre-release ํ๊ทธ๋ Semver์ pre-release ํ๊ทธ์ ๊ฐ๊ณ Solidity ์ปค๋ฐ ๋ฐ ํ๋ซํผ์ ๊ฒฐํฉ๋์ด Semver ๋น๋ ๋ฉํ๋ฐ์ดํฐ๋ฅผ ๊ตฌ์ฑํฉ๋๋ค.
release ์: 0.4.8+commit.60cc1668.Emscripten.clang
.
pre-release ์: 0.4.9-nightly.2017.1.17+commit.6ecb4aa3.Emscripten.clang
๋ฆด๋ฆฌ์ฆ๊ฐ ์ผ์ด๋ ํ์, ํจ์น ๋ฒ์ ์ ๋ณ๊ฒฝ๋ฉ๋๋ค.
๋ณ๊ฒฝ์ฌํญ์ด ํฉ์ณ์ง ๋, ๋ฒ์ ์ semver์ ๋ณ๊ฒฝ ์ ๋์ ๋ฐ๋ผ ๋ณ๊ฒฝ๋ฉ๋๋ค.
๋ฐ๋ผ์, ๋ฐฐํฌ๋ ํญ์ prerelease
ํ๊ทธ๋ฅผ ์ ์ธํ ํ์ฌ์ nightly build๋ฒ์ ์ผ๋ก ์ด๋ฃจ์ด์ง๋๋ค.
์:
- 0.4.0๊ฐ ๋ฐฐํฌ๋๋ค
- ์ง๊ธ๋ถํฐ nightly build๋ 0.4.1 ๋ฒ์ ์ด๋ค
- ์ด๋ ํ ๋ณ๊ฒฝ์ฌํญ์ด ์์ ๊ฒฝ์ฐ - ๋ฒ์ ์ ๋ณํ๊ฐ ์๋ค
- ๋ณ๊ฒฝ์ฌํญ์ด ์์ ๊ฒฝ์ฐ - ๋ฒ์ ์ 0.5.0์ด ๋๋ค
- 0.5.0๊ฐ ๋ฐฐํฌ๋๋ค
์ด ๋์์ :ref:`version pragma <version_pragma>` ์ ํจ๊ป ์๋ํฉ๋๋ค.