投稿者:ソリューション担当



こんにちは。昨今のITキーワードとしてビットコインにはじまり、ブロックチェーンという単語を目にする機会が増えました。ブロックチェーンの技術はさまざまな種類が開発されておりLinuxOSの普及を促進している団体のLinux Foundationのプロジェクトに登録されているものもあります。このように日々変化していくIT技術でありますが、弊社では次世代技術への取り組みとしてブロックチェーンを利用し、地域振興券の発行から利用までの一連の流れを管理する「金融資産(地域振興券)管理システム」のプロトタイプの開発をしました。
前回のブログ(「話題のブロックチェーンを試してみた-インフラ編」)でインフラ観点での説明をさせていただきましたので、今回はアプリケーションの観点でご紹介致します。

システム概要


今回作成した「金融資産(地域振興券)管理システム」は地域振興券(以降、チケットと表記)の発行から利用までの一連の流れを下記のように定義し、ブロックチェーン技術でシステム化しました。

① データの初期化
② チケット販売登録(チケットに購入者を登録)
③ チケットの購入・残高取得(チケットの残高確認)
④ チケット利用登録(販売した商品登録)
⑤ チケット利用状況取得(チケット利用内容確認)

bc06.png

上記、処理要求を元に作成した画面は以下のようになります。
WEBフロント/APサーバとしてNode-jsを使い、そのプログラムからAPサーバを経由して、作成したChaincodeのAPIを呼び出しています。
利用ユーザのセキュリティを考慮して、ログインユーザ毎に権限を分けて利用可能な画面も制御しています。

bc07.png

ブロックチェーン技術を利用しての開発


実際にどのように開発したかをご紹介させていただきます。
開発はHyperledger Fabric v0.6のプロトタイプ環境上で行いました。Hyperledger Fabric v0.6では、 Go言語または Java言語でChaincodeを作成し、作成したプログラムをDocker コンテナー内で実行することが可能です。
作成当時、Java向けのChaincodeのサポートがまだベータ版だった為、今回は Go言語を利用してChaincodeの開発を行っています。
※Chaincodeは、トランザクションの一部として台帳に保存されるアプリケーション・レベルのコード(別名:スマートコントラクト)のことを指します。
※Go言語とはプログラミング言語のひとつ。Googleによって開発された言語

Chaincode開発


任意の項目をブロックチェーンに登録する為には、Fabricが提供するChaincodeを利用して、本システム用の独自Chaincodeを作成する必要があります。作成するChaincodeは、Go言語を利用し、Init、Query、Invoke という3つのメソッドに分けて、それぞれ必要な処理を作成していきます。
3つのメソッドの使い分けについては以下の通りです。
■Initメソッド
初期化する際に呼び出すメソッド。
■Queryメソッド
ブロックチェーンに登録したデータを取得する際に呼び出すメソッド。
■Invoke メソッド
ブロックチェーンのデータを変更する際に呼び出すメソッド。
データの作成・更新・削除処理で利用します。

処理要求とメソッド


処理要求に応じて区分けしたメソッドの概要は下表の通り。

処理要求メソッドサブメソッド
① データの初期化InitInit
② チケット販売登録(チケットに購入者を登録)InvokebuyTicket
③ チケットの購入・残高取得(チケットの残高確認)QuerygetTicket
④ チケット利用登録(販売した商品登録)InvokeuseTicket
⑤ チケット利用状況取得(チケット利用内容確認)QuerygetuseTicket
処理要求のタイミングで作成したメソッドを呼び出し、FabricのChaincodeを介して、Key-Value Store(KVS)やブロックチェーンにデータの登録や取得を行います。

bc08.png

データ登録時のブロックチェーンの動き


入力したデータがどのような動きでブロックチェーンに登録されていくかをご説明させていただきます。
まず、APサーバ上の画面からAPIでChaincodeを呼び出します。呼出すとNon-validating peerが処理を受け付け、各validating peerに受け付けたトランザクションデータを転送します。各validating peerはNon-validating peerから転送されたトランザクションが改ざんされていないかそれぞれが確認します。

bc09.png

トランザクションデータが改ざんされていないことを確認後、他validating peerへ結果連絡を行ったのち、データ登録を行います。

bc10.png

データ登録が行われると、KVSとブロックチェーンにデータが格納されます。
正常に格納が完了すると、APサーバ側にリクエストを返却し、登録された旨を画面上に表示されます。

おわりに


今回は「金融資産(地域振興券)管理システム」の開発をブロックチェーンの技術を用いて作成を行いましたが、ブロックチェーンの技術は金融系に限らず、選挙や証跡管理等、色々な分野で利用できると思います。
利用ユーザからすると見た目は、他のシステムと変わらなくブロックチェーンの技術を伝えるのは難しいですが、インフラ編でご説明させていただいた通り、分散台帳やセキュリティの観点等、目に見えない部分で革新的な技術が用いられております。
今回は導入から開発までを行いましたが、Bluemixにもブロックチェーンサービスが存在しており、そこで手軽にブロックチェーンのネットワークを構築することができます。ブロックチェーンのアイデアを試す場としてお使いいただければと思います。
以上でアプリケーション編は終了となります。

この記事を見てブロックチェーンに興味が湧いた方や検証を実施したいお客様がおられましたら是非弊社までお気軽にご連絡いただけますと幸いです。