Fintechのキーワードが盛り上がる中、その中でもブロックチェーンがよく取り上げられます。
でもStudyしてみたりしてみても、なんかイマイチイメージがわかないというか・・。ということで実際に自分で構築して動かしてみることにしました。
今は金融機関やあらゆるところで今後どのように利用できるか?という検証などが始まっています。

今回検証しましたのはOpenblockchainというものです。
OSSプロジェクトである、Hyperledger projectの一つでIBMが中心となってOSSを活用して開発された、ブロックチェーン技術がOpenblockchainとなります。

http://www.ossnews.jp/oss_info/Hyperledger_Project

OpenblockchainデモはIBM Bluemixにおいても用意されています。

今回は複数クラウド環境に直接環境を構築し、検証しました。

%e3%82%b9%e3%82%af%e3%83%aa%e3%83%bc%e3%83%b3%e3%82%b7%e3%83%a7%e3%83%83%e3%83%88-2016-09-09-9-14-30

検証サイトは4つとなり、aws2サイト シドニーとダブリン azure 1サイト 東京 LinuxONE Comm.Cluod ポケプシー
となります。この4サイトの中にはIBM LinuxONE( z Systems)、すなわちIBMメインフレームも含まれます。
これらの4サイト上に同一環境を構築した上で、接続・検証を行いました。

こちらの内容に沿って構築をしています。
http://hyperledger-fabric.readthedocs.io/en/latest/

こちらの環境の概要は、動作環境は基本dockerにて提供されています。
今の所、API及び開発言語はgo言語となっていますが、javaへの対応も進んでいるようです。
開発環境などスタンドアローン環境においては、docker1つが1peerとして稼働します。こちらは今の所、4つまで対応しています。
今回はdocker稼働ではなく、直接稼働する環境を構築しました。これをリング状に4サイト接続しています。

実際に稼働させてブロックチェーンの状態を確認しながら、ブロックチェーンの特徴を見ていきたいと思います。
チェインコードの投入や状態確認にはRESTクライアントを使用し、インターフェースはjsonで行います。

早速稼働した、ネットワークが接続できているか確認します。今回はシドニーとポケプシーに2サイトで検証しています。

%e3%82%b9%e3%82%af%e3%83%aa%e3%83%bc%e3%83%b3%e3%82%b7%e3%83%a7%e3%83%83%e3%83%88-2016-09-09-17-33-46上がシドニー、下がポケプシーです。どちらから照会しても同じなります。

最初のチェインコードをデプロイします。こちらはポケプシーサイトからのみ行います。

デプロイします。
%e3%82%b9%e3%82%af%e3%83%aa%e3%83%bc%e3%83%b3%e3%82%b7%e3%83%a7%e3%83%83%e3%83%88-2016-09-09-17-39-15実行結果になります。

%e3%82%b9%e3%82%af%e3%83%aa%e3%83%bc%e3%83%b3%e3%82%b7%e3%83%a7%e3%83%83%e3%83%88-2016-09-09-17-39-24

デプロイした後のhashの状態を確認します。

まずはポケプシー
%e3%82%b9%e3%82%af%e3%83%aa%e3%83%bc%e3%83%b3%e3%82%b7%e3%83%a7%e3%83%83%e3%83%88-2016-09-09-17-43-20
続いてシドニー
%e3%82%b9%e3%82%af%e3%83%aa%e3%83%bc%e3%83%b3%e3%82%b7%e3%83%a7%e3%83%83%e3%83%88-2016-09-09-17-45-18

どちらも同じです。分散台帳として機能していることが確認できます。

続いて更新してみます。
こちらもポケプシー側のみで行います。

%e3%82%b9%e3%82%af%e3%83%aa%e3%83%bc%e3%83%b3%e3%82%b7%e3%83%a7%e3%83%83%e3%83%88-2016-09-09-17-49-35

更新後のhashの状態を確認します。まずはポケプシーから確認します。

%e3%82%b9%e3%82%af%e3%83%aa%e3%83%bc%e3%83%b3%e3%82%b7%e3%83%a7%e3%83%83%e3%83%88-2016-09-09-17-51-05

上記デプロイ時のhashから一つ進んでいることが確認できます。カレントが一つ前に移動し、新しいhashが生成されています。

次はシドニーの状態を確認します。

%e3%82%b9%e3%82%af%e3%83%aa%e3%83%bc%e3%83%b3%e3%82%b7%e3%83%a7%e3%83%83%e3%83%88-2016-09-09-17-53-44

同じことが確認できます。

最後に照会します。まずはポケプシー側から行います。
%e3%82%b9%e3%82%af%e3%83%aa%e3%83%bc%e3%83%b3%e3%82%b7%e3%83%a7%e3%83%83%e3%83%88-2016-09-09-17-57-02

照会結果になります。
%e3%82%b9%e3%82%af%e3%83%aa%e3%83%bc%e3%83%b3%e3%82%b7%e3%83%a7%e3%83%83%e3%83%88-2016-09-09-17-58-10
続いてシドニーでも照会してみます。
%e3%82%b9%e3%82%af%e3%83%aa%e3%83%bc%e3%83%b3%e3%82%b7%e3%83%a7%e3%83%83%e3%83%88-2016-09-09-17-59-48
チェーンのデプロイや更新は全てポケプシー側のみで行っていますが、シドニー側でも同じ結果を得られます。
これは、同一チェーンの内容をポケプシー、シドニー共に保持していることになります。

それではhashを確認してみます。
%e3%82%b9%e3%82%af%e3%83%aa%e3%83%bc%e3%83%b3%e3%82%b7%e3%83%a7%e3%83%83%e3%83%88-2016-09-09-18-03-21更新を行っていないため新たなチェーンは積み上がっていません。

いわゆる改ざん防止についてこの結果からすると、デプロイもしくは更新をすると、チェーンが一つ積み上がりhashが生成されると同時に、一つ前のhashも保持する。仮に改ざんを行おうとした場合、改ざんされた値からhashを生成できたとしても、一つ前のhashとの整合性が保てません。そのためそもそも改ざんが難しいのですが、チェーンhashの状況を他のサイトでも保持しているために改ざんを行うコストがとてつもないことになるために、事実上改ざんができないという仕組みなのが、ブロックチェーンです。
実際にやってみると、非常によくわかります。

今回やってみて特性やら掴んだので、goでアプリ組んで検証してみたいと思います。