2. Blockchainのコミュニティについて
2.1. Blockchainコミュニティ
- Linux Foundation Hyperledger:Linux FoundationコミュニティによるBlockchain開発プロジェクト。IBMのOpen BlockchainとDigital Asset HoldingsのHyperledgerをもとに標準化を進めている(2016年の秋頃にメジャーバージョンがリリースされる予定)
- IBM Open Blockchain:IBMが開発したOSSのBlockchainファブリック。Linux FundationのHyperledgerプロジェクトのベースソフトウェアとして採用されている
- R3 Blockchain Consortium:Barclays、Goldman Sachs、J.P. Morgan、その他日本の3大メガバンクなどにより構成される。こちらはEthereumというプラットフォームを使用している
2.1.1. IBMの取り組み
クラウドサービスでは、Blockchain-as-a-Service on Bluemixが、オンプレミスでは、PowerSystemsやz Systems Linux ONE上でのサービスが提供されています。
2.1.2. Microsoftの取り組み
- Blockchain-as-a-Service on Microsoft Azure
- Solidity Integration with Visual Studio
- BlockApps(Powered by ConsenSys)
以降はHyperledgerを主に取り上げたいと思います。
3. Hyperledgerについて
3.1. Hyperledger Fabricのアーキテクチャー
「IBM Blockchain Archtecture & Code offered to Linux Foundation」
元々はIBM Open Blockchainとして開発、Linux FoundationのHyperledgerプロジェクトのベースソフトウェアとして採用され、Digital Asset HoldingsのHyperledgerと共に標準化が勧められています。2016年秋頃にはメジャーバージョンがリリースされる予定でしたが、開発が遅れており来年に持ち越すとのことです。
なお、2016年8月現在では、更新が頻繁に行われているため、以降のデモでは一部安定版のOpen Blockchian(OBC)を用いています(※10月現在こちらのリポジトリは削除され、Hyperledgerプロジェクトに完全移行しています)。
![Fig 3. Hyperledgerのアーキテクチャー](http://cz-cdn.shoeisha.jp/static/images/article/9625/9625_05_ss.png)
- Membership:Blockchain参加者のアイデンティティ、プライバシー、監査証跡
- Blockchain、Transaction:分散型トランザクション台帳。合意形成(Consensus)により台帳が更新される
- Chaincode:Blockchainに対してビジネスロジックを実行する"Smart Contract"を実装
- API、SDK、CLI:開発者がBlockchain Networkをプログラムで制御できるようにするツール群
3.2. アーキテクチャー詳細
以降では、Hyperledgerアーキテクチャーの詳細について触れたいと思います。
3.2.1. Hyperledger Membershipサービス
Blockchain参加者のアイデンティティ、プライバシー、監査証跡。
- 参加者(Participants)は、事前登録が必要
-
Blockchain Networkのセットアップ時に許可レベルを決定
- Liberal:アクセスが容易。広範な適用
- Restrictive:制限付きアクセス。高信頼性。
- eCertとtCert
- Registration(登録):各メンバーに証明書を発行
- Attributes(属性):メンバーに対し、Transaction実行やプライバシー確保のためのキーを発行
- Reputation(監査):監査人(Auditor)がTransactionメンバーの関係について証跡などを収集する機能を提供
3.2.2. Hyperledger Blockchain、Transactionサービス
分散型トランザクション台帳。合意形成(Consensus)により台帳が更新される。
- Consensus Manager:Transactionをいつ実行するかを決定。アルゴリズムに依存
- Distributed Ledger:Blockchainの整合性を維持
- P2P Protocol:参加者間で台帳の同期を取るための標準技術(gRPC)を利用
- Ledger Storage:BlockchainのBlock、Transactionなどのデータをセキュアに保管。KVS型のRocksDBを採用
- Event Hub:分散ネットワークにわたるイベントを管理
3.2.3. Hyperledger Chaincodeサービス
Blockchainに対してビジネスロジックを実行する"Smart Contract"を実装。
-
Smart Contractを記述し、Validating Peerで稼働。Goにより実装(将来的にJavaやJavaScriptなどもサポート予定)
- Secure Container:セキュアでマシンに依存しないコンテナ内に保管・実行される
- Secure Registry:適切な参加者からのアクセスのみを許可
3.3. Blockchainの参加者(Participants)
![Fig 4. Blockchainの参加者](http://cz-cdn.shoeisha.jp/static/images/article/9625/9625_07_ss.png)
- Users:ビジネス・ネットワーク内のビジネスユーザー。業務アプリケーションを介してBlockchainを利用。Blockchainネットワークの存在を意識しない
- Regulators:ビジネス・ネットワーク全体の監督者。台帳(ledger)のコンテンツへの広範なアクセスが可能
- Developers:アプリケーションとSmart Contractを開発
- Operators:Blockchainネットワークを監視・運用・管理
- CA:認証局。認可の必要なBlockchainネットワークの各種証明書の管理
- Existing Systems:Blockchainにより利用される可能性のある既存の基幹システム。既存システム側からBlockchain側にリクエストが送られる可能性あり
- Existing Data Sources:Smart Contractの振る舞いに影響を与える可能性のある既存システムのデータ・ソース
3.4. Blockchainのコンポーネント
- Ledger:Transaction(Block)と状態(World State)を記録
- Smart Contract:Businesse NetworkのTransactionをCodeに隠蔽。Chaincodeで実装
- Consensus(合意形成):Blockchain Networkを構成するNetwork DataとPeerの集合。分散した台帳間の整合性を維持
- Membership:User識別とTransactionの証明書、その他アクセス制御情報などを保持。認証系
- Event:新規Block作成などのBlockchain内の重要な操作に関する通知イベントを発行
- System Management:Blockchain Componentの作成、変更、管理全般
- Wallet:Userのセキュリティ情報(パスワードなど)を管理
- System Integration:既存システムとの統合・連携
3.5. ビジネスアプリケーションと台帳(Ledger)
以下にビジネス・アプリケーションと台帳との関係図を示します。開発者はビジネス・アプリケーションおよびSmart Contractを開発します。アプリケーションは台帳にアクセスします。Chaincodeとして実装されたSmart ContractはBlockchainとKVS型DBのWorld Stateにアクセスします。
![Fig 5. Application and Ledger](http://cz-cdn.shoeisha.jp/static/images/article/9625/9625_09_ss.png)