空谷に吼える

ブロックチェーン/DLTまわりのなにかしらを書いていく所存

Hyperledger Fabricのコンセンサスモデルとは

どうせみんな"Hyperledger Fabric コンセンサス"とかでググるんでしょ?なのでおれはこれを書いておくことによってアクセスを稼ぐことができるという寸法です、やっていきましょう

なんの話

  • Hyperledger Fabricのコンセンサスモデルってなんなの?って話
  • HLFのコンセンサスの概要を勉強したいときに見るべき情報

内容

HLFのコンセンサスモデル

コンセンサスアルゴリズムとかコンセンサスモデルとか呼ばれるやつがありますね、そう、例のPoWとかPoSとかPoAとかのやつ、それの話をする。
Hyperledger Fabric(HLF)のコンセンサスモデルはなんでしょうか?

「PBFTってやつだろ?おれはくわしいんだ!」

ちがいます、PBFT(Practical Byzantine Fault Tolerant)はHLFv0.6⇒1.0のときにもうやめにしました。みんなの意見をまじめに聞いて働くいいやつだったんだけどスケーラビリティがね。。。

では今(v1.x系)はなんなのか?
ぜんぜんわからない、俺たちは雰囲気でHLFをやっている。というわけではない、ないのだがどうもHLFのコンセンサスモデルの呼び名についてのコンセンサスが取れていない。
でも呼び名がないと不便なので当面このブログでは
「Endorsement⇒Ordering⇒Validationの3フェーズモデル」
だということにしておきたい。
いずれにしてもProof of HogehogeとかPBFTとかのキャッチーな名前はついてないんだ、すまねえ

「HLFのコンセンサスモデルは選択可能」という説明について

たまに「SOLO」とか「Kafka」とかのOrdering Serviceの種類が選べることを指して「HLFのコンセンサスモデルは選択可能」というような書かれ方をしている場合もあります。
が、あくまでOrdering ServiceはHLFのコンセンサスを取るプロセスの一部であって、それが選択できることをもってコンセンサスモデルが選択可能であると説明するのはちょっとミスリーディングですね。
まあでもHLFの公式ドキュメントもこのあたりの用語法があんまり一貫していないような感じがするのでしかたない

オススメお勉強情報

HLFのコンセンサスをまずは概要レベルで学びたい場合、以下3つがいいと思います。コンセンサスに関係ない部分もあるので適宜読み飛ばしましょう。 だんだん詳しくなっていくので、順に読んでいくとめっちゃわかるようになります。めっちゃわかるようにならなかった場合は1.からもういちど読み直してください、為せば成る

  1. IBMのHyperledger Fabric入門記事: Hyperledger Fabric 入門, 第 3 回: コンセンサス/Ordering Service/Kafka/Zookeeper
  2. v0.xからv1.xでどう変わったかという記事: Hyperledger Fabric v1.0|合意形成と管理方式を一新 | アイマガジン|i Magazine|IS magazine
  3. 公式ドキュメントのTransaction Flow解説(英語だ): Transaction Flow — hyperledger-fabricdocs master documentation

すごく大まかに言うとEndorsementフェーズでChaincodeを仮実行して台帳に書き込む予定の値とEndorser Peerの署名を取得(ここではコミットしない)、それをValidationフェーズで必要な署名が集まっているかの検証、書き込む値のバージョンが仮実行時とずれていないかの検証などしつつ台帳に書き込んでいます(ここでコミット)。

さっき為せば成るとは言ったがもしかするとHLFのアーキテクチャ(どういうコンポーネントがあるか)を先に頭に入れてから読まないとキツいかもしれない。
そのへんは別のエントリで⇒書いたHyperledger Fabricの主な構成要素をざっくりと解説 - 空谷に吼える

親切に説明編も書いたよ⇒

Hyperledger Fabricのコンセンサスを親切に説明 ~ Endorsementフェーズ編 - 空谷に吼える

Hyperledger Fabricのコンセンサスを親切に説明 ~ Validationフェーズ編 - 空谷に吼える

こっちの資料のおまけ部分にも解説を書きました

Hyperledger Fabricを使ったシステム設計の入門ガイド的な資料を公開 - 空谷に吼える