IBM Blockchain を使ってみる

[オープンソースのブロックチェーン Hyperledger Fablic を試してみる](http://qiita.com/kyrieleison/items/ec5223bbe6140822df4a) を書いたときには、自分で EC2 上に環境を立てていたのですが
IBM が Bluemix 上で提供している IBM Blockchain が、非常に敷居が低かったので紹介します。 

# Bluemix でサービスを作成・起動
まずは Bluemix のダッシュボードにアクセスします。
https://new-console.ng.bluemix.net/

![screenshot-new-console.ng.bluemix.net 2016-10-21 19-20-15.png](https://qiita-image-store.s3.amazonaws.com/0/44003/153c01c2-04c9-b16e-cdb9-4d789660e594.png)

右上にある「カタログ」リンクをクリックし、blockchain で検索します。
1件だけヒットするはずなので、そのパネルをクリックしてください。

![screenshot-new-console.ng.bluemix.net 2016-10-21 19-01-34.png](https://qiita-image-store.s3.amazonaws.com/0/44003/9a30a66f-a2cc-c475-924e-7e4606f5b657.png)

サービスの概要ページに遷移します。
ここで必要があればサービス名や資格情報名を変更してください(特に大きな影響はないようです)。

![screenshot-new-console.ng.bluemix.net 2016-10-21 19-03-00.png](https://qiita-image-store.s3.amazonaws.com/0/44003/212716fd-f35c-d6fd-0152-4fe44786a607.png)

スクロールすると価格プランが出ます。
Starter Developer plan には以下の機能をあり、すべて無料で使えます。

- 4つの検証ピアサーバと1つのCAサーバ
- チェーンコードのデプロイと実行・参照テスト
- ログと操作、APIのダッシュボード
- サンプルアプリとそのソースコード

![screenshot-new-console.ng.bluemix.net 2016-10-21 19-24-58.png](https://qiita-image-store.s3.amazonaws.com/0/44003/47bb84b7-a29c-d262-8d6e-fce2848e98e5.png)

「作成」ボタンを押すとすぐにサービスが作成されます。

![screenshot-new-console.ng.bluemix.net 2016-10-21 19-29-26.png](https://qiita-image-store.s3.amazonaws.com/0/44003/a2ad8245-d9c9-1137-5c39-fc8903dbce6a.png)

「LAUNCH」ボタンを押すと、以下のような IBM Blockchain のダッシュボードが開きます。

![screenshot-obc-service-broker-prod.mybluemix.net 2016-10-21 19-04-00.png](https://qiita-image-store.s3.amazonaws.com/0/44003/e8145724-b2a3-c2f8-7f7c-1f5c31de8ff9.png)

# IBM Blockchain でできること

IBM Blockchain のダッシュボードはかなり高機能で、それぞれ上部にあるタブから以下のことが行なえます。

## Network
ネットワーク上にあるピアサーバと、デプロイされたチェーンコードの状態を確認できます。

![screenshot-obc-service-broker-prod.mybluemix.net 2016-10-21 19-41-38.png](https://qiita-image-store.s3.amazonaws.com/0/44003/e837a5e7-43f4-7c20-818e-89be1da71263.png)

## Blockchain
チェーンに書き込まれたブロックやトランザクションの情報を確認できます。

![screenshot-obc-service-broker-prod.mybluemix.net 2016-10-21 19-40-49.png](https://qiita-image-store.s3.amazonaws.com/0/44003/a81e4e64-d25b-915c-2cae-65e91c36b715.png)

- チェーン上のブロック数
- 時間あたりブロック数
- ブロックあたりトランザクション数
- デプロイトランザクション数(チェーンコードを設置した数)
- インボケーショントランザクション数(チェーンコードを実行した数)
- ブロックIDと、ブロックに含まれるトランザクションのタイプ、UUID、チェーンコードID、ペイロード
- 各ブロック・トランザクションのタイムスタンプ

## Demo Chaincode

チェーンコードのサンプルアプリを設置・実行・参照できます。

![screenshot-obc-service-broker-prod.mybluemix.net 2016-10-21 19-43-33.png](https://qiita-image-store.s3.amazonaws.com/0/44003/c82fb4d2-3efb-d5a4-d38c-435d5ce52a78.png)

「Deploy」ボタンを押すとサンプルアプリがチェーンコードとして設置されます。
少し待って設置が完了すると、チェーンコードの選択ボックスと、実行可能な操作と参照のボタンが現れます。
ボタンを押すと下のログ部分に結果が表示され、またしばらく待つと Block タブからも追加されたブロックを確認することができます。

「Links」からはサンプルアプリのソースコードを確認することができます。

## APIs

ピアサーバに向けて REST API を叩くことができます。

![screenshot-obc-service-broker-prod.mybluemix.net 2016-10-21 19-49-04.png](https://qiita-image-store.s3.amazonaws.com/0/44003/3de40523-4dd6-c3ac-c3db-9d2dca4b578a.png)

URL横の「VP0~3」のボタンをクリックすると、向き先のピアサーバが変わります。
各APIはcurlコマンドなどで実行することもできますし、ダッシュボード上から叩くこともできます。

また、各APIを叩く際にユーザログインが必要になることがあります。
「Network's Enroll IDs」をクリックすると、始めにネットワークに登録されているユーザのIDとパスワードが表示されるので、それを使って Registrar API を叩くとログインができます。

それぞれのAPIについての詳細はこちらに書いていますので参考にしてください。
[Hyperledger Fablic の REST API メモ](http://qiita.com/kyrieleison/items/4b49fad4bc9e1db79de4)

## Logs

ピアサーバ・CA サーバのログを確認することができます。

![screenshot-obc-service-broker-prod.mybluemix.net 2016-10-21 19-53-22.png](https://qiita-image-store.s3.amazonaws.com/0/44003/c4a51b5b-4731-29c1-75ef-0ecb1775f4ee.png)

チェーンコードを設置・実行した後や、APIを叩いた後に確認すると、ピアサーバやCAサーバで何が行われているのかを大まかに把握できます。

# IBM Blockchain でできないこと

IBM Blockchain のバックエンドでは、Hyperledger Fablic の v0.5 (developer preview) が使われています。
現在の Hyperledger Fablic は v0.6 なので、チェーンコードのAPIなどに若干の違いがあります。
NodeSDK のバージョンが 5.3.0 でないとエラーになるといった問題もありました。

また、PaaS なので当たり前ですが、ピアサーバやCAサーバに直接入ることができないので、上手くいかないときの原因特定が難しいです。

とはいえ、IBM Blockchain はピアサーバやCAサーバを用意せずに一通り試すことができるメリットがあるので、まずどんなものか見てみたい方には非常におすすめです。
自分でチェーンコードを書いて、API経由でデプロイ・実行ができればもう一歩進めそうですね。

追加: [Hyperledger Fablic のチェーンコード実装メモ](http://qiita.com/kyrieleison/items/9368ed8a5254588c89b6) を書きました。