後日、自分のブログで公開するかもしれませんが、現時点のまとめです。Hurleyについて調査中のため、誤解している可能性もありますが、Hyperledger Compsoer Playgroundを立ち上げ、ブロックチェーンアプリケーションのコードを書き、トランザクションを確認するところまでは確認できました。
Hurley
おそらく「ハーレイ」と読むと思います。Apache License 2.0のライセンスでWorldSibu社から提供されている「Hyperledger Fabricを用いた開発環境をさくっと作ってくれるツール」です。Node.jsを使用してセットアップします。
今回やること
Hurleyを用いて、Hyperledger Fabricの環境を構築し、Hyperledger Composerから接続、Hyperledger Composer Playgroundを起動してみましょう。
Hyperledger Composer Playground
「Hyperledger Composer Playground」は、ブロックチェーンアプリケーションを開発するためのサポートツールで、Webブラウザで利用することができます。実際にコードを書き、動作を確認するための機能を使用することができます。Hyperledger Composer PlaygroundにはIBMが提供するオンライン版がありますが、Apache License 2.0のライセンスで提供されていますので、自分でサーバーを用意して導入することができます。
環境準備
サーバー
Ubuntu 16.04 Serverをインストールした仮想マシンを用意します。CPUは1コア、メモリは少なくとも2GB程度は必要です。仮想マシンはお使いのPC上で用意するか、クラウド上で用意します。Raspberry Piを使用するのは難しいです。
ここではサーバーのIPアドレスは、192.168.56.20 とします。クラウド上に用意した場合は、クラウド上の仮想マシンのIPアドレスに読み替えてください。
ソフトウェアの導入
Hyperledger Composerの導入
Hyperledger Composerのチュートリアルと途中まで同じです。具体的には「composer-playground」をインストールするところまでです。
作業には、rootユーザーは使用しません。サーバーに「user」というユーザーを作成済みの状態とします。作業される際には、各自でお使いのユーザー名に読み替えます。
DockerやNode.jsなど必要なソフトウェアを導入し、再起動します。
$ cd /home/user
$ curl -O https://hyperledger.github.io/composer/latest/prereqs-ubuntu.sh
$ chmod u+x prereqs-ubuntu.sh
$ ./prereqs-ubuntu.sh
$ sudo reboot
再起動後、Hyperledger Composerの実行に必要なツールをインストールします。下記のコマンドは、2019年2月現在のものです。
$ npm install -g composer-cli@0.20
$ npm install -g composer-rest-server@0.20
$ npm install -g generator-hyperledger-composer@0.20
$ npm install -g yo
$ npm install -g composer-playground@0.20
Hurleyの導入
次は、Hurleyを導入します。下記のコマンド1行だけです。
$ npm i -g @worldsibu/hurley
Hyperledger Fabric環境の起動
HurleyによるHyperledger Fabric環境を起動します。
$ hurl new
$ docker ps -a
これだけです。Hyperledger FabricのDockerイメージがダウンロードされ、起動していきます。「/home/Ubuntuのユーザー名/hyperledger-fabric-network/」に、Hurley向けのファイルやディレクトリが格納されています。Hyperledger Fabricの管理者用証明書や秘密鍵が含まれます。
ここで、userというユーザーを使用しておりますので、「/home/user/hyperledger-fabric-network/」となります。
ビジネスネットワークカード
ビジネスネットワークカードは、ブロックチェーンに接続するための入館証のようなものです。サーバールームやデータセンターに入るときは専用の入館証が必要ですから、それをイメージしていただれば幸いです。ビジネスネットワークカードには、管理者用証明書と秘密鍵が含まれます。
管理者用証明書を確認
パス、つまり場所を探します。管理者用証明書とは、Hyperledger Fabric環境のもので、秘密鍵とセットで用いて、ビジネスネットワークカードを作成します。
Hurleyにより、2つのHyperledger Fabricの組織が起動しています。
「org1.hurley.lab」と「org2.hurley.lab」です。
org1.hurley.labの管理者用証明書を確認します。
$ cd /home/user/hyperledger-fabric-network/artifacts/crypto-config/peerOrganizations/org1.hurley.lab/users/Admin@org1.hurley.lab/msp/signcerts
$ ls
org2.hurley.labの管理者用証明書を確認します。
$ cd /home/user/hyperledger-fabric-network/artifacts/crypto-config/peerOrganizations/org2.hurley.lab/users/Admin@org2.hurley.lab/msp/signcerts
$ ls
管理者用証明書の複製
確認できた管理者用証明書を、/home/user/hyperledger-fabric-network ディレクトリに複製します。
$ cp /home/user/hyperledger-fabric-network/artifacts/crypto-config/peerOrganizations/org1.hurley.lab/users/Admin@org1.hurley.lab/msp/signcerts/Admin@org1.hurley.lab-cert.pem /home/user/hyperledger-fabric-network/
$ cp /home/user/hyperledger-fabric-network/artifacts/crypto-config/peerOrganizations/org2.hurley.lab/users/Admin@org2.hurley.lab/msp/signcerts/Admin@org2.hurley.lab-cert.pem /home/user/hyperledger-fabric-network/
秘密鍵を確認
パス、つまり場所を探します。
org1.hurley.labの秘密鍵を確認します。
$ cd /home/user/hyperledger-fabric-network/artifacts/crypto-config/peerOrganizations/org1.hurley.lab/users/Admin@org1.hurley.lab/msp/keystore
$ ls
org2.hurley.labの秘密鍵を確認します。
$ cd /home/user/hyperledger-fabric-network/artifacts/crypto-config/peerOrganizations/org2.hurley.lab/users/Admin@org2.hurley.lab/msp/keystore
$ ls
秘密鍵の複製
確認できた秘密鍵を、/home/user/hyperledger-fabric-network ディレクトリに複製します。秘密鍵のファイル名はそれぞれ異なります。実際のファイル名を確認し、読み替えてください。
### org1.hurley.labの秘密鍵を複製
$ cp /home/user/hyperledger-fabric-network/artifacts/crypto-config/peerOrganizations/org1.hurley.lab/users/Admin@org1.hurley.lab/msp/keystore/xxxxxx_sk /home/user/hyperledger-fabric-network/
### org2.hurley.labの秘密鍵を複製
$ cp /home/user/hyperledger-fabric-network/artifacts/crypto-config/peerOrganizations/org2.hurley.lab/users/Admin@org2.hurley.lab/msp/keystore/yyyyyyy_sk /home/user/hyperledger-fabric-network/
接続用プロファイルの作成
ビジネスネットワークを作成するために必要な「接続プロファイル」を作成します。
$ vi /home/user/hyperledger-fabric-network/connection.json
viエディタが起動します。以下の内容を記述します。Hyperledger Fabricの起動状況に合わせて記述内容が異なりますのでご注意ください。
{
"name": "fabric-network",
"x-type": "hlfv1",
"version": "1.0.0",
"peers": {
"peer0.org1.hurley.lab": {
"url": "grpc://localhost:7051"
},
"peer0.org2.hurley.lab": {
"url": "grpc://localhost:7053"
}
},
"certificateAuthorities": {
"ca.org1.hurley.lab": {
"url": "http://localhost:7054",
"caName": "ca.org1.hurley.lab"
},
"ca.org2.hurley.lab": {
"url": "http://localhost:7054",
"caName": "ca.org2.hurley.lab"
}
},
"orderers": {
"orderer.hurley.lab": {
"url": "grpc://localhost:7050"
}
},
"organizations": {
"Org1": {
"mspid": "Org1MSP",
"peers": [
"peer0.org1.hurley.lab"
],
"certificateAuthorities": [
"ca.org1.hurley.lab"
]
},
"Org2": {
"mspid": "Org2MSP",
"peers": [
"peer0.org2.hurley.lab"
],
"certificateAuthorities": [
"ca.org2.hurley.lab"
]
}
},
"channels": {
"composerchannel": {
"orderers": [
"orderer.hurley.lab"
],
"peers": {
"peer0.org1.hurley.lab": {
"endorsingPeer": true,
"chaincodeQuery": true,
"eventSource": true
},
"peer0.org2.hurley.lab": {
"endorsingPeer": true,
"chaincodeQuery": true,
"eventSource": true
}
}
}
},
"client": {
"organization": "Org1",
"connection": {
"timeout": {
"peer": {
"endorser": "300",
"eventHub": "300",
"eventReg": "300"
},
"orderer": "300"
}
}
}
}
ビジネスネットワークカードの作成
管理者用証明書と秘密鍵を複製し、接続用プロファイルを作成した後、ビジネスネットワークカードを作成します。次のコマンドを実行します。
$ cd /home/user/hyperledger-fabric-network/
$ composer card create -p connection.json -u PeerAdmin -c Admin@org1.hurley.lab-cert.pem -k xxxxx_sk -r PeerAdmin -r ChannelAdmin PeerAdmin@org1.card
Successfully created business network card file to
Output file: PeerAdmin@fabric-network.card
Command succeeded
$ composer card create -p connection.json -u PeerAdmin -c Admin@org2.hurley.lab-cert.pem -k yyyyy_sk -r PeerAdmin -r ChannelAdmin PeerAdmin@org2.card
Successfully created business network card file to
Output file: PeerAdmin@fabric-network.card
Command succeeded
$ composer card import -f PeerAdmin@fabric-network.card
Hyperledger Compsoer Playgroundの起動と動作確認
HurleyによりHyperledger Fabricの環境が起動しており、ビジネスネットワークカードが作成できましたの、hyperledger Composer Playgroundを起動します。
$ cd /home/user/hyperledger-fabric-network/
$ mkdir logs
$ nohup composer-playground >/home/user/hyperledger-fabric-network/logs/playground.stdout 2>/home/user/hyperledger-fabric-network/logs/playground.stderr & disown
これで、Google Chromeのシークレットウィンドウを開き、http://192.168.56.20:8080 にアクセスすれば、Hyperledger Composer Playgroundの画面が表示されます。
「Let's Blockchain!」をクリックして、ブロックチェーンアプリケーションを作ってみましょう。ここでは、先日開催したハンズオンの資料を用いて、動作確認を実施しました。
ブロックチェーンハンズオン 2019/01/26
まとめ
Hurleyを使うと、わずか一行のコマンドで、Hyperledger Fabricの環境を起動できることがわかりました。また、Hyperledger Composerのチュートリアルでは「fabric-dev-servers」として、ビジネスネットワークカードを簡単に作成できる環境が用意されていましたが、これでビジネスネットワークカードを作成する仕組みを理解することができました。