はじめに
SAP Advent Calendar 2019 の12月4日の記事として投稿しています。
対象
・SAP界隈の人(SAP Cloud Platformを触ったことがあると良い)
・経験や知識は無いけど、取り敢えずブロックチェーンに触れてみたい人
この記事で書かれていること
今回は「ブロックチェーンとは?」「Hyperledger Fabricって何?」についてはほとんど触れていません。
正直、ブロックチェーンは手を付けるまでのハードルが非常に高いと思います。
仕組みを理解するにも、その仕組のメリットを理解するにも時間が掛かるからです。
そして取り敢えず触ってみようにも、必ずと言って良いほど環境構築の過程で一度は躓いてしまいます。
本記事ではまず、「SAP Cloud Platform」のブロックチェーンサービス(BaaS)を利用することで、本来は自力で行わなければならない環境構築をすっ飛ばし、兎にも角にもまず「ブロックチェーンに触れてみよう」というところにフォーカスしています。
最終的には以下のようなアプリケーションを動作させ、アプリケーションから登録されたブロックチェーン上のデータをGUIから確認するところまでを解説していこうと思います。
アプリケーションは既にサンプルとして用意されているので、ノンコーディングでブロックチェーンを体感することができます。
ブロックチェーン基盤は正直何でも良いのですが、今回は国内でも良く耳にする「Hyperledger Fabric(以下、HLF)」を取り上げてみたいと思います。
HLFについて詳しく学びたい方は、以下のサイトがおすすめです。
・Hyperledger Fabric 入門, 第 1 回「基本的な構成」
https://www.ibm.com/developerworks/jp/cloud/library/cl-hyperledger-fabric-basic-1/
少し長くなりますが、興味ある方は是非読んでみて下さい。
SAP Cloud Platform上のブロックチェーンサービスを試してみる
1.トライアル環境からHLFサービスプランを確認する
まずはSAP Cloud Platform(CF版)のトライアル環境を準備しましょう。
今回使うHLFサービスは、現状AWSでのみ使えるということで、リージョンはアメリカ東海岸(VA)を選択しました。
最初にクォータから2つのHLFサービスプランを確認します。
大まかなサービスプランの概要は以下になります。
・dev:ノード、チャネル※の作成などが可能
・channel:チャネルに所属するノードに対して、チェーンコードのデプロイ・管理などが可能
※チャネルとは、ノード(参加者)をまとめるグループのようなもの。同じチャネルに所属するノードには同じルール(チェーンコード)が適用されます。
2.領域を作成する
「dev」「channel」それぞれのサービスプランに対して領域を作成します。
(1)devサービスプラン用の領域を作成する
ここでは「nodes」という領域名を付けています。
この領域でノードとチャネルを作成します。
ノードとはブロックチェーンネットワークの1構成要素のことで、「参加者」くらいに考えておけば良いでしょう。
(2)channelサービスプラン用の領域を作成する
ここでは「hlf-apps」という領域名を付けています。
この領域で、該当チャネルの各ノードに対してチェーンコード※をデプロイします。
アプリケーションのデプロイも行うことができます。
※スマートコントラクトと大体同じ意味。ブロックチェーンネットワーク内のルールのこと。平たく言うとビジネスロジック。
3.ノードを作成する
先程作成した「nodes」領域に入ります。
ノードを作成するために、まずはHLFのDevサービスインスタンスを作成しましょう。
サービスマーケットプレイスから「Hyperledger Fabric」を検索して選択します。
「インスタンス」メニューから「新規インスタンス」を押下し、サービスプランでは「dev」を選択します。
オプションのパラメータ指定、アプリケーション割当は何も設定せずに、ノード名を適当につければ作成完了です。
インスタンスの中を覗いて、ダッシュボードを開いてみましょう。
それっぽい画面が表示されたと思います。
componentに表示されている「Orderer」「Peer」「CouchDB」などのワードは、聞いたことがある人もいるでしょう。
これで1つノードを作成することができました。
今回はチェーンコードを動かすことが目的なので、ノードは1つで十分でしょう。
4.チャネルを作成する
ダッシュボードの「Channels」メニューから作成できます。
当然、ノードを1つしか作成してないので、Channelに含めるPeerの数も1つしか表示されません。
チャネルが作成できたら、チャネルにアクセスするためのサービスキーを生成します。
これでサービスキーの生成は完了です。
サービスキーは、次のステップで作成する「channel」サービスインスタンスと、先ほど作成したチャネルを紐付けるために使用します。
5.channelサービスインスタンスを作成する
今度はchannelサービスプラン用の領域「hlf-apps」に入ります。
さっきと同じ要領でサービスマーケットプレイスからHLFサービスを選択し、インスタンスを作成します。
※今度は「channel」プランを選択することに注意して下さい。
パラメータ指定で先程生成したチャネルのサービスキーを貼り付けて下さい。
インスタンスの作成が終わりました。
先程と同じようにインスタンスを選択して、ダッシュボードにアクセスします。
先程サービスキーを指定したチャネルに紐付いてることが確認できます。
6.サンプルチェーンコードを動かしてみる
ここまで来れば、後少しです。
ダッシュボード「Chaincode」メニュー > 「Example Chaincodes」
「Hello World」を選択します。
「Deploy Chaincode」で確定。
これでサービスで既に用意されているサンプルのチェーンコードを試せるようになりました。
早速、チェーンコードを動かしてみましょう。
POST:IDをキーにメッセージを登録する
GET:IDをもとにメッセージを取得する
7.サンプルアプリケーションを動かしてみる
いよいよ最後です。
ダッシュボード「Chaincode」メニュー > 「Example Application」
サンプルとして車の走行距離をブロックチェーン上で読み書きするアプリケーションが用意されているようです。
デプロイ後、URLが表示されるのでアクセスします。
はい。後は先程と同じですね。
ブロックももちろん追加されていきます。
これでSAP Cloud Platform上のブロックチェーンサービスの体験は終了です。
ここではサンプルアプリケーションを使用しましたが、もちろん自前のチェーンコードをデプロイすることも可能です。
Go言語とチェーンコードのお作法(Init,Invoke関数など)をある程度抑えていれば、意外とスムーズに開発ができるはずなので、興味ある方は試してみてはいかがでしょうか。
おわりに
もはや幻滅期に入ったブロックチェーン。
一向に実用化が進まない現実を見て、しばらく興味が離れていた人も多いのではないでしょうか。
しかし、きっと数年後(もっと先かも知れません)ブロックチェーンが当たり前に使われる場面は出てくると思っています。
ブロックチェーンの本質は「技術」ではない。
既存業務の置き換え検討や、RDBとの比較など、いくらやっても大して意味を成さないと思います。
ブロックチェーンに関して、こんな言葉を聞いたことがあります。
ブロックチェーンは、新しい星を見つけてそこに自分たちだけの国をつくる、そんなイメージを具現化する手段だ。
もしこれが本当だとしたら、ワクワクしますよね。
それでは。