VS CodeとHyperledger Fabricでブロックチェーンテクノロジを使用したグローバルファイナンスアプリケーションを作る

Taiji
12 min readJun 26, 2019

--

Hyperledger Fabricとは

HyperledgerのProjectの一つで、オープンソースのプライベート型/コンソーシアム型ブロックチェーンプラットフォームです。EthereumやBitcoinなどのパブリック型ブロックチェーンと異なり、ブロックチェーンネットワークに参加出来るメンバーを限定したブロックチェーンテクノロジーになります。

また、スマートコントラクトというビジネスロジックを個別に実装できるので、様々なシナリオでの活用が可能です。認証局を立て、参加者を認証ベースでグループ分けしながらブロックチェーンネットワークを構築できるので、金融領域だけでなく、産業、食品流通、保険など、色々な場面で活用されています。

IBM Code Patternsから

今回はこのPatternを実際に試してみましょう。流れとしては以下の通りです。

  1. GitHubからリポジトリをClone
  2. VS CodeのExtensionを使いFabric ネットワーク上にスマート・コントラクトをセットアップ
  3. 認証の設定
  4. アプリケーションの実行

必要な環境、モノ

IBM Cloudアカウントの作成

IBM CloudにはIBM(IBM Blockchain Platform)というHyperledger Fabricでのネットワークをクラウド上へ構築するツール・環境が用意されています。IBMはコンテナ及びKubernetes上で動作します。

今回はローカルのDocker環境で試しますが、クラウド上のコンテナ環境を使う事も想定し、IBM Cloudのアカウントを作成しましょう。初めて作成する場合は前述の通りライトアカウントになります。このままだとKubernetesが使えないのでPAYGアカウントへアップグレードしてください。すでにライトアカウントをお使いの方も同様にPAYGアカウントへアップグレードしてください。

PAYGアカウントは、いわゆる標準アカウントで有償のサービスも利用可能ですが、料金プランで無料のもののみを選んで使うこともできますので非常に便利です。もちろん無料のサービスのみを使っている分には一切課金されないのでご安心下さい。

アカウント登録はこちらから。
https://ibm.biz/Bdzce8

上部メニューからManage (管理) を選択します。

Account settingからAdd credit cardを選択するとPAYGアカウントへアップグレードできます。

アプリケーションアーキテクチャ概要図

こちらのPatternについては下記のリポジトリのREADMEを見れば良いのですが、CAのIdentityを作成しそのIdentity情報と鍵ファイルをローカル環境へコピーする手順が抜けています。本ブログでは、そこの手順も補完してますのでこちらに沿ってやって頂ければ問題無く動かすことができます。

※現在、本ブログで補完している内容でRepoオーナーにプルリクを送っている所です。Merge完了しましたら、GitHubの方を見ていただいてもよろしいかと思います。

2019/06/26 追記:
プルリクを送っていた内容がマージされました。これでオリジナルのGitHub RepoのREADMEを見ていただいてもここでの内容と同じ手順を確認できるようになりました。

1.リポジトリのクローン

任意のフォルダにリポジトリをCloneします:

git clone https://github.com/IBM/global-financing-blockchain.git

2.VS Code extension を使用して、基本的なFabricネットワークにスマートコントラクトを設定する

Visual Studio Code を開き contract フォルダを開きます。

#スマートコントラクトをパッケージ化する

VS Codeの他のオプションを見るために F1 キーを押してください。 その中から IBM Blockchain Platform: Package a Smart Contract Project を選択します。

左側の IBM Blockchain Platform 拡張ボタンをクリックしてください。 これにより、パッケージ化されたコントラクトが一番上に表示され、ブロックチェーン接続が一番下に表示されます。

#ローカルでファブリックを設定する

LOCAL FABRIC OPS のメニューをクリックし Start Fabric Runtime を選択してネットワークを起動します。 これにより、ローカルのFabric設定に必要なDockerイメージがダウンロードされ、ネットワークが起動します。 ネットワークが設定されると、出力ウィンドウが表示されます。

これで LOCAL FABRIC OPS の下に、スマートコントラクトをインストールしてインスタンス化するためのオプション、あなたの Channels の情報、 Nodes の下のピア、そして Organizations の下の organization msp が表示されます。 ※MSP(メンバーシップ・サービス・プロバイダ)については こちら をご覧ください。

#スマートコントラクトをインストールしてインスタンス化する

