前回の記事でシャーディングについての概要説明と問題点と解決策について説明しました。
コンセンサスプロトコルの採用
ビットコインやイーサリアムが採用しているコンセンサス・プロトコルは、「ナカモトコンセンサス」(Nakamoto Consensus)という仕組みを採用しています。
ナカモトコンセンサスを採用しているビットコインやイーサリアムに限って言えば、「スケーラビリティ」を犠牲にすることで「分散性」と「セキュリティ」を取っています。
対してZILLIQAは、”PBFT”と呼ばれるコンセンサス・プロトコルを採用しています。
ZILLIQAに限って言えば、「分散性」を犠牲にすることで「スケーラビリティ」とセキュリティ」を取っています。
ナカモトコンセンサスとは?
コンセンサス・メカニズム(合意の仕組み)と一連のルールを指します。
主に以下の4つに分解することができます。
- Proof of Work (PoW)
- Block Selection(ブロック選択)
- Scarcity(希少性)
- Incentive Structure(インセンティブ構造)
ナカモトコンセンサスによるブロック承認者の選出は、PoWによって決められます。
PoWによる選出には、多大な計算量を必要としており時間を要します。
PBFTによるコンセンサスの流れ
PBFTは”Practical Byzantine Fault Tolerance”の略称です。
前提として、シャード内のノードのうち3分の1が悪意を持っていることを前提にしています。
シャード内には、リーダーであるプライマリーノード(Primary Node)と、それ以外のバックアップノード(Backup Node)が存在します。
PBFTのプロセス
Pre-prepare phase
リーダーであるプライマリーノードが「prepareメッセージ」の発信によって、グループ内のノードが承認しなければいけないレコードを送信します。
Prepare phase
「prepareメッセージ」を受信したバックアップノードは、リーダーによってアナウンスされたレコードの正確さと正当性を検証します。
その後、「prepareメッセージ」を他のノードに一斉送信します。
Commit phase
「prepareメッセージ」を受信した各ノードは、Commit Messageをグループに一斉送信します。
各ノード群は、他のノードから送信されるCommit Messageが一定量集まることで、リーダーによってアナウンスされたレコードに合意していることを確認します。
PBFTを採用する3つのメリット
PBFTを採用することによる3つのメリットについて解説します。
このメリットは、ナカモトコンセンサスと比較したメリットとなります。
Transaction finality
PBFTはFinality(ファイナリティ)に対して優位性があります。
ナカモトコンセンサスを採用しているビットコインの場合、ブロック生成後に”完了状態”となるまでに、最低でも6承認待たなければいけません。
1承認約10分とした場合、6承認得るのに約1時間を要します。
これでは、日常的な決済に活用できるとは言えません。
対してPBFTは、上述した”PBFTのプロセス”によって、生成されたブロックが”完了状態”となる為、ブロックが分岐することなく瞬時に決済が完了します。
Low energy footprint
PBFTはメッセージによるグループ合意を得ているため、エネルギー消費を抑えることができます。
対してPoWは、多大な計算量を必要とするためその分エネルギー消費が必要になります。
しかしZILLIQAでは、ノードの善悪を審査する時のみ(シビルアタック)Powを採用しています。
ノードの正体が一旦判明したら、PBFTを起動することで複数のブロックを連続でコンセンサスを求めます。
Powによる審査は100ブロック毎に採用しています。対して、ナカモトコンセンサスは1ブロックごとにPowによるコンセンサスが必要となります。
Low reward variance
PBFTは参加している全ノードに対してインセンティブを与えることが可能です。
ナカモトコンセンサスの場合、多大な計算によって難解な問題を一番早く解決できたマイナーのみにインセティブがあります。
参加者全員にインセティブを与えることができる設計は、非常に興味深く別途記事にて詳細をお伝えしたいと思います。
PBFTの課題
PBFTは、グループ(ノード群)が50以下の条件下で一番効率的になります。
しかし、ZILLIQAは悪意のあるノードにシャードをコントロールされてしまう可能性を考慮して、シャードのサイズの最小限を600ノードに設定しています。
「効率性」と「セキュリティ」でトレードオフの関係であることがわかります。
ノード群が多くなることで、グループ内の「コミュニケーションコスト」によって、PBFTの効率が悪くなります。
デザインストーリー2 – ZILLIQA –
CoinPicks
– 仮想通貨の質問や悩みについて筆者がズバリお答えします –
– リアルタイムで仮想通貨の情報収集しています –
– CoinPicksは「学ぶ」「動く」「繫がる」場所です –