[開発] Hyperledger Fabric Starter Kit を Vagrant 使わずに動かす-概念編


1
始まり
巷で話題のHyperledger FabricというもののStarter Kitというものを動かしてみたいが為の奮闘記
本家はVagrant/VirtualBoxを使用する想定の手順だが、Microsoft Azure上でVirtualBoxが使えないのでVagrantを使わずに動かす。もう動けば何だっていい。

2
想定読者
Hyperledgerという言葉聞いたこと有るくせにLinuxのリの字も知らないおさる。

3
概要 ― 超そもそもHyperledger
そもそもHyperledgerに関して。
Hyperledgerプロジェクトにはサブプロジェクトが3つある。
Blockchain Explorer
Hyperledger Fabric (IBMのご出身)
― Sawtooth Lake (Intelのご出身)
ココで焦点当てるのはFabric

4
概要 ― Hyperledger Fabric(超々上辺)
Hyperledger Fabric*はdistributed ledger platform for running smart contractsの1実装である。
Hyperledgerプロジェクト配下の1サブプロジェクトに当たる。
2016年6月にver0.5がリリース。刻一刻と成長中
公式サイトは2つ存在している。連動するGitHubは同一。(入りやすい順)
4.1Incubation Notice
http://hyperledger-fabric.readthedocs.io/
Starter Kitがあるのはこちら。細かい話になると、Hyperledger Fabric Documentationへのリンクになる
4.2Hyperledger Fabric Documentation
http://openblockchain.readthedocs.io/
共同開発する人向けの情報がメインという感じ。
4.3(おまけ) Protocol Specification
https://github.com/hyperledger/fabric/blob/master/docs/protocol-spec.md
どこまで公式なのか謎だけど有用なサイトその③
かなり開発者向け。
ちなみに、コミッタのBaohua Yang (yeasy)がDockerに公開しているfabricイメージは本家の次に人気。
ただ、そのDockerイメージはちょっと前提踏まえている人向けでおサルには少し難しい。

5
概要 ― Hyperledger Fabric(表面辺り)
Hyperledger Fabricの特徴① - メンバーシップサービス
Hyperledger Fabricの特徴② - モジュラー型アーキテクチャ
•Membership Services
Blockchain Services
•Chaincode Services

// * モバイルアプリ開発プラットフォームもfabricだし、コマンドライン 経由で 任意の Python 関数 を実行するツールもfabric。ご注意あれ。検索時はHyperledgerも入れた方が無難。* //

6
概要 ― Hyperledger Fabric (概念辺り)

6.1
FabricってかHyperledgerはpeerによる構成
Peerには2種類、validatingとnon-validating。
Validating peer(検証Peer/検証Node) – a node on the network responsible for running consensus, validating transactions, and maintain the ledger.
Non-validating peer(非検証Peer/非検証Node) – a node that functions as a proxy to connect clients (issuing transactions) to validating peers. It doesn’t execute transactions but it may verify them.
(ref: Christian Cachin, Architecture of the Hyperledger Blockchain Fabric, July 2016)

6.2
サポートするアプリは2種類

6.2.1
Standalone Application
登場人物は3匹。
①Node.js
②Membership Service
③Peer
アプリ母体であるNode.jsとPeerにばら撒くChaincodeというロジックを実際開発し、後は要はフレームワークやね。

6.2.2
Web Application
基本Standalone Applicationと同じ。てか、ラップしただけ。
ブラウザ → Web tier → Database tier の流れになる
6.3開発環境
Hyperledger Fablic Client (HFC) SDK

7
俯瞰図

7.1
Docker界隈
FabricはDocker居てこそのもの。なので、まずDockerの雰囲気から。
(図: http://itpro.nikkeibp.co.jp/atcl/column/14/111400098/111400001/?rt=nocnt#)
Docker親分が居て、ボコボコと仮想環境を制御する。1仮想環境=1コンテナ=1 Docker Image。
(図: https://blog.techstars.jp/nyumon-docker-2346/)
ただ、少し厳密に書くとDocker親玉の上にコンテナが積まれるというか、子プロセスが生成される感じ。
Docker親玉が「docker0」に当たる。
Ref:Docker eLearning Cources, https://training.docker.com/self-paced-training ←公式&&非常に分かり易い

7.2
Fabric界隈
3匹の登場人物の相関図は↓こんな感じ。

fabric_internal_structure.png
(Application Overview, https://github.com/hyperledger/fabric/blob/master/docs/nodeSDK/app-overview.md)
-Application
アプリバックエンドに当たるところ。NVP(非検証)ノードとREST API*で通信する。
-Peer
1コンテナで1peer。
port: デフォで4つ。
7050 - REST service listening port,
7051 - peer service listening port,
7052 - used by CLI for callbacks,
7053 - Event service on validating node
-Membership Services
Portはデフォで1つ。
7054 - Certificate Authority (CA) listening port

//* REST=Representational State Transfer
Software Architectureの1つ。(SOAPは仕様でRestはArchitecture)
だったが、SOAPプロトコルのようなMEP*ベースの特別な抽象化をしないもののことを今は指す。*//
//* MEP = Message Exchange Pattern; SOAPノード相互のメッセージ交換のパターンを確立する為の雛形 *//

7.3
Docker x Hyperledger Fabric (Starter Kitの場合)
Azure_Docker_Fabric.png

OS上にまずDocker親分がいる。Docker親分は3つコンテナを作り並列で立ち上げる。3匹は
Fabricアプリ母体(Node.js)、MemberService(CA)、Peerの3つ。
// * その3つがまた各々でlayer構成になっていくのだが、それはDockerなお話。 * //
エンドユーザがWebを介してアクセスするのはアプリ母体部分。そのアプリ母体が適宜CAとPeerとやり取りする感じ。

tag : Blockchain Hyperledger Fabric Docker Linux

2016-10-25 00:21 : 開発 : コメント : 0 : トラックバック : 0 :
コメントの投稿
非公開コメント

« next  ホーム  prev »

search

ad



counter


tag cloud

category cloud