LOCAL FABRIC OPS コンソールの Installed ドロップダウンの下にある +Install をクリックしてください。

こちらのピアを選択します: peer0.org1.example.com.

globalfinancing@0.0.1 コントラクトを選択します:

スマートコントラクトのインストールが成功したことの通知と LOCAL FABRIC OPS コンソールの Installed の下にリストされているスマートコントラクトが表示されます。

これでスマートコントラクトをインスタンス化する準備が整いました。 LOCAL FABRIC OPS コンソールの Instantiated ドロップダウンの下の +Instantiate をクリックしてください。

こちらのチャネルを選択します: my channel.

globalfinancing@0.0.1 コントラクトを選択します:

関数に instantiate と入力します:

オプションの引数については Enter を押すことができます。

これがうまくインスタンス化されると、アウトプットビューに成功した通知とあなたの LOCAL FABRIC OPS コンソールの Instantiated の下にリストされたスマートコントラクトが見えるはずです。

#CAノードにIdentityを追加する

GitHubからCloneしたソースコードの中にIdentityの情報や認証に使用する鍵ファイルも含まれていますが、ご自身の環境に合わせ書き換える(置き換える)必要があります。先ずは、CAノードにIdentityを追加します。 LOCAL FABRIC OPS コンソールの Nodes ドロップダウンの下の ca.org1.example.com を右クリックして Create Identity を選択してください。表示された入力ボックスに User1@org1.example.com を入力しEnterを押します。

すると FABRIC WALLETS コンソールの local_fabric_wallet の配下に User1@org1.example.com が追加されたのが確認できます。

#Walletをエクスポートする

追加したIdentityの情報をアプリケーションが認証に使えるようにするため、VS CodeのExtensionからWalletをエクスポートします。エクスポート先は任意の場所で結構です。ここではデスクトップに一旦保存しています。

アプリケーションが認証処理で参照するディレクトリに、エクスポートしたファイルをコピーします。対象のディレクトリは以下になります。 GitHubからCloneしたファイルが既に存在していますので、それらは削除して下さい。

/global-financing-blockchain/web-app/controller/restapi/features/fabric/_idwallet/User1@org1.example.com

これで、アプリケーションからブロックチェーンネットワークへの認証が可能になりました。

3.アプリケーションの実行

新しいターミナルで web-app ディレクトリへ移動します:

cd global-financing-blockchain/web-app/

Build the node dependencies:

npm install

Run the application:

npm start

後は、localhostのインスタンスが起動したらWebブラウザからアクセスします。

アプリケーションが起動したらまずはじめにAdmin → Preload Networkを選択します。そうするとバックグラウンドで必要なネットワークをロードします。この状況はnpm startしたコンソールで確認できます。

次に、Roles→load Unified User Experienceを選択します。

各ピアのセクションが表示されるので、Create New OrderやDisplay Order Statusのボタンを押してみて、実際にトランザクションが実行されることを確認します。

今回は、このように簡単にブロックチェーンアプリケーションが作成できることを体験してみました。IBM Cloud上でIBP(IBM Blockchain Platform)を使用すれば、さらに簡単にクラウド上のコンテナ環境上へ同様のブロックチェーンネットワークを構築することが可能です。ぜひ試してみてくださいね。

――――――――――――――――――――――――――――――――――――――

Information

IBM Developer Dojo
https://ibm-developer.connpass.com/

IBM Code Patterns
http://developer.ibm.com/jp/

IBM Developer Advocate Profile
https://developer.ibm.com/code/community/advocates/taijih

Cloud Developers Circle
(ベンダー依存しないクラウドデベロッパーのためのコミュニティ)
https://cdevc.connpass.com/

Node-RED ユーザーグループ
https://node-red.connpass.com/

IBM Cloud ユーザーグループ
https://bmxug.connpass.com/

DevRel Meetup in Tokyo
https://devrel.connpass.com/

Free

Distraction-free reading. No ads.

Organize your knowledge with lists and highlights.

Tell your story. Find your audience.

Membership

Read member-only stories

Support writers you read most

Earn money for your writing

Listen to audio narrations

Read offline with the Medium app

--

--

Taiji
Taiji

Written by Taiji

Datadog Senior Developer Advocate | Ex-OutSystems Dev Community Advocate | Ex-IBM Dev Advocate | Microsoft MVP | 筑波大学、名城大学非常勤講師 | 記事は個人の見解であり、所属する組織とは関係ありません。

No responses yet

Write a response