こんにちは!サイオステクノロジーの安藤 浩です。今回はエンタープライズ向けブロックチェーンのデファクトスタンダードといわれているHyperledger Fabricについてご紹介します。入門として、Hyperledger Fabricの説明とHyperledger Fabricの各コンポーネントについて説明したいと思います。
Hyperledger Fabric とは
Hyperledger Fabric は、Linux Foundation の下で設立されたHyperledger プロジェクトのひとつであり、オープンソースのエンタープライズ向けの許可型(Permissioned) 分散台帳テクノロジー(DLT) プラットフォームです。
Hyperledger Fabric は金融、保険、ヘルスケア、人事、サプライチェーン、デジタル音楽配信などの幅広い業界のユースケースに利用可能です。
Hyperledger Fabricの特徴
Hyperledger Fabricの特徴としては以下が挙げられます。
1.許可型ネットワーク
Member Shipservice Provider(MSP)を使用してネットワークに参加するユーザーを管理し、許可されたメンバーのみがアクセスできます。
2.機密性の高い
共有したいデータのみを、共有したいメンバーに公開することが可能です。
3.Chaincode(スマートコントラクト)やFabric SDKでカスタム言語の習得は不要
Ethereum ではSolidity を利用するのが一般的かと思いますが、Hyperledger FabricのChaincode(スマートコントラクト)ではGo、Node.js、Java でコードが書けるので、独自の言語の習得は不要です。Fabric SDK(クライアントアプリケーションで利用)はNode.js、Javaの公式で提供されています。
ネットワークモデルによるブロックチェーンの分類
ブロックチェーンは、ネットワークモデルにより大きく以下の3つに分類されます。Hyperledger Fabricではプライベートブロックチェーンとコンソーシアムブロックチェーンの構築が可能です。
1. パブリックブロックチェーン
誰でも参加でき、全ての取引が公開されます。例としてはBitcoin, Ethereumです。
2. プライベートブロックチェーン
特定の組織内で利用され、アクセスが制限されています。例としてはHyperledger FabricやGoQuorumです。
3. コンソーシアムブロックチェーン
複数の組織が共同で運営し、参加メンバーが制限されています。例としてはHyperledger FabricやGoQuorumです。
主要なコンポーネントの説明
以下にHyperledger Fabricの主要なコンポーネントの説明をします。概念をつかみたいと思いますので、各コンポーネントの詳細はここでは省略します。(Hyperledger Fabric v2 系での説明)
Organization
コンポーネント(Peer, Orderer など)、ユーザが必ずいずれかのOrganizationに所属する。
Membership Service Provider (MSP)
ネットワーク上のすべてのコンポーネント(クライアントアプリケーション、Peer、Ordererなど)/ユーザーを管理および認証する。
クライアントアプリケーション
Hyperledger Fabricを利用するアプリケーションのこと。Fabric SDKを利用してPeer上のChaincodeを実行する。
Peer(ピア)
Chaincodeの処理やブロックの承認などを行うノードのこと。
Peerは以下の特徴がある。
・Ledger(台帳)を保持する
・Chaincodeを実行する
Ledger(台帳)
Organization間のトランザクションの履歴と現在の状態のデータのこと。
LedgerはBlockchainとWorldStateで構成される。Blockchainはトランザクションの履歴のことで、WorldStateはトランザクションの履歴が現在の状態に至ったデータのこと。※WorldStateは現在の状態しか持たない。
これはBlockchainのどの時点を切り取ってもWorldStateが生成できることを意味している。
Chaincode(チェーンコード)
Ledger(台帳)の更新、参照をするビジネスロジックのこと。異なるOrganizationの間のルール、規則をコードによって定義する。
一般的にブロックチェーンではSmart Contract(スマートコントラクト)というが、Hyperledger FabricではSmart ContractとChaincodeは同じ意味で使っている。クライアントアプリケーションは、台帳に記録されるトランザクションを生成するために、Fabric SDKを利用してChaincodeを呼び出す。
Orderer(オーダラー)
トランザクションの順序付けを行い、ブロックを生成するノードのこと。
Ordererは以下の特徴がある。
・Ordering Service(Orderer ノードの群のこと)を構成する
・トランザクションの順序を確定し、ブロックを生成する
・生成したブロックをPeerノードに配布する
CA(Certification Authority)
コンポーネントやユーザに対して、アイデンティティ(証明書)を発行するPKIの認証局のこと。通常、Fabric CAを使うが、ほかのCAを利用してもよい。
Channel(チャネル)
Hyperledger Fabricのネットワーク内に構成される特定のOrganizationの間で通信を行うためのサブネットワークのこと。
システム構成図
図の説明と注意
- Organization: ORG1, ORG2, ORG3がHyperledger Fabricのネットワークに参加しています。
- Channel: Channel1, Channel2 があり、Channel1にはORG1, ORG2が参加しており、Channel2にはORG1, ORG2, ORG3が参加しています。(Channel 内のChannel PolicyというものでMSPの設定がされるようです)
- Client Appはクライアントアプリケーションのことです。Fabric SDKを利用して、Peer上のChaincodeを実行します。
- Identityは CAによって発行された証明書です。各ノードには証明書があります。
- CAは各Organizationに1つは必要なようですが、MSPやCAは現状よくわかっておらず、正確に表現できていない可能性があります。CAと通信する際はFabric CA Clientを利用して通信します。
チャネル内のLedger
各PeerにはChaincodeをインストールと有効化する仕組みがあり、Chaincodeに紐づくLedgerが生成されるので上記のシステム構成図ではChannel ごとに各PeerにLedgerが上記の図のように設定できるようになります。Channel1ではORG3が参加していないため、ORG1,ORG2に関するトランザクションのデータはORG3には共有されません。
まとめ
Hyperledger Fabricの特徴とコンポーネントの概略が把握できたかと思います。別の記事でHyperledger Fabricのトランザクションフローについて記載します。
※誤り等ありましたらコメントいただけますと幸いです。
参考URL
https://hyperledger-fabric.readthedocs.io/en/release-2.5/whatis.html
https://hyperledger-fabric.readthedocs.io/en/release-2.5/key_concepts.html
https://hyperledger-fabric.readthedocs.io/en/release-2.5/glossary.html
https://hyperledger-fabric-ca.readthedocs.io/en/latest/operations_guide.html#topology
https://go.oracle.com/LP=130709