XRPの中央集権性について
概要
本記事ではXRPのコンセンサスアルゴリズムについて解説します。コンセンサスアルゴリズムは一般的にテクニカルであり、多くの人が見落とすところだと考えられます。しかし、コンセンサスアルゴリズムがプロトコルの中央集権性を決定し、どのように攻撃されるリスクがあるかを示唆するので重要です。
本記事では最終的になぜXRPのコンセンサスアルゴリズムが中央主権的か明らかにします。また、リップル社はXRPとは無関係という主張とは相反して、リップル社がXRPのコンセンサスプロセスに多大な影響を与えていることも明らかにします。
リップラーによるXRPコンセンサスアルゴリズムの解説記事
例えばこちらのサイト(https://gtgox.com/)はGiantGox(https://twitter.com/GiantGox?s=20)という著名リップラーが運営しており、リップルのコンセンサスアルゴリズムについて以下のように述べております。
https://gtgox.com/top-9-frequently-asked-questions-about-ripple-and-xrp/#XRP_Ledger
以下はリップル社の公式ページであり、リップルコンセンサスレジャーは中央集権的でない理由として以下を上げてます。
しかしこれらの理由からリップルは非中央集権的と言えるのでしょうか。この疑問に答えるためにまずXRPのコンセンサスアルゴリズムを見ていきましょう。
XRP Ledger コンセンサスプロトコルの基本
以下各用語の説明となります。
rippled:XRP Ledgerを管理するコアのピアツーピアサーバーです。ビットコインのBitcoin Coreに該当します。
ストックサーバー :レジャーのローカルコピーを保持し、ネットワークをフォローします。
バリデーター:コンセンサスに参加します。バリデーターはストックサーバーのサブセットです。
Unique Node List:各サーバーが信頼するバリデーターの集合を指します。信頼できるバリデーターとは、提案を評価するサーバーを欺こうと共謀しない、全体として「信頼できる」ネットワークのサブセットを表します。リップル社が推奨するUNLに関しては以下のサイトで確認することができます。
https://xrpcharts.ripple.com/#/validators
XRPのコンセンサスアルゴリズムはXRP Ledger コンセンサスプロトコルと呼ばれています。
XRP Ledger コンセンサスプロトコルに参加するにはrippledを実行し、バリデーターになる必要があります。
さらにバリデーターになった後、他のバリデーターに認められてUnique Node Listに追加されると、XRP Ledgerを前に進められるようになります。
Unique Node Listのバリデーターの80%以上がLedgerの状態が正しいことに合意したときに、そのLedgerは検証済みとなり、ファイナリティを持って次のレジャーに進むます。
リップルの中央集権性
推奨するUnique Node Listはリップル社が管理しており、実質的にユーザーはリップル社が推奨するバリデーターをUnique Node Listに登録しています。この場合Ledgerが分岐する可能性が低いですが、それはリップル社を信用しているのと変わらず、中央集権的であることを示唆します。
リップル社が推奨するバリデーターではないバリデーターをUnique Node Listに登録する場合、Ledgerが分岐するリスクが高まります。
例えばあるユーザーは5つのバリデーターと接続し、別のユーザーは他の5つのバリデーターと接続すると仮定します。
それぞれのノードが80%以上の閾値に達したとしても2つの相反するLedgerに分岐してしまうリスクがあります。この2つの相反するレジャーが1つのレジャーに戻る仕組みがコンセンサスプロコルにはありません。
また、Unique Node Listにどのバリデーターを入れるかという決断をすること自体がアタックベクターです。信用できると思ったノードが実はリップルネットワークを攻撃することを目的にバリデーターを立てた可能性があるからです。
バリデーターを立てるコストは非常に低く、攻撃者は容易に無数のバリデーターを立て、ネットワークを混乱させることができます。これをシビルアタックと呼びます。このときどのバリデーターが信用できるかというガイドラインを出すのがリップル社であることは明らかであり、前述した通り、中央集権的であることが分かります。
まとめ
XRP Ledger コンセンサスプロトコルは恒常的に分岐するリスクおよびシビルアタックされる可能性が高いことを指摘しました。その結果、リップル社がUnique Node Listの推奨バリデーターを管理する必要があり、中央集権的であることが明らかです。
これを解決するには悪意のあるバリデーターがネットワークを攻撃した場合、なんらかのコストを負うようにコンセンサスプロトコルを変更する必要があります。
ビットコインの場合はブロック報酬でマイナーが無効なブロックを採掘することがないようなインセンティブを与えています。もちろんこれは素早いトランザクションが出来ないこと、およびファイナリティがないことと引き換えです。しかし、結果として非中央集権性が保たれます。
リップルは素早いトランザクションおよびファイナリティを得る代わりに中央集権的であります。リップラーはそのことを認識した上でリップルを使用していただければと思います。