なるほど!をお届けする仮想通貨情報メディア

  • BTCBTC

    368,679円

  • ETHETH

    9,614.3円

  • ETCETC

    416.34円

  • LTCLTC

    2,694.2円

  • BCHBCH

    9,032.3円

  • XRPXRP

    32.781円

  • LSKLSK

    0.0000円

  • XEMXEM

    6.9766円

PBFT(Practical Byzantine Fault Tolerance)について

 

導入

ネットワーク上においてコンセンサス(分散合意)を得るのは難しいとされます不特定多数、信頼性がないこと、物理的距離が離れていることなど、合意を形成することを更に難しくする要因が多くあります。

こういった諸問題を改善するために多くのアルゴリズムが開発されており、解決を導くことができるか注目が高まっています。

ビットコインのPoW(Proof of Work)、イーサリアムのPoS(Proof of Stake)、ネムのPoI(Proof of Importance)などがその例です。

Byzantine Generals probrems(ビザンチン将軍問題)について

P2Pネットワーク上での通信において、一部のノードが故意に偽の情報を伝える可能性がある場合に、全体として正しい合意が得られなくなってしまう問題をビザンチン将軍問題といいます

正しいコンセンサスが得られない場合、不正なブロックが生成されてしまう原因となります。

出典:https://moblock.jp/articles/17183

 

基本的な承認アルゴリズム例

代表的な承認アルゴリズムの一つであるPoW(Proof of Work)を例にとってみます。

承認アルゴリズムは、一般的に分散型ネットワーク上において、取引の合意を形成するためのアルゴリズムです。送金や決済の際に発生するトランザクションを、ブロックチェーンと呼ばれる台帳に記録しますが、誰もが自由にブロックを生成し、チェーンに組み込むことが出来てしまうと、容易に虚偽のトランザクションが作成されてしまいます。

そのために、難解なトランザクションを一番最初に説いたノードに発言権を与え、CPUの多大な計算能力を使用してはじめて新しいブロック生成が可能になるという仕組みをとりました。

このアルゴリズムの導入により、もし改ざんしようとしてもブロックチェーンとして繋がっているブロックを最初から計算し直し、追いつき、正規の分岐とは別の方向にチェーンを伸ばすことをする必要があり、量子コンピューターが非線形な発展を遂げる以外はあり得ないと言われています。

マイニングは、ハッシュ値とトランザクションの取引情報をもとに算出されるNanceをハッシュ関数に通してハッシュ値を求めますが、その正確な値に近い値を見つけたノードをマイナーとします。

 

PBFT(Practical Byzantine Fault Tolerance)

PoW(proof of Work)のアルゴリズムにおいては、多大な計算能力を賭け正しいナンスを最初に発見したノードがブロック生成の権利を得られるとして、合意形成を行っています。

一方で、コンセンサスにおいて合意が得られない場合、不正なブロックが追加されフォーク(分岐)の原因となってしまいます。そのため、そういった問題の耐性をもつシステムをPBFT(Practical Byzantine Fault Tolerance=ビザンチン将軍問題耐性)といい、故障や故意の情報に関係なく、正常に稼働するシステムを維持するために導入している通貨が増えています。

 

PBFTの流れ

ネットワーク上には、Non-validating peer(非検証ノード)とvalidating peer(検証ノード)との役割があります大まかな流れとしては、非検証ノードがトランザクションを実行するリストを受け取り、それらを検証ノードがトランザクションの検証を行います。

1.検証ノードのうち一人をリーダーノードと設定します。最初に、非検証ノードから候補トランザクションを受け取るのはリーダーノードのみです。

2.リーダーノードは、他の検証ノードへ候補トランザクションを転送します。

3.リーダーから候補トランザクションを送信された検証ノードは、候補トランザクションが改ざんされてないことを確認し、自分以外の検証ノードの改ざんされていない旨を伝えます。

4.各検証ノードは、その連絡の数から整合性を判断することができます。

5.トランザクション処理を行い、その実行結果を台帳に送信し、ブロックチェーンの更新が完了したら、非検証ノードが確認し、完了となります。

出典:IBM Developerworks はじめてのブロックチェーン

 

PBFTのメリット

一般的にPBFTのメリットは、ファイナリティが得られることとスループットが高速であること、マイナー報酬の安定性です。

一つ目では、決済完了のタイミングが明確であり、ファイナリティが得られることです。チェーンの分岐が起こりづらく、安定します。金融機関での用途に適します。

