オープンソースのブロックチェーン環境である Hyperledger Fabric と、その開発ツールである Composer の環境を手元のマシンに導入する手順を紹介します。基本手順は以前に IDCF テックブログに寄稿させていただいた内容と同じですが、各モジュールのバージョンや導入直後のカード作成の部分が異なっているので、補足する形で紹介します。
前提条件
まず、以下の説明では前提プラットフォームとして Ubuntu 16.04 を使います。ここに Docker, Docker-Compose, Node.js V6.x を導入してから Hyperledger Fabric をインストールしていくのですが、この3つ(Docker, Docker-Compose, Node.js V6.x)が導入されていれば macOS でも可能です(macOS でのこれら3つの導入手順は省略させてください、普通にググれば見つかると思うので・・・)。以下はこれら3つが導入されている前提で、それ以降の手順を紹介します(Ubuntu でも macOS でも手順は同じです)。
というわけで、この時点では以下の3つのモジュールが導入されているものとします(バージョンは 2018/02 時点で手順に沿って実施した場合に入るバージョンでした):
- Docker 17.12.0-ce
- Docker-Compose 1.12.0
- Node.js v6.12.3
ここまでの導入手順については、こちらを参照ください:
Hyperledger Fabric でブロックチェーン環境を構築
Hyperledger Composer コマンドラインインターフェース
前提環境を整える時に導入されている npm コマンドを使って、Hyperledger Composer のコマンドラインインターフェース(composer-cli)をインストールします:
(↓2018/03/27 追記)
以下の PeerAdmin@hlfv1 カードを作成する際の仕様が変わったため、ここでは composer-cli のバージョン v0.16.3 を指定してインストールする必要があります。したがって以下のコマンドを実行してください:
導入に成功すると composer コマンドが使えるようになります。2018/02 時点でのバージョンは 0.16.3 でした:
Hyperledger Fabric 開発環境サポートツール
「サポートツール」と呼ばれるファイル群を使って、開発環境として使える Hyperledger Fabric を導入します。一般的にブロックチェーンでは「分散台帳」と呼ばれる方式でデータを複数のノードに分散して共有する仕組みを取りますが、開発環境では1ノードのみ使います。
まず、この時点で docker サービスが有効になっている必要があります。docker サービスが停止している場合は、このタイミングで起動しておきます:
改めてサポートツールを使って Hyperledger Fabric 環境を導入します。以下の例では ~/fabric というフォルダを作って、その下にサポートツールを導入しています:
「サポートツールの導入」といっても実質「zip ファイルの展開」です。展開ファイルを確認します:
2018/02 版では以前に紹介した時よりもファイルが増えています。これは Hyperledger Composer の仕様変更に伴うもので、以前にはなかった createPeerAdminCard.sh などは環境準備後に使うことになります。
では展開したサポートツールを使って Hyperledger Fabric 環境を構築します。といってもコマンドはこれひとつです:
このコマンドの中で必要とされる docker イメージのダウンロード等が行われ、Hyperledger Fabric 環境がローカルマシン内に構築されます。
コマンドが終了したら、いったんこの時点で docker コンテナのプロセスを確認します。他の用途で docker を使っていたりしない限り、この時点では docker コンテナのプロセスは1つも動いていないはずです:
Hyperledger Fabric 環境の起動
ではローカルマシンに導入した Hyperledger Fabric 環境を起動します。これもコマンド1つです:
このコマンドが完了すると Hyperledger Fabric が起動したことになります。改めて docker コンテナのプロセスを確認すると、先程まで空だったコンテナプロセスがいくつか動いていることが確認できるはずです:
なお、起動中の Hyperledger Fabric を停止する場合は ./stopFabric.sh を実行します(以下の作業を続けるのであれば、しなくてもいいです):
カードファイルの作成
ここからは以前の情報にはなかった、新しい仕様に関わる新しい箇所です。2018/02 時点では Hyperledger Fabric に接続する際に「カードファイル」と呼ばれる仕組みを使ってアクセスを行う必要があります(以前は「プロファイル」と呼ばれる仕組みを使った方法が用いられていました)。
作成&起動した Hyperledger Fabric 環境についてもカードファイルを使わないとアクセスしたり、操作することができません。まずはローカル環境(hlfv1)のデフォルト管理者となる PeerAdmin 用のカードファイルを作成します。サポートツールに含まれる以下のスクリプトを実行します:
色々動いて、最後に "Command succeeded" と表示されれば成功で、/tmp/PeerAdmin@hlfv1.card というファイルが作られているので、このファイルを手元に(例えばホームディレクトリに)保存しておきます:
同時に、この時点で PeerAdmin@hlfv1 カードは有効に登録されています。登録済みのカードを一覧表示するには以下のコマンドを実行します:
↑PeerAdmin@hlfv1 が確認できました。
・・・というわけで、2018/02 時点での仕様に合わせた Hyperledger Fabric & Composer 環境の構築手順と、カードファイルの準備手順までを紹介しました。ここまでできていると、composer コマンドとカードファイルを使ってビジネスネットワークを定義したり、起動したり、、、といったことができるようになります。そのための準備作業という意味合いでの紹介でした。
前提条件
まず、以下の説明では前提プラットフォームとして Ubuntu 16.04 を使います。ここに Docker, Docker-Compose, Node.js V6.x を導入してから Hyperledger Fabric をインストールしていくのですが、この3つ(Docker, Docker-Compose, Node.js V6.x)が導入されていれば macOS でも可能です(macOS でのこれら3つの導入手順は省略させてください、普通にググれば見つかると思うので・・・)。以下はこれら3つが導入されている前提で、それ以降の手順を紹介します(Ubuntu でも macOS でも手順は同じです)。
というわけで、この時点では以下の3つのモジュールが導入されているものとします(バージョンは 2018/02 時点で手順に沿って実施した場合に入るバージョンでした):
- Docker 17.12.0-ce
- Docker-Compose 1.12.0
- Node.js v6.12.3
ここまでの導入手順については、こちらを参照ください:
Hyperledger Fabric でブロックチェーン環境を構築
Hyperledger Composer コマンドラインインターフェース
前提環境を整える時に導入されている npm コマンドを使って、Hyperledger Composer のコマンドラインインターフェース(composer-cli)をインストールします:
$sudo npm install -g composer-cli
(↓2018/03/27 追記)
以下の PeerAdmin@hlfv1 カードを作成する際の仕様が変わったため、ここでは composer-cli のバージョン v0.16.3 を指定してインストールする必要があります。したがって以下のコマンドを実行してください:
$ sudo npm install -g composer-cli@0.16.3
(↑2018/03/27 追記)導入に成功すると composer コマンドが使えるようになります。2018/02 時点でのバージョンは 0.16.3 でした:
$ composer v0.16.3
Hyperledger Fabric 開発環境サポートツール
「サポートツール」と呼ばれるファイル群を使って、開発環境として使える Hyperledger Fabric を導入します。一般的にブロックチェーンでは「分散台帳」と呼ばれる方式でデータを複数のノードに分散して共有する仕組みを取りますが、開発環境では1ノードのみ使います。
まず、この時点で docker サービスが有効になっている必要があります。docker サービスが停止している場合は、このタイミングで起動しておきます:
$ sudo service docker start
改めてサポートツールを使って Hyperledger Fabric 環境を導入します。以下の例では ~/fabric というフォルダを作って、その下にサポートツールを導入しています:
$ cd $ mkdir fabric (ホームディレクトリ配下の ~/fabric/ にサポートツールを導入する場合) $ cd fabric $ curl -O https://raw.githubusercontent.com/hyperledger/composer-tools/master/packages/fabric-dev-servers/fabric-dev-servers.zip $ unzip fabric-dev-servers.zip
「サポートツールの導入」といっても実質「zip ファイルの展開」です。展開ファイルを確認します:
$ ls _loader.sh downloadFabric.sh startFabric.sh composer-logs fabric-dev-servers.zip stopFabric.sh createComposerProfile.sh fabric-scripts teardownAllDocker.sh createPeerAdminCard.sh package.json teardownFabric.sh
2018/02 版では以前に紹介した時よりもファイルが増えています。これは Hyperledger Composer の仕様変更に伴うもので、以前にはなかった createPeerAdminCard.sh などは環境準備後に使うことになります。
では展開したサポートツールを使って Hyperledger Fabric 環境を構築します。といってもコマンドはこれひとつです:
$ ./downloadFabric.sh
このコマンドの中で必要とされる docker イメージのダウンロード等が行われ、Hyperledger Fabric 環境がローカルマシン内に構築されます。
コマンドが終了したら、いったんこの時点で docker コンテナのプロセスを確認します。他の用途で docker を使っていたりしない限り、この時点では docker コンテナのプロセスは1つも動いていないはずです:
$ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
Hyperledger Fabric 環境の起動
ではローカルマシンに導入した Hyperledger Fabric 環境を起動します。これもコマンド1つです:
$ ./startFabric.sh
このコマンドが完了すると Hyperledger Fabric が起動したことになります。改めて docker コンテナのプロセスを確認すると、先程まで空だったコンテナプロセスがいくつか動いていることが確認できるはずです:
$ docker ps CONTAINER ID IMAGE COMMAND 6eb73fa9bc26 dev-peer0.org.... "chaincode -peer.a..." 3ce2ff860034 hyperledger/f.... "peer node start -..." e99420efba7f hyperledger/f.... "orderer" 0dc1e0deaa92 hyperledger/f.... "sh -c 'fabric-ca-..." c6bc1fe8a3f8 hyperledger/f.... "tini -- /docker-e..."
なお、起動中の Hyperledger Fabric を停止する場合は ./stopFabric.sh を実行します(以下の作業を続けるのであれば、しなくてもいいです):
$ ./stopFabric.sh
カードファイルの作成
ここからは以前の情報にはなかった、新しい仕様に関わる新しい箇所です。2018/02 時点では Hyperledger Fabric に接続する際に「カードファイル」と呼ばれる仕組みを使ってアクセスを行う必要があります(以前は「プロファイル」と呼ばれる仕組みを使った方法が用いられていました)。
作成&起動した Hyperledger Fabric 環境についてもカードファイルを使わないとアクセスしたり、操作することができません。まずはローカル環境(hlfv1)のデフォルト管理者となる PeerAdmin 用のカードファイルを作成します。サポートツールに含まれる以下のスクリプトを実行します:
$ ./createPeerAdminCard.sh
色々動いて、最後に "Command succeeded" と表示されれば成功で、/tmp/PeerAdmin@hlfv1.card というファイルが作られているので、このファイルを手元に(例えばホームディレクトリに)保存しておきます:
$ cp /tmp/PeerAdmin@hlfv1.card .
同時に、この時点で PeerAdmin@hlfv1 カードは有効に登録されています。登録済みのカードを一覧表示するには以下のコマンドを実行します:
$ composer card list The following Business Network Cards are available: Connection Profile: hlfv1 +--------------------+-----------+------------------+ | Card Name | UserId | Business Network | +--------------------+-----------+------------------+ | PeerAdmin@hlfv1 | PeerAdmin | | +--------------------+-----------+------------------+ Issue composer card list --nameto get details a specific card Command succeeded
↑PeerAdmin@hlfv1 が確認できました。
・・・というわけで、2018/02 時点での仕様に合わせた Hyperledger Fabric & Composer 環境の構築手順と、カードファイルの準備手順までを紹介しました。ここまでできていると、composer コマンドとカードファイルを使ってビジネスネットワークを定義したり、起動したり、、、といったことができるようになります。そのための準備作業という意味合いでの紹介でした。
コメント