はじめに
PoCが一段落し、さらにブロックチェーンを使って実装の知識を深めるにあたり、Hyperledger ComposerというものがあることをPoCチームメンバに教えてもらいました。
Hyperledger Composerとは何か?についてはこちらに記載がありますので、ご参照ください。
ざっくり言うと、「ブロックチェーンアプリケーションを素早く作成するための開発フレームワーク」です。
おおまかな流れとしては、以下のようなイメージでアプリを作成できるようです。
- Hyperledger Composerを使用して、モデル、スクリプト、アクセス制御、クエリファイルで構成されたビジネスネットワーク定義を作成する。
- 1.のビジネスネットワーク定義をパッケージ化し、アーカイブとしてエクスポートしたものを、Hyperledger Fabricなどに展開する。
上記についてチュートリアルを進めて理解を深めていきます。
環境構築
前提条件として、開発環境を構築しておく必要があります。こちらを参照して、環境構築を行います。
Mac の場合はこちらも参考に構築します。
「Step 1: Installing Hyperledger Composer development tools」まで進めておきます。
最終的に、自分の環境は以下のようになりました。
– Operating Systems: macOS Sierra Version 10.12.6
– Docker Engine: Version 17.0.9.0-ce-mac35(19611)
– Docker-Compose: Version 1.11.2
– Node: v6.9.5
– npm: v3.10.10
– git: 2.11.0
– Python: 3.5.0
– VSCode: 1.18.0(Hyperleger Composerの拡張: 0.15.0)
Hyperledger Fabricの起動
Step 2: Starting Hyperledger Fabricを参考に、先に展開先のHyperledger Fabricを起動しておきます。
・必要なファイルのダウンロードと解凍
1 2 3 4 |
mkdir ~/fabric-tools && cd ~/fabric-tools curl -O https://raw.githubusercontent.com/hyperledger/composer-tools/master/packages/fabric-dev-servers/fabric-dev-servers.zip unzip fabric-dev-servers.zip |
・起動
1 2 3 4 |
cd ~/fabric-tools ./downloadFabric.sh ./startFabric.sh ./createPeerAdminCard.sh |
チュートリアル
チュートリアルはいくつかありますが、今回はDeveloper Tutorial for creating a Hyperledger Composer solutionをやってみます。
ステップ1:ビジネスネットワーク構造の作成
環境構築が完了したら、ステップ1から進めていきます。
Yeomanを使用して、スケルトンのビジネスネットワークを作成します。
以下のコマンドを実行し、対話形式で必要な情報を設定していきます。
1 2 3 4 5 6 7 8 9 |
$ yo hyperledger-composer:businessnetwork Welcome to the business network generator ? Business network name: tutorial-network ← 任意のネットワークビジネス名 ? Description: tutorial ← 説明 ? Author name: nagi ← 著者 ? Author email: hoge@hoge.co.jp ← メールアドレス ? License: Apache-2.0 ← ライセンス ? Namespace: org.acme.biznet ← 名前空間 |
以上でスケルトン完成です。
「tutorial-network」というディレクトリができているので、これをVSCodeで開いておきます。
ステップ2:ビジネスネットワークの定義
・モデルの定義
「models」ディレクトリ下にある「org.acme.biznet.cto」ファイルを開き、以下のように書き換えます。
言語の説明はHyperledger Composer Modeling Languageが参考になります。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
/** * My commodity trading network */ namespace org.acme.biznet asset Commodity identified by tradingSymbol { o String tradingSymbol o String description o String mainExchange o Double quantity --> Trader owner } participant Trader identified by tradeId { o String tradeId o String firstName o String lastName } transaction Trade { --> Commodity commodity --> Trader newOwner } |
・スクリプト追加
続いて、「lib」ディレクトリ下にある「logic.js」ファイルを開き、以下のように書き換えます。
1 2 3 4 5 6 7 8 9 10 11 12 |
/** * Track the trade of a commodity from one trader to another * @param {org.acme.biznet.Trade} trade - the trade to be processed * @transaction */ function tradeCommodity(trade) { trade.commodity.owner = trade.newOwner; return getAssetRegistry('org.acme.mynetwork.Commodity') .then(function (assetRegistry) { return assetRegistry.update(trade.commodity); }); } |
・アクセス制御
「tutorial-network」ディレクトリ下に「permissions.acl」ファイルを作成し、アクセス制御のルールを追加します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
/** * Access control rules for mynetwork */ rule Default { description: "Allow all participants access to all resources" participant: "ANY" operation: ALL resource: "org.acme.biznet.*" action: ALLOW } rule SystemACL { description: "System ACL to permit all access" participant: "ANY" operation: ALL resource: "org.hyperledger.composer.system.**" action: ALLOW } |
ステップ3:アーカイブ作成
ここからはコマンドライン操作に戻ります。
コマンドラインで「tutorial-network」ディレクトリへ移動し、以下のコマンドを実行します。
1 |
$ composer archive create -t dir -n . |
成功すると、同ディレクトリに「tutorial-network@0.0.1.bna」ができあがります。
ステップ4:デプロイ
こちらで起動したHyperledger Fabricにデプロイします。以下のコマンドを順に実行していくだけです。
1. composer runtimeをインストールする。
1 |
$ composer runtime install --card PeerAdmin@hlfv1 --businessNetworkName tutorial-network |
2. ビジネスネットワークを展開する。
1 |
$ composer network start --card PeerAdmin@hlfv1 --networkAdmin admin --networkAdminEnrollSecret adminpw --archiveFile tutorial-network@0.0.1.bna --file networkadmin.card |
3. ネットワーク管理者IDをインポートする。
1 |
$ composer card import --file networkadmin.card |
4. 正常に展開されたか確認する。
1 |
$ composer network ping --card admin@tutorial-network |
ステップ5:RESTサーバ生成
以下のコマンドを実行するだけです。
1 2 3 4 5 6 |
$ composer-rest-server ? Enter the name of the business network card to use: admin@tutorial-network ? Specify if you want namespaces in the generated REST API: always use namespaces ? Specify if you want to enable authentication for the REST API using Passport: No ? Specify if you want to enable event publication over WebSockets: Yes ? Specify if you want to enable TLS security for the REST API: No |
「http://localhost:3000」にブラウザでアクセスしてみると、このような画面が出てきます。
それぞれのAPIにある「Try it out!」ボタンをクリックすると、APIを実行することができます。
Hyperledger Fabricの終了
起動したHyperledger Fabricを終了するには、以下のコマンドを実行します。
1 2 3 |
cd ~/fabric-tools ./stopFabric.sh ./teardownFabric.sh |
まとめ
以上で一通りチュートリアルが完了しました。
思ったよりも簡単にブロックチェーンアプリが作成できました。
ブロックチェーンを使って何か作ってみたいけど敷居が高そう…と敬遠されている方も、Hyperleger Composerなら簡単に作成することができるので一度試してみることをオススメします。
- 【動画&資料】BHIP勉強会「実案件で学ぶ、ブロックチェーン開発の進め方(第1回)」講師:INDETAIL - 2021年2月17日
- 【無料・Zoom開催】実案件で学ぶ、ブロックチェーン開発の進め方(全2回:2月15日、3月15日) - 2021年1月29日
- 【募集】エンジニア向け勉強会「エンタープライズブロックチェーンの今」 2月13日(木)札幌 - 2020年1月7日
本記事に対するコメントはまだありません