見出し画像

BlockChain. Hyperledger Fabricについて調べてみた Vol.1

Hyperledger Fabricについて

@yutakikuchi_です。
セキュアな台帳技術、p2pでのデータトランザクション管理をシステム化したく、BlockChain技術の中のHyperledger Fabricについて調べてみました。Hyperledger FabricはBlockChainのFrameworkの一つであり、Private/Consortium型として分類され、Networkへの参加を管理するものが存在し、ユーザーが許可をされてから参加できるものとなります。逆にPublic型としてはBitCoin Core, Ethereumなどが存在し、こちらは参加許可が不要なものに分類されます。このNetwork型がPublic/Private/Consortiumのどれに所属するか、更にはどんな合意形成のアルゴリズムなのかによって、どのBlockChainの技術/Frameworkが決まってきます。

画像1

引用 : https://www.ibm.com/downloads/cas/VX2ARJ3D

※ ちなみに、上図は2016年頃の作のようで、Hyperledger Fabricにおける現在(2021.12.25)のコンセンサス方式はPBFT(Practical Byzantine Fault Tolerance)ではなく、Endorsement Policyに変わっています。

Hyperledger Fabricのコンセンサスの仕組み

BlockChainの要素技術は下記の4つによって構成されます。
1. 分散台帳(台帳)
 - ネットワーク参加者間で共有する取引の分散台帳
2. コンセンサス(合意形成)
 - ネットワーク参加者間で分散台帳への書き込みを保証する仕組みや流れ
3.  暗号化
 - 取引の正当性や機密保持を行うための暗号化や認証
4. スマートコントラクト
 - 取引におけるビジネスロジック。トランザクションやその他のトリガーによって実行されるプログラム

この中でもこの章ではネットワーク参加者間で分散台帳への書き込みを保証する2. コンセンサスの流れについて書きます。

画像2

上図では1. Client, 2. Endorser, 3.Orderer, 4. Peerの4つの登場人物が出てきます。この例ではClientは別の人物と取引をして所有権を移行するということを前提とし、スマートコントラクトへの記載の署名と分散台帳への書き込みをフローにした内容になっています。

1. Clientが所有権の移転をしたので、トランザクションの問題ないことの確認依頼
2. Endorserである限られたpeerが内容を確認し、署名。
3. Endorserの署名の数が条件に満たしたら、Clientがトランザクションに対してEndosementを組み込んで、submit
4. Clientのsubmitを受け取ったOrdererがトランザクションのコミット順を決定したブロックを各Peerに伝達
5. 各peerが受け取ったブロックを基に自身たちの台帳を更新する

引用 : https://speakerdeck.com/osonoi/hyperledger-fabric-ru-men-bian-750c5a73-67d6-4ee3-9378-81d624c5e48e?slide=32

上記資料によると、上のSTEP2〜3をEndosement Phase, 4をOrdering Phase、5をValidation Phaseを呼ぶようです。

また英語ですが、コンセンサスのトランザクションフローは下記のURLに詳細が載っています。上のフローと実行番号は一致していませんが、おおよその整合性はわかると思います。
1. Client A initiates a transaction
2. Endorsing peers verify signature & execute the transaction
3. Proposal responses are inspected
4. Client assembles endorsements into a transaction
5. Transaction is validated and committed
6. Ledger updated
https://hyperledger-fabric.readthedocs.io/en/release-2.2/txflow.html

Hyperledger Fabricを試してみるには

Hyperledger Fabricのリリースバージョンとしては2021.12.25現在、v2.4となっています。Dockerのimageも下記で共有されているため、サンプルのネットワークを手元のPCで構成してみることもできます。
https://hyperledger-fabric.readthedocs.io/ja/latest/install.html

またAWS Managed BlockchainというフルマネージドサービスでHyperledger Fabric or EthereumのどちらかのBlockchainネットワークを構築することができるようになっているので、Docker, AWSのフルマネージドサービスのどちらかで簡単に実行ができるようになっています。
https://aws.amazon.com/jp/managed-blockchain/

また、EthereumのSolidityと異なり、Hyperledger FabricではGOやPythonなど複数のプログラミング言語で利用可能なSDKが公開されています。下記はPythonのリンクとなります。
https://pypi.org/project/fabric-sdk-py/

その他、リンク

- Hyperledger Fabricについて
  - https://hyperledger-fabric.readthedocs.io/ja/latest/whatis.html
- Hyperledger Fabricの仕組み
  - https://www.ibm.com/jp-ja/topics/hyperledger
  - https://hyperledger-fabric.readthedocs.io/ja/latest/blockchain.html
  - https://hyperledger-fabric.readthedocs.io/ja/latest/network/network.html
  - https://github.com/IBM/japan-technology/blob/aa32f041da87a656254ad81ee8ef236b1c9da56f/Code-Learning-Paths-jp/docs/Code-Articles/blockchain-basics-hyperledger-fabric/index.md
- Hyperledger Fabric再入門
  - https://thinkit.co.jp/series/9765
  - https://thinkit.co.jp/article/17577
- BlockChain/Hyperledger Fabric入門編
  - https://speakerdeck.com/osonoi/hyperledger-fabric-ru-men-bian-750c5a73-67d6-4ee3-9378-81d624c5e48e
- BlockChain基礎知識
  - https://www.softbank.jp/biz/future_stride/entry/technology/20180425/
- いまさら聞けないブロックチェーンの基礎知識と実装の要件
  - https://www.ibm.com/downloads/cas/VX2ARJ3D
- AWS Managed Blockchain
  - https://aws.amazon.com/jp/managed-blockchain/pricing/hyperledger/
- Key Concepts: Amazon Managed Blockchain Networks, Members, and Peer Nodes
  - https://docs.aws.amazon.com/managed-blockchain/latest/hyperledger-fabric-dev/network-components.html
- Hyperledger Fabric python sdk
  - https://pypi.org/project/fabric-sdk-py/
- Qiita
  - https://qiita.com/tatsurou313/items/ca124beb9d9e06cceb77
  - https://qiita.com/kai_kou/items/e02e34dd9abb26219a7e
  - https://qiita.com/kai_kou/items/8314e8e18c3d679947c0

いいなと思ったら応援しよう!