2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Hurleyを用いて独自のHyperledger Composer Playgroundを立ち上げる。

Last updated at Posted at 2019-02-09

後日、自分のブログで公開するかもしれませんが、現時点のまとめです。Hurleyについて調査中のため、誤解している可能性もありますが、Hyperledger Compsoer Playgroundを立ち上げ、ブロックチェーンアプリケーションのコードを書き、トランザクションを確認するところまでは確認できました。

Hurley

おそらく「ハーレイ」と読むと思います。Apache License 2.0のライセンスでWorldSibu社から提供されている「Hyperledger Fabricを用いた開発環境をさくっと作ってくれるツール」です。Node.jsを使用してセットアップします。

今回やること

Hurleyを用いて、Hyperledger Fabricの環境を構築し、Hyperledger Composerから接続、Hyperledger Composer Playgroundを起動してみましょう。
2019-02-09 01_18_05-Huerley_Composer_Playground実行結果.png

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の組織が起動しています。
2019-02-09 01_44_52-Hyperledger_Fabric_起動.png
「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

<作成されたビジネスネットワークカード>
2019-02-09 01_18_05-Huerley_Composer_Card_list実行結果.png

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の画面が表示されます。
2019-02-09 01_18_05-Huerley_Composer_Playground実行結果.png

「Let's Blockchain!」をクリックして、ブロックチェーンアプリケーションを作ってみましょう。ここでは、先日開催したハンズオンの資料を用いて、動作確認を実施しました。
ブロックチェーンハンズオン 2019/01/26

<トランザクションが処理されているか確認した様子>
2019-02-09 01_18_05-Huerley_Composer_Playground_Transaction実行結果.png

まとめ

Hurleyを使うと、わずか一行のコマンドで、Hyperledger Fabricの環境を起動できることがわかりました。また、Hyperledger Composerのチュートリアルでは「fabric-dev-servers」として、ビジネスネットワークカードを簡単に作成できる環境が用意されていましたが、これでビジネスネットワークカードを作成する仕組みを理解することができました。

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?