building of openblockchain

15
Building of OpenBlockchain 2016/9/9 Hirofumi Nakata Copyright by Hirofumi Nakata 2016

Upload: hirofumi-nakata

Post on 13-Apr-2017

123 views

Category:

Internet


0 download

TRANSCRIPT

Building ofOpenBlockchain

2016/9/9Hirofumi NakataCopyright by Hirofumi Nakata 2016

はじめに

いわゆるバズワードである、Fintech、ブロックチェーンが2016年現在非常に盛り上がりを見せている。ただ、それに反して実装論や具体的なビジネスへの利用への研究はまだこれからであり、今の所大部分は机上やペーパーで習得することなる。

これはIBMが中心となって提供している、ブロックチェーンAPI OpenBlockchainを利用して実際の環境構築を行い、APIを利用した簡単なアプリケーションを用いて、ブロックチェーンの基本的な仕組みを実際の動きから学習していこうというものである。

http://hyperledger-fabric.readthedocs.io/en/latest/

目的

この検証の目的は以下の2つ

1 スタンドアローン環境ではなく実際にサイトを構築する。現在用意されているdocker環境ではなく、ネイティブ環境を構築する。世界4拠点に構築する。異クラウドプロバイダ間を接続する。(IBM zSystems環境にも接続)

自在なコネクテビィティーと、サーバアーキテクチャの異なる接続にも問題ないことを確認。ミニマム環境ながら、この世界4拠点で稼働させた場合のレスポンス。

2 実際のブロックチェーンをオペレーションしながら確認していく。

分散台帳と言われるブロックチェーンを確認。1サイトからの更新が全サイトが同期する。チェインを更新すれば、ハッシュが生成される。参照であれば、ハッシュは生成されない。

構築したサイト

構築したサイト

サイトvp0がIBM zSystems LinuxONE サーバーであり、他サイトのIAサーバーとアーキテクチャが異なる。 どちらもUnicodeを用いており文字コードレベルでの違いはないものの、アーキテクチャの違いとしてビックエンディアン(zSystems) リトルエンディアン(IA)と違いがあるので念のために影響がないのかを確認する。

検証方法

サイトvp0へREST接続を行い、JSONを用いてチェインコードデプロイと更新を実施。サイトvp1へREST接続を行い、JSONを用いてサイトvp0での結果を検証する。

REST クライアント vp0JSON

REST クライアント vp1JSON

検証 接続確認

サイトvp0がIBM zSystemsを用いた、アメリカポケプシーサイト。サイトvp1がaws Sydney サイト。お互いのvpを認識している状態。

検証 チェインコードデプロイ

サイトvp0 ポケプシーから実行。

検証 デプロイ直後のチェーンハッシュ確認

サイトvp0 ポケプシー

サイトvp1 シドニー

Vp0 vp1ともに同じであることが確認できた。ブロックチェーンが分散台帳であることが理解できる。

検証 チェーンデータ更新

サイトvp0 ポケプシーから実行。

検証 チェーンデータ更新後のハッシュ確認サイトvp0 ポケプシー

サイトvp1 シドニー

更新前ハッシュ

更新前currentBlockHashが更新後previousBlockHashに移動。代わりに更新後currentBlockHashに新たなハッシュが生成されたことが確認できる。

検証 チェーンデータ参照

サイトvp0 ポケプシー vp1 シドニーから実行。

サイトvp0 vp1ともに同じ参照結果。このことにより、ビックエンディアン、リトルエンディアンの差異により影響は全くないと確認できた。

検証 チェーンデータ参照結果サイトvp0 ポケプシー

サイトvp1 シドニー

検証 チェーンデータ参照後のチェーン状態確認

参照前

参照後

更新を行わなければ、ハッシュは生成されない。

最後に当初想定した2つの目的については達成した。zSystems ⇄IA Cloudとの稼働検証において全く問題なく稼働したことが確認できた。

4サイト接続において全サイトが完全にチェーンが同期できるのに約1分程度かかることが確認できた。

サイト構築にあたってはdockerでの環境構築が推奨されており、docker外での環境については推奨されていない。IAにおいては、必要となるnode.js golang rocksDBなどはバイナリ入手可能であるが、zSystems版においては、一部ソースからのポーティングが必要となる。(golangについてはクロスコンパイル要)(zSystems向けdemo環境(docker版)では全て構築済み。)

基本的なブロックチェーンについては理解できた。ただ、ブロックチェーン自体はあくまで要素技術の一つにすぎないため、ここから利用方法について深める必要がある。従来の決済システムを完全に代替できるものでもない。