geth 1.5.5 及び Solidity(solc 0.4.10) でブロックチェーンの開発環境を作る


## :red_car: この記事の目的

以下のソフトウェア・バージョンでブロックチェーンの開発環境を作ります。
　ubuntu：16.04
　go-lang：1.6.2 
　geth：1.5.5
　solidity：0.4.10

この環境は、下部に引用の書籍「はじめてのブロックチェーン・アプリケーション Ethereumによるスマートコントラクト開発入門」に基づくものとなります。

## :red_car: OSの準備

OSとして、**Ubuntu 16.04 64bit**を使用します。
Ubuntu 18.04以降はコンパイルが通らないのでご注意ください。

## :red_car: gethのインストール

以下の手順でインストールを進めます。

まずは、事前にリソースを最新化します。
以下を実行してください。

```ruby:geth
sudo apt update
sudo apt upgrade
sudo apt install -y build-essential libgmp3-dev
```

#### (1)go-langのインストール

go-lang(GO言語)をインストールします。
ここでは、以下からGO言語のバイナリーモジュールをダウンロードします。

:paperclip: GO Download
https://go.dev/dl/

↓「Archived versions」リンクをクリック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/399135/b476f79d-5d4d-dd6a-68c7-76039d355b99.png)

↓「go1.6.2」を選択し、必要なソースのURL(赤枠)を右クリックで取得
(右クリック→「リンクのコピー」)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/399135/be050c01-2eb4-e434-e93a-f75887285dc1.png)

以下を実行してリンク先のモジュールをダウンロード
```ruby:geth
cd
wget https://go.dev/dl/go1.6.2.linux-amd64.tar.gz
```

ダウンロードが完了した後、tar.gzファイルを解凍します。

```ruby:geth
tar -xvf go1.6.2.linux-amd64.tar.gz
```

解凍後、/homoe/(user名)/goに対して、以下のようにリンクを作成します。
※(user名)は自分の環境に合わせること
※exportコマンドは.bashrcファイルに記載することで、次回ログイン以降有効となる

```ruby:geth
sudo ln -s /home/(user名)/go /usr/local/go
export GOROOT=/usr/local/go
```

/homoe/(user名)/go/binに対してPATHを設定します。
※.bashrcファイルに記載することで、次回ログイン以降有効となる

```ruby:geth
PATH=/home/(user名)/go/bin:$PATH
```

以下のコマンドでGO言語のバージョンを確認します。

```ruby:geth
go version
```

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/399135/d09ad5a5-9de4-59a1-401f-dbc34c9e36c5.png)

#### (2)gethのインストール

geth(Go-ethereum)をインストールします。
gethのソースはGitHubから取得します。
git cloneを実行後、v1.5.5をチェックアウト(git checkout)します。

```ruby:geth
cd
git clone https://github.com/ethereum/go-ethereum.git
cd go-ethereum
git checkout refs/tags/v1.5.5
```

以下のコマンドでgethをインストールします。

```ruby:geth
make geth
```

インストールが完了したら、以下を実行します。

```ruby:geth
sudo cp build/bin/geth /usr/local/bin/
```

パスが通っていることを確認します。

```ruby:geth
which geth
```
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/399135/96752df1-b526-463c-5b72-9fb339d330dc.png)

gethのバージョンを確認します。

```ruby:geth
geth version
```
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/399135/abad08e8-14ce-1dbc-294b-0fba31d8ad47.png)

## :red_car: Solidityのインストール

Solidityはsolc version v0.4.10を使用します。
SolidityのソースはGitHubの以下のページから取得します。

:paperclip: solidity Version 0.4.10
https://github.com/ethereum/solidity/releases/tag/v0.4.10

↓赤枠のソースをダウンロードします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/399135/b5d47e87-74bc-da5c-4494-dba203f2114e.png)

```ruby:solc
cd
wget https://github.com/ethereum/solidity/releases/download/v0.4.10/solidity_0.4.10.tar.gz
```

ダウンロードが完了した後、tar.gzファイルを解凍します。

```ruby:solc
tar -xvf solidity_0.4.10.tar.gz
```

解凍後、ディレクトリに移動し、以下のコマンドでインストールを実行します。

```ruby:solc
cd solidity_0.4.10/
sudo ./scripts/install_cmake.sh
sudo ./scripts/install_deps.sh
sudo ./scripts/build.sh
```

↓インストールには多少時間がかかりますが、完了するまで待ちます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/399135/cb298cb5-0129-82be-3308-d4d075ffafbe.png)

インストールが完了したら、build/solcフォルダ内にsolcコマンドが生成されます。
以下のようにバージョンを確認できます。

```ruby:solc
build/solc/solc --version
```

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/399135/4927aa2f-2c26-8dca-ac6e-a088ee62c9d0.png)

以下を実行し、solcコマンドを使いやすくしておきます。

```ruby:solc
sudo cp build/solc/solc /usr/local/bin/
```

念のため、実行できることを確認しておきます。

```ruby:solc
cd
which solc
solc --version
```

以上でインストールが完了しました。


## :red_car: 出典

■参考書
「はじめてのブロックチェーン・アプリケーション Ethereumによるスマートコントラクト開発入門」
渡辺篤(著),松本雄太(著),西村祥一(著),清水俊也(著)／翔泳社
![001.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/399135/d413f778-9de6-7d1e-1dee-461f5be2448a.jpeg)


## :red_car: ご意見など

ご意見、間違い訂正などございましたらお寄せ下さい。