二つ目は、スループットが高速であることです。

PoW(Proof of Work)のように複雑な計算処理を必要としないので、高速なトランザクション処理が可能です。PoWの計算処理が必要なのは、検証ノードのトランザクション検証能力を評価する際のみです。

最後に、マイナー報酬の安定性です。

PBFTを利用すると、マイナー全員に報酬のインセンティブを与えることができます。PBFTのコンセンサス下では、マイナー全員がひとつの記録に対して賛否をメッセージ認証で示さなければならなくて、共同の決断が必要なため、貢献度が高くなります。

一方で、PoWでは非常に難解な問題をいち早く解決することを全員のマイナーが競い合い、問題を解決した者のみが報酬として獲得できる総取り制なので、よほど大きな計算能力をもったノードでない限りは不安定なはずです。

 

PBFTのデメリット

一方で、PBFTには、ノード群の小ささ、コミュニケーションコスト、プライベート用途が適することなどのデメリットがあります。

一つ目は、可能なノード群サイズの小ささです。

ノード群が一定以下の少数条件下で一番効率的です。しかし、一般的な承認アルゴリズムが必要としているのは、既存の顧客ペイメントシステムであるVISAやMasterCardに匹敵する最低限600ノードの規模です。そのため、現状日常レベルでの利用には適しません。

二つ目は、コミュニケーションコストです。

PBFTは悪意があるノードで一定する存在する前提で動作されているため、システムのステートについて合意しなければならないという仕組みをとります。ノード間のコミュニケーション負荷は重くなってしまいます。

また、メッセージの認証コストに関して、ノードAがノードBからメッセージを受信する時、確かにBが送信したこと(なりすましなし)と送信の途中でメッセージが修正されていないこと(改ざんなし)を確かめなければなりません。

そのために一般的に、AとBの間で秘密鍵を発行するという方法がとられます。

Aがメッセージを送信する際、メッセージに署名してデジタル署名を発行します。この署名は次のBに送り、次のCに転送します。この方法ではAがひとつの署名を発行することで十分になります。つまり、nノードがあればデジタル署名を使用する場合、合計のメッセージはn-1で済みます。以前のMACではn(n-1)/2の鍵が必要であり、現在では技術発展によりコストが軽減されています。

三つ目は、プライベートな用途が適することです。

PBFTの仕組みに起因する問題ですが、検証ノードの中からリーダーノードを選定すため、誰かを信頼する必要があります。

不特定多数では圧倒的に合意形成が難しくなってしまいます。特定された少数では、リーダーノードの選定は可能ですが、大きな人数になると多数で話し合うのは非常に難しいです。

民主政治のように直接代議制のような体制を取るのが理想的になりそうです。

PBFTを採用する通貨の例

Zilliqa(ジリカ)

シャーディングという技術によりトランザクションを分割し効率よく処理するアイディアを推進します。トランザクションを並列に処理するため、スケーラビリティを解決できるとして注目度が高い技術です

公式サイト:https://www.zilliqa.com/

Ark(アーク)

異なるブロックチェーンを繋ぐ橋渡しとなることを目指します。また、8秒でブロック生成される高速処理も可能です。承認アルゴリズムにDPoS(Delegated Proof of Stake)を採用します。

公式サイト:https://ark.io/

asch(アッシュ)

サイドチェーンを導入し分散型アプリケーションのスクリプトエンジンに柔軟性を提供し、スケーラビリティの問題を解決します。ビットコインのようにUTXOを使用しており、ユーザーのプライバシー保護が高い点も特徴です。承認アルゴリズムにDPoS(Delegated Proof of Stake)を採用します。

公式サイト:https://www.asch.so/

まとめ

PoW(Proof of Work)やPoS(Proof of Stake)などの主要なアルゴリズムは、分散型ネットワークにおいて合意形成を行う役割を担います。

一方で、システムにおける欠陥やそういった脆弱性を突いて不正なブロックを生成する悪意のノードは一定数存在します。

そういったビザンチン将軍問題に対処する耐性があるPBFT(Practical Byzantine Fault Torelance)について取り上げました。

合意形成に関わる不正の可能性を排除したアルゴリズムである一方で、多くのメリットとともにデメリットも顕在化しています。

PBFTを採用している通貨は多くあり、Zilliqa(ジリカ)やasch(アッシュ)などあり、開発が進むにつれて技術的進歩が見られるか、特徴に沿った部分的な使用が検討されるようになるでしょう。