Hyperledger ComposerとHyperledger Fabric 1.0 の開発環境を整える手順(2018年4月15日)時点

ブロックチェーンは「改ざん出来ないこと」や「機密性」が、ランニングコストやリードタイムなどよりも優先するシステムに役立つと考えている人です。
仮想通貨には殆ど価値を感じていません。ブロックチェーンを使う開発にHyperledger Composerを使うのですが、最近ちょっと困ったことが起きていまして、実施した対策の備忘録です。

#Hyperledger Composer チュートリアルでエラー
Hyperledger Composer の開発環境を構築する際に、開発環境を構築しようとすると、composer-cli のインストールでエラーが出ますし、なんとか回避しても、

```
Cannot use v0.16.3 version of composer with fabric 1.1, v0.19 or higher is required
```
このメッセージが表示され、先に進めないのではないでしょうか？
2018年4月時点で、composer 0.19は最新版です。しかし、composer 0.19のインストールではエラーが起きるケースがあり、Hyperledger ComposerでサポートしているLinuxディストリビューション「Ubuntu」では先に進めません。composer 0.19 が使えないのであれば、上記メッセージに従って、Hyperledger Fabric 1.1も使えないので、1つ前の「Hyperledger Fabric 1.0」の環境を用意することにします。

#Hyperledger ComposerとHyperledger Fabric 1.0を入れる 
Hyperledger Fabric 1.0に対応するcomposerのインストールには、[Hyperledger Composerのtutorial](https://hyperledger.github.io/composer/latest/installing/development-tools.html) と「[Hyperledger Fabric & Composer 環境の導入手順（2018/2月版）](http://dotnsf.blog.jp/archives/1069641731.html)」を参考にしています。

## 前提環境を整える
使用するOSは、「Ubuntu Server 16.04 LTS」です。ほとんどのクラウドサービスで採用されていますし、メーカーから購入できるサーバーでもサポート対象になっています。
Ubuntuベースで、Hyperledger Fabric 1.0 と関連ミドルウェアを入れるために必要な環境を構築していきます。Hyperledger Composer DocsのInstalling pre-requisites部分です。

Docker Engineを入れる

```
$ sudo apt-get -y install apt-transport-https ca-certificates curl software-properties-common
$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
$ sudo add-apt-repository "deb [arch=amd64] $ https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
$ sudo apt-get update
$ sudo apt-get -y install docker-ce
$ sudo usermod -aG docker $(whoami)
```
上記実行後、ログアウトし、再ログインします。

Docker Composeを入れる

```
$ sudo curl -L https://github.com/docker/compose/releases/download/1.21.0/docker-compose-$(uname -s)-$(uname -m) -o /usr/local/bin/docker-compose
$ sudo chmod +x /usr/local/bin/docker-compose
```

Node.jsを入れる
Node.js 8.x系など試した結果、Hyperledger Fabric 1.0を使うためには、Node.js 6.x系が必要でした。

```
$ sudo apt-get install -y build-essential
$ curl -sL https://deb.nodesource.com/setup_6.x | sudo -E bash -
$ sudo apt-get install nodejs
```

## Hyperledger Fabric 1.0 と関連ミドルウェアを入れる
Hyperledger Fabric 1.0を使用するには、composer 0.16.x系が必要です。
Hyperledger Composer DocsのInstalling the development environmentを、Hyperledger Fabric 1.0向けにアレンジした内容になります。

```
$ sudo npm install -g composer-cli@0.16.3
$ sudo npm install -g composer-rest-server@0.16.3
$ sudo npm install -g generator-hyperledger-composer@0.16.3
$ sudo npm install -g yo
$ sudo npm install -g composer-playground@0.16.3
$ mkdir ~/fabric-tools && cd ~/fabric-tools
$ curl -O https://raw.githubusercontent.com/hyperledger/composer-tools/master/packages/fabric-dev-servers/fabric-dev-servers.tar.gz
$ tar -xvf fabric-dev-servers.tar.gz
$ export FABRIC_VERSION=hlfv1
$ ./downloadFabric.sh
```

downloadFabric.shによるHyperledger Fabric 1.0取得前に、export FABRIC_VERSION=hlfv1 を実行する必要があります。実行しない場合、Hyperledger Fabric 1.1 が取得されます。

また、Hyperledger Fabric 1.0 を実行するには、startFabric.sh を実行するのですが、一工夫しておかないと、Hyperledger Fabric 1.1を取得しようとしますので、少し書き換えます。

```
$ nano startFabric.sh

#!/bin/bash
の下に、
export FABRIC_VERSION=hlfv1 を追記して保存
```

# Hyperledger Fabric 1.0とPlaygroundの起動
これで、Hyperledger Fabric 1.0 を実行する準備が整いましたので起動し、Playgroundを実行してみましょう。

```
$ ./startFabric.sh
$ ./createPeerAdminCard.sh
$ cp /tmp/PeerAdmin@hlfv1.card .
$ mkdir -p /home/user/.composer/cards
$ cp fabric-tools/PeerAdmin@hlfv1.card /home/user/.composer/cards/PeerAdmin@hlfv1.card
$ composer-playground
```
Webブラウザにて、localhost:8080 にアクセスします。
これで、2018年4月でもHyperledger Fabric 1.0の環境を整えることができました。