Skip to content

ブロックチェーンという分散システムにおいて合意形成は非常に重要な要素です。また、ここでは様々な合意形成のアルゴリズムを紹介してきました。

分散ネットワークでの合意を可能にしたコンセンサスアルゴリズム「プルーフ・オブ・ワーク」
Proof of Workの欠点を克服させた合意形成アルゴリズム「プルーフ・オブ・ステーク」
富の偏りの解決を目指すコンセンサスアルゴリズム「プルーフ・オブ・インポータンス」

今回は特に一部の組織内のみで利用するブロックチェーン体系であるコンソーシアム型のブロックチェーンにおいて頻繁に用いられる合意形成アルゴリズムである「PBTF(Practical Byzantine Fault Tolerance)」について紹介します。

複数の管理主体により共同で運用されるブロックチェーン「コンソーシアムチェーン」

 

PBTFとは

以前の記事において、「P2Pネットワーク上で、通信や個々のノードが故障、または故意に偽の情報を伝達する可能性がある場合に、全体として正しい合意が形成できるかを問う問題」である「ビザンチン将軍問題」を紹介しました。この問題を解決し、P2Pネットワークが正常に稼働するシステムは、ビザンチン・フォールト・トレランス性(Byzantine Fault Tolerance:BFT)を持つと言われます。

ネットワークでの正しい合意形成を問う問題「ビザンチン将軍問題」

このビザンチン・フォールト・トレランス性を持った合意形成アルゴリズムの一つがPBFTです。PBFTは一部のノードが障害で停止したり不正を働こうとしたりしても、問題なく合意形成ができる仕組みです。PoWやPoSと同様に不正なブロックの追加を防止するための合意形成アルゴリズムですが、PoWやPoSはパブリック型のブロックチェーンで使用される一方で、PBFTはコンソーシアム型のブロックチェーンに向いていることが特徴です。

例えばLinux Foundationによって設立された「Hyperledger」はエンタープライズ向けブロックチェーンテクノロジーを推進するプロジェクトで、IBMを含む複数の企業が参加していますが、そのプロジェクトの一つである、Hyperledger Fabricはデフォルトで PBFT が使えるようになっています。

 

画像:Hyperledger Project

 

PBFTの流れ

具体的なPBFTの流れは以下のようになります。

  1. 承認可能なノード(Validating peer)のうち 1 つをリーダーノードとし、非承認ノード(Non-validating peer)からのトランザクションをリーダーのみが受け取ります。
  2. リーダーノードは他の承認ノードにトランザクションを転送します。
  3. リーダー以外の承認ノードは、リーダーから転送されたトランザクションが改ざんされていない事を確認したら、結果を自分以外の承認ノードに結果を伝えます。
  4. 各承認ノードはある一定の台数から「トランザクションが改ざんされていない」という結果を受け取ったら「トランザクションは全員に正しく配信されている」と判断し、その旨を自分以外の承認ノードに配信します。
  5. 各承認ノードは、一定の台数から「トランザクションが全員に正しく配信された」という結果を受け取ったらトランザクションの処理を実行します。
  6. 実行結果を台帳に反映します。台帳の更新が終了したら、その旨が非承認ノードに送信されます。
  7. 非承認ノードは、一定の台数から台帳更新処理が終了したことを受け取ったら「トランザクションが完了した」とします。

 

画像:IBM | developerWorks

 

ここで、参加するノードの台数に一定の要件ががあります。まず最初の故障許容ノード数fを決めます。このfを決めた上で、合計3f+1台以上のノードであることが要件となります。これを満たしてはじめてPBFTのアルゴリズムが成立します。すべてのノードが常に正しく動作することが保証しようとなると、故障耐性がなくなってしまうために、このような対策が入っています。

こういった複数のノードによってトランザクションの検証を行うという点においては、PoWやPoSといった他のアルゴリズムと同様です。一方でリーダーノードが存在したり、改ざんチェックに対するインセンティブが存在しないという点では異なっています。これらの違いはPBFTの特徴となり、メリットやデメリットとして影響します。

 

PBFTのメリット

PBFTを使用するメリットの1点目として、ファイナリティが得られる(決済完了のタイミングが明確)という点が挙げられます。PoWやPoSと異なり、PBFTではリーダーノードによって一定のタイミングでブロックが生成されるため、ブロックチェーンが分岐することはないので、ファイナリティを得ることができます。金融機関などファイナリティの速度が非常に重要となってくる分野においてはPBFTを利用したブロックチェーンは魅力的ではると考えることができます。

またスループットが高速であることもメリットです。PBFTではPoWなどで求められる計算処理(マイニングに当たります)を必要としないので、比較的高速な認証処理が可能であり、結果として優れたスループットを実現できます。これは、PBFTは基本的にコンソーシアム内でのブロックチェーンを想定しているので、マイニングに当たるトランザクションの改ざんチェックにおいて、ノードにインセンティブを与える必要がないためであると考えられます。IBM社のプレスリリースでは、1,000件/秒以上の取引が可能とされており、これは全銀システムの1,388件/秒に迫る水準です。

 

PBFTのデメリット

一方でデメリットもいくつか存在します。まず参加ノード数やリーダーノードは基本的に固定されているので特定の管理者を介さずに合意形成を行うことは出来ません。すなわちプライベート型やコンソーシアム型でしか基本的にPBFTを利用することはできません。これは、パブリックチェーンで得られる、不特定多数での合意形成をできなくし、誰かを信頼することで高速化を行うというトレードオフのもと成り立っているからです。

また参加ノードが増えると二次関数的にトランザクション数が増えるため、参加ノードをあまりにも多くすることはできません。これもパブリック型ブロックチェーンへ適用できない利用の一つです。

いかがでしたでしょうか。PBFTはPoWやPoSといった革新的な合意形成アルゴリズムとはまた異なりますが、うまくコンソーシアム型のブロックチェーンシステムに適合させたアルゴリズムであると言えます。仮想通貨のように広く使用されるブロックチェーンはPoWのようなパブリック性が必要ですが、金融分野を始めとしたエンタープライズ分野においては、PBFTの活躍が予想されています。

Gaiax技術マネージャ。研究開発チーム「さきがけ」リーダー。新たな事業のシーズ探しを牽引。2015年11月『イーサリアム(Ethereum)』 デベロッパーカンファレンス in ロンドンに参加しブロックチェーンの持つ可能性に魅入られる。以降ブロックチェーン分野について集中的に取り組む。

HyperledgerPBFTブロックチェーン

ブロックチェーンを学び、新しいことをサービスを作りたい人が集まるコミュニティーを運営しています。
・これから実現したいサービスやプロダクトにブロックチェーンを使いたい
・ブロックチェーンが自分の課題を解決する糸口としたい
・ブロックチェーンの技術を学んでプロダクト開発をしたい

興味のある方は詳細をご覧ください!

Back To Top
Search