
編集者注: この記事は以下から引用しました炭素鎖の値編集者注: この記事は以下から引用しました
炭素鎖の値
(ID: cc-value)、講演者: Conflux Research Director Yang Guang、テキスト照合および校正: Cinderella、Tang Han、許可を得て出版。
この分野における私の研究と洞察の一部をここで皆さんと共有する機会を得ることができて大変うれしく思います。
まず最初に、私たちの Conflux チームについて簡単に紹介させていただきます。私たちのチームの中心は、Yao クラスの数人のクラスメートと後輩であり、Yao Qizhi 氏を主任科学者兼コンサルタントとして迎えられることを光栄に思います。私たちがブロックチェーン業界に投資する理由は、この業界を席巻する暗号化とゲーム理論には非常に重要で意味のある新しい問題がたくさんあるためです。例として、ブロックチェーンはそれらに最も精通しており、解決すべき多くの問題があります。これらはすでに学界における最先端の研究方向です。これらの問題はエンジニアだけで解決することはできませんが、より多くの学術勢力の参加が必要であり、全員が協力してブロックチェーン業界全体の発展を促進することができます。
副題
01 シビル攻撃とブロックチェーンコンセンサスプロトコル
今日はPoWとPoSの比較についてお話します。まず、最も典型的なブロックチェーンのコンセンサス プロトコルを確認してみましょう。全員がトランザクションをブロックにパッケージ化し、ハッシュ参照を通じてブロックをチェーンに接続し、共有台帳を取得します。しかし、このように台帳を直接使用するのは決して安全ではありません。悪い人が台帳を作成し、2 つの台帳を同時にあなたの前に置き、どれが真実でどれが偽物でどれが偽物であるかを確認することもできるからです。信じるべきですか?さんが質問しました。
もちろん、集中管理されていれば、この問題は非常に簡単に解決できます。私は Alipay を使用していますが、Alipay は私の口座にいくらあるのか、つまりそれがいくらであるかを教えてくれます。それが事実と矛盾する場合、私の意見が異なる場合は、法廷に行って彼を訴えることができます。しかし、それが分散化されている場合、この問題は言うのが困難です。地方分権の場合、誰もがそのような決定的な機関を持っているわけではなく、公正な台帳を持つためには別の方法で合意を得る必要があります。では、分散型環境ではどのようにして合意を達成すべきでしょうか?考えやすい方法は、私たちが投票し、全員が一緒に投票し、台帳に投票し、その後全員がそれを信じるというものです。
ただし、投票の話なので、議決権をどのように分配するかという投票の公平性の問題があります。たとえば、今日はみんなで一緒に投票します、私は100票を持っています、そしてここに座っている皆さんも1票ずつ持っています、これは投票とは言いません、私は100票持っています。基本的に、私は投票したいことを言います。のために、そして結果はそれが何であるかです。私たちが本当に合意に達したいのであれば、このような特に不公平な方法で投票することは不可能です。したがって、議決権の分配はコンセンサスプロトコルの中核で最も重要な部分の 1 つです。オフライン投票権の配布の問題は、実際には比較的簡単に解決できます。単純に 1 人 1 票があれば十分です。誰もがIDカードを持っているので、投票するときに登録するだけです。しかし、オンラインでは、1人1票を達成することは非常に困難です。
シビル攻撃とは何かについて簡単に説明します。これは、攻撃者が低コストで多数のアカウントを作成し、これらのアカウントを制御して連携して、他の人がたくさんいるように見せることができることを意味します。たとえば、フォーラムには世論を誘導する荒らしが存在し、たとえば、映画評価ウェブサイトには、コメントやスコアをレビューするために特別に組織する人々がいます。この種の海軍ベストが攻撃したという報告が多数ある場合、最終投票の結果は真実ではありません。このように、ある人が大量の票を投じて、最終的な投票結果がその人によって完全にコントロールされてしまうということも考えられます。従来のインターネット環境では、各アカウントの登録コストを増やすなど、Sybil 攻撃に対抗するためのさまざまな方法があります。インターネット上でアカウントを登録する場合、認証コードの入力が必要になることが多いですが、これはコンピュータ上で実装する方が手間がかかるためで、プログラムは書けてもさらに難しいのですが、非常に難しいです。人間が行う場合は簡単ですが、携帯電話番号のバインドや IP アドレスの検出が必要になる場合もありますが、これは Sybil 攻撃に対抗する比較的一般的な方法です。しかし、分散環境では、上記の方法を使用するのは簡単ではありません。なぜなら、分散環境では誰が認証コードを公開し、誰が認証コードが正しく入力されているかを判断するのでしょうか。では、誰が携帯電話番号を確認するのでしょうか?たとえIPアドレスを使用するとしても、それは実際には非常に不公平な方法です。誰もが平等に静的 IP アドレスを享受できるわけではないことを私たちは知っているからです。
したがって、ブロックチェーンで実際に使用される最も一般的なソリューションは、プルーフ・オブ・ワーク (PoW)、プルーフ・オブ・ステーク (PoS)、およびプロキシー・プルーフ・オブ・ステーク (DPoS) です。他にも、どれだけのスペースを持っているか、どれだけのお金を燃やしたかを証明するなどの証明方法がありますが、最も一般的なのは PoW と PoS です。ここで少し強調したいのは、PoW、PoS、その他の PoX に関係なく、それらは反シビル攻撃メカニズムであり、コンセンサス アルゴリズム (プロトコル) の重要な部分ですが、コンセンサス アルゴリズムと同等ではありません。
副題
02 作業証明
次に、誰もがよく知っているワークロード証明について説明します。
プルーフ・オブ・ワークの基本的な考え方は、コンピューティング能力がブロックを生成する権利を決定するというものです。 PoW の計算問題を解くことができれば、ブロックを生成できます。ざっくりまとめると、1 つの CPU に 1 票、または 1 つの GPU または 1 つのマイニング マシンに 1 票として理解できます。その利点は、システムがパーミッションレスであるという事実から始まります。参加者は誰の許可も必要なく、計算能力のあるマシンがあれば理論に参加でき、マシンさえ必要ありません。ブロックのハッシュを手動で計算し、時間内にアップロードできれば、他の人はそれが合法的なブロックであることを認識します。もう1つは、PoW投票自体のコストが比較的高く、CPU、GPU、マイニングマシンのいずれを使用する場合でも、マシンのコストと電力のコストが実質的に費やされる必要があることです。これは先ほど述べた確認コードと同じもので、実際には形式が少し似ていますよね。確認コードがいくつかありますが、それを読み取った後も、その中の数字や文字が何であるかを特定するために少し時間を費やす必要があり、その後、入力して確認を通過することができます。 Proof of Work の最大の利点の 1 つは、投票と投票権が拘束されていることだと思います。投票が成功すると、投票者自身ですら投票の内容を変更することができなくなります。
プルーフ・オブ・ワークの一般的なロジックによれば、投票するときは、まずブロックをパッケージ化し、次にこのブロックに対してプルーフ・オブ・ワークを実行する必要があります。プルーフを作成すると、それは投票することと同じになりますが、現時点では、パッケージ化されたブロックを変更する方法はありません。たとえば、私のマイニング マシンは 1 日に大量の投票を行うことができますが、前日の計算能力を新しいブロックに集中させたい場合、これは不可能です。一方、自分のブロックをロールバックしたい場合は、私自身も、生成されたブロックに対して他の人のブロックをロールバックするときと同じ計算能力を支払わなければなりません。これは PoW の特に優れた機能です。
もちろん、PoW メカニズムに基づくコンセンサス アルゴリズムにもいくつかの欠点があります。まず第一に、欠点は遅延が比較的大きいことです。これは、トランザクションをブロックにパックした後、このブロックがすぐに有効な候補ブロックになるわけではなく、このブロックを呼び出す前に少なくとも 1 つのプルーフ・オブ・ワークが完了する必要があるためです。候補ブロック。ここでのプルーフ・オブ・ワークの時間を特に短く設定することはできません。なぜ短くしすぎてはいけないのかについては後ほど説明します。したがって、少なくともブロックがパッケージ化されてからブロックのプルーフ・オブ・ワークが完了するまでの期間は、トランザクションを確認することは不可能です。したがって、ビットコインが 6 ブロックの確認を待たず、1 ブロックを確認したときに確認したとしても、トランザクションの確認には平均して 10 分かかります。 PoW メカニズムに対するもう 1 つの批判点は、多量のエネルギーを消費し、環境に優しくないことです。この点については、proof of workのエネルギー消費が必要かどうかは意見の問題だと思いますし、留保はできると思います。ただし、Proof of Work について話しているため、このワークロードを保存する方法はありません。保存した場合は、別の名前で呼ばれることになります。
PoW ベースのコンセンサスの主な問題を解決する方法を見てみましょう。
1つ目は確認速度が遅いということです。ビットコインを例にとると、ブロックの生成には平均 10 分、さらに 6 ブロックの確認には平均 1 時間かかります。 2 つ目はスループットが比較的低いことであり、ビットコインがこの点で数年前から批判されていることは誰もが知っています。それから3点目は、エネルギー消費量が多いということは環境に優しくないということです。しかし、3 番目の点は、PoW を使用したいので、このエネルギーの消費は避けられないため、この問題を解決したくありません。
最初の 2 つの問題は、確認速度の遅さとスループットの低さです。実際、これら 2 つの問題には非常に簡単な解決策があるように見えます。それは、PoW 問題のターゲットの難易度を下げ、ブロック生成の速度を上げることです。ライトコインはまさにそれを実現します。目標の難易度をビットコインの 10 分から 2.5 分に下げ、ビットコインの 4 倍の速さでブロックを生成しました。スループットを向上させるもう一つの方法はブロック容量を増やすことであり、例えばBCHでは各ブロックを1Mから8Mに拡張し、その後32Mに拡張し、さらに128Mに変更する案もあった。直感的には、ブロックの生成速度が同じであれば、ブロックが大きいほどスループットは高くなります。
ビットコインの確認速度の遅さとストレージ容量の少なさの問題はそんなに簡単に解決できるのでしょうか?もちろん違います。もしそれが本当に単純であれば、ビットコインは10分で100万に設定されることはありません。なぜ今述べた方法では問題を解決できないのでしょうか?ブロックの生成速度が速くなると、ブロックチェーンは非常に頻繁にフォークするため、特にブロックの生成速度がブロードキャスト速度を超える場合、フォークの状況は特に深刻になります。
PoW 問題の難易度を下げ、ブロック生成速度を上げ、さらにブロック容量を増やすと、実際、特定のネットワーク条件下ではブロードキャスト速度が確実に低下します。ブロックが大きくなるほど、ブロードキャストが遅くなるからです。次に、ブロックの生成速度は速いが、ブロードキャスト速度が遅いと言う場合、つまり、他の人から新しいブロックを受け取る前に自分でブロックをマイニングできる場合、フォークが発生します。次に、ギャップが比較的大きい場合は、フォークが多くなります。
フォークが多すぎると何が問題になるのでしょうか?最大のデメリットは、セキュリティが低下することです。ビットコインでは、悪者が攻撃するにはコンピューティング能力の 51% が必要であるとよく言われます。前提として、優秀な人材は 1 つのメインチェーンに集中しています。この場合、善玉の 49% が集中し、悪玉の 51% が攻撃できるようになります。しかし、そのような頻繁なフォークが実際に発生した場合、たとえば、フォーク A に計算能力の 30% があり、フォーク B に計算能力の 40% があることになります。現時点では、攻撃者はフォーク B をロールバックしてフォーク A に変更したいと考えています。それにはそれほど多くの処理能力は必要なく、必要な計算能力は 11% だけです。世界で最も誠実な計算能力を備えた 2 つのフォーク間の差よりわずかに大きい限り、攻撃者はこれらの上位 2 つのフォーク上で最長のチェーンを前後にジャンプさせることができます。したがって、実際にビットコインのパラメータを単純かつ乱暴に変更すると、最終的には安全性が確実に低下します。
しかし、私は、このセキュリティ低下の原因が PoW にあるとは思えません。ここでの PoW は単なるシビル攻撃対策メカニズムであり、難易度は調整できます。ここでのセキュリティ低下の原因は、PoW ではなく「最長のチェーン」によって運ばれる必要があります。フォークの安全性がはるかに低いのはなぜですか?実際、それはビットコインが最も長いチェーンのコンセンサスを採用しているためです。最長チェーン メカニズムでは、フォークがある場合、正直な計算能力がフォークに従う可能性が高く、正直な人々がフォークに投票することを意味するため、悪意のある人々が最終結果を操作することが容易になります。
次の質問は、なぜ PoW に基づく最長チェーンのコンセンサスがフォークするのかということです。全員が良い人であれば二股は起こらないということですか?
これも真実ではありません。グラフ内の各線はノードを表すために使用され、右側の矢印は時間を表します。このノードがブロックを生成すると、そのブロックをブロードキャストする必要がありますが、ブロードキャストには時間がかかるため、「イベント ライト コーン」が形成されます。ブロックを生成したノードから離れるほど、ブロードキャストされたブロックを受信するのに時間がかかり、生成されたばかりの新しいブロックを確認するまで待つ必要があります。つまり、この黄色の領域以降の他のノードだけが、あなたの側で生成されたブロックを見ることができます。光円錐があるため、それに応じて光円錐の外側の領域があり、これは図の緑色の部分です。ノードがライトコーンの外側のエリアにあるとき、ブロックはまだブロードキャストされていないため、ブロックがあなたの側で生成されたばかりであることをノードが知ることは不可能です。つまり、ネットワーク内で次に生成されるブロックが後ろの黄色の部分にあれば、もちろん安全です。なぜなら、この時点ではすべてのノードが最新のブロックを認識しており、ブロックを生成するときに後を追うことになるからです。フォークはありません - 全員が元気であれば。
しかし、ブロックの生成速度が比較的速く、緑色の光の円錐の外側の領域にブロックを生成すると、必然的にフォークが発生し、最終的には孤立したブロックが生成されます。これら 2 つのブロックが相互に参照することは不可能であるためです。したがって、簡単に見積もると、孤立ブロック率は、光円錐の外側の領域の面積を、予想されるブロック間隔の総面積で割ったものにほぼ等しくなります。ブロック生成のイベントは、予想されるブロック間隔内で等しい確率でランダムに発生するためです。一方、緑色の光円錐の外側の領域の割合が小さいほど、孤児の可能性は低くなります。
しかし実際には、ノードが 4 つだけであることは間違いなく、多数のノードが存在し、ノードの数が増えると、必然的にブロードキャスト時間も長くなります。ブロードキャスト時間が長くなるということは、光円錐の外側の領域が大きくなることを意味し、孤立ブロックが比較的狭い範囲内で制御されるようにするために、ブロックの生成間隔も長くする必要があります。実際には、オーファン ブロック自体もセキュリティに影響を与えるため、たとえば、オーファン ブロック率が 20% の場合、攻撃を完了するのに必要なコンピューティング能力は 51% ではなく、41% だけです。したがって、セキュリティを向上させ、孤立ブロックを減らすには、ブロック間隔を長くする必要があります。たとえば、ビットコインは 10 分に設定されています。もちろん、この10分間がまったく変更できないわけではありませんが、変更後はセキュリティに多少の影響が出るのは間違いありません。
ブロック間隔が長くなるとシステム全体の効率が低下し、特にスループットに大きな影響を与えます。ここでシステム全体の帯域幅を見てみましょう. 実際、それは 3 つの部分に分けることができます: 帯域幅の一部 (青い部分) は、最終的に送信中に全員がコンセンサスに追加するトランザクションです。帯域幅 (赤い部分) は全員が送信しているトランザクションです プロトコル全体のオーバーヘッドを含む、コンセンサスに参加していない一部のデータ、および最終的にコンセンサスに追加されなかった無効なブロックやトランザクションである可能性のあるもの、最後の部分(白) は使用されずに無駄になった帯域幅です。シビル攻撃対策メカニズムとして PoW を使用し、最終的なコンセンサスを計算するために最長チェーン プロトコルを使用する場合、帯域幅の使用率は実際には非常に低くなります。
ビットコインを例にとると、600秒で1MBの有効ブロックが生成され、600秒で有効な1MBのブロックが得られることが期待されるので、このブロックを数回拡張しても、ネットワーク全体の600秒は有効に利用できる. 保存される情報量は20MB未満ではないでしょうか?しかし現在、ネットワークの平均速度はすでに 600 秒で数 GB に達しています。したがって、ネットワーク帯域幅全体の使用率はわずか 1% 程度であり、依然として無駄が深刻です。高密度ブロック技術など、放送速度を高速化する技術を使用すると、緑色の光の円錐の外側の領域の時間が短縮されます。このようにして、ブロック間隔を比例的に短縮し、以前と同じセキュリティを維持しながら帯域幅の使用率を向上させることもできます。しかし、このような改善があっても、最長のチェーンを使用し、孤立ブロック率を制御している限り、帯域幅の使用率は依然としてそれほど高くありません。一般に、パブリック チェーン ネットワークには数千、場合によっては数万のノードがあり、ブロードキャストする場合、平均して 10 以上の転送が必要になることがあります。例として、ブロックを生成したノードから開始して次のノードに送信し、次にノードがブロックを受信して検証してから次のノードに送信する、10 回の転送の必要性を考えると、このプロセスを繰り返す必要があります。十回。これら 10 回の転送の全プロセス内で、孤立ブロック率を削減したい場合は、ネットワーク全体の他のノードがこの期間中に 2 番目のブロックを生成しないようにするか、2 番目のブロック部分を生成する可能性が非常に低いようにする必要があります。 。つまり、これだけ長い時間、みんな実は1ブロックしか放送していないんです。 1人目から2人目に渡して、2人目から3人目に渡すとき、1人目はアイドル状態になりますよね?したがって、最終的な帯域幅使用率は当然高くありません。以前に比べて一定の改善はあるかもしれませんが、帯域幅全体を使い切るには程遠く、1/10 を使用できるのはすでに非常に良いことであると考えられます。
この場合、フォークを回避したい場合、必然的に帯域幅が満たされなくなり、帯域幅が満たされない場合は、TPS をそれほど高くすることはできません。一緒に同期するデータが非常に多いため、トランザクションのサイズが同じであれば、そこに配置できるトランザクションには上限があります (トランザクション サイズを減らすと TPS も向上しますが、他のすべてのブロックチェーンも同様に改善できます)同じテクノロジーを使用しても、相対的な欠点は変わりません)。
実際、今解決すべき問題は、フォークが発生した後は正直な計算能力が集中しなくなり、セキュリティが低下するということです。ただし、この解決策は、分岐の可能性を減らすための解決策が 1 つだけであることを意味するものではありません。たとえば、DAG ベースの有向非巡回グラフを使用して解決することもできます。
イーサリアムがフォークすることを選択した場合、最長のチェーンではなく GHOST プロトコルが使用されます。実際、イーサリアムはわずかに変更されたバージョンを使用しており、このプロトコルの中心的な考え方は、フォークに遭遇したときに最長のサブチェーンではなく、最も重いサブツリーを持つブランチを選択することです。この場合、フォークの有無やフォークの数は関係なく、セキュリティの問題は大きな問題にはなりません。なぜなら、フォークの誠実なマイナーであっても、以前の選択のセキュリティに依然として貢献するからです。たとえば、マイナーは後のブロックでフォークしていますが、マイナーはフォークの前のどこかでブランチを選択する方法のセキュリティに依然として貢献しています。これは、選択されるべきブランチのサブツリーの重みに寄与します。
Conflux は多少の繰り返しトランザクションは発生しますが、全帯域をフルに活用するため、その前提下では GHOST よりも実効帯域利用率がはるかに高く、システム全体のスループットを向上させることができます。比較すると、ビットコインの合計帯域幅使用率は非常に低い (約 1%) ため、たとえプロトコルのオーバーヘッドが軽減されたとしても、Conflux とのスループットの差は依然として非常に明らかです。
これらは PoW についての簡単な紹介です。次に Proof of Stake について見てみましょう。
副題
03 プルーフ・オブ・ステーク (PoS)
資本証明の基本的な考え方は、コイン (これをステークと呼ぶこともあります) を保有すると、簿記をする権利があり、その後投票する権利があるということです。投票権は保有するコインの数に正比例し、コイン 1 枚、投票 1 枚となります。簡単に言えば、お金が多ければ多いほど、投票する力も大きくなります。
PoS プロトコルの基本的な枠組みは、すべての参加者の通貨保有に応じてパッケージング権と議決権を分配することです。 PoS システムではパッケージングと投票が分離されていますが、PoW システムでは分離することもできますが、これら 2 つは実際には同じものです。パッケージ化権が割り当てられた後、パッケージ化権を取得した人は候補ブロックを作成する資格を持ちます。このブロックには処理されるトランザクションが含まれており、独自の署名があります。候補者ブロックは総意に追加されるわけではなく、候補者ブロックが放送された後、投票権を持つ人が投票する必要があります。
投票の形式は、投票されたブロックに署名を行うことです。投票後にさらに多くの票を獲得した後、候補ブロックは最終的にコンセンサスに追加され、有効なブロックになります。もちろん、投票プロセスはさまざまな方法で実装できますが、より一般的な方法は、少数派が多数派に従うコンセンサス アルゴリズムを使用することです。なぜなら、何人の人が投票資格を持ち、何票あるのかがわかっているため、このコンセンサス アルゴリズムを使用して過半数 (1/2 や 2/3 以上など) を簡単に計算できるからです。これは PoW とは大きく異なります。PoW システムでは、ネットワーク全体がどれだけのコンピューティング能力を持っているかが分からず、一般に正確ではない推定値のみに頼ることができるからです。したがって、PoW システムでは、何が多数であるかを判断するために特定のしきい値を使用することは不可能です。
分散型メカニズムでは、パッケージ化の責任者と投票の責任者を選出する必要があります。場合によっては、効率を高めるために、全員が最初に比較的小規模な委員会を選出し、その後、投票を担当することになります。プロキシ プルーフ オブ ステークの DPoS メカニズムではない場合、そのような委員会は通常、公平性を保つためにランダムに選択され、頻繁に交代します。
PoS システムでは、一部の参加者が PoS コンセンサスプロトコルに違反したことが検出された場合、罰せられる可能性があります。例えば、1 票で多くのブロックに投票したり、投票権はあるのに投票を拒否したりする人もおり、システムのセキュリティに影響を与える行為は処罰される可能性があります。
もう一度プルーフ・オブ・ステークの利点を見てみましょう。
1 つ目の利点は、マイナーとコイン所有者のインセンティブが同じであることです。すべての PoS マイナーはコインを保有する必要があり、コインを保有せずマイニングを機械に依存する生態環境全体における役割が減少します。 PoW コミュニティでは、富裕層、開発者、マイナーの利害が完全に一致しない状況がよくあり、その後口論が起こり、最終的には多くのことが困難になります。 PoSでは、少なくともマイナーと資本家の利益はより一致し、対立や相違はある程度減少するでしょう。
2 番目の利点は、PoS の遅延を非常に低くすることができ、確認を非常に高速に行うことができることです。 PoS システムでは、トランザクションを取得したらすぐにパッケージングすることができ、パッケージ化後にブロードキャストすることができるため、少なくとも 1 つの PoW 問題を待つ必要がある PoW とは異なり、この時間を待つ必要はありません。実際、PoS コンセンサスの遅延は主にネットワークと投票者の数によって制限されます。投票する人が多ければ多いほど、待たなければならない時間が長くなるからです。
3 番目の利点: PoS は作業証明を必要としないため、より環境に優しいです。投票は実際には署名であり、せいぜいいくつかの単純な計算が行われるだけですが、これは PoW 問題を解くよりもはるかに簡単です。
しかし、その欠点も上記に関連しており、PoW システムの利点の一部が失われます。
まず、PoS システムは、権限のない PoW システムに比べて、匿名性と権限がわずかに劣ります。なぜなら、私は個人として PoS システムに参加したいと思っており、そこで投票したい場合は、まずコインを保持する必要があるからです。他の手段でこの通貨を入手することは不可能です。すでに通貨を持っている人と取引する必要があります。彼らが私に通貨をくれた後、私は権利を持ちます。これは PoW とは異なり、マシンをシステムに接続している限り、コインを直接マイニングできます。
第二に、投票自体のコストは非常に低く、有効な投票を生成するには署名のみが必要です。この場合、セキュリティ上いくつかの問題が発生します。たとえば、PoS システムによくある無害な攻撃の問題です。
また、議決権は再利用・譲渡できるので良くありません。自分の秘密キーを他の人に販売した場合、以前に投じた投票、履歴の各分岐によって行われた選択、および現時点で私の秘密キーを取得した人が再度投票できます。以前の投票権を再利用できると、セキュリティ上の懸念がいくつか生じます。これについては、遠距離攻撃について詳しく説明します。
投票メカニズムによって引き起こされる問題もいくつかあります。先ほど、PoS コンセンサスの利点はすぐに確認できることとフォークできないことだと言いましたが、この非フォークの前提として、ほとんどのノードが正直であると仮定する必要があります。ここで、ノードの 2/3 以上が正直であると述べていますが、実際には、厳密に言えば、コインと投票権の 2/3 以上が正直な人の手に渡っている必要があり、悪い人はそれより少ないものを持っています。議決権の1/3以上。 ——こうすることで、3分の2以上の票を獲得したブロックについては、別のブロックに投票できる悪い人がいたとしても、署名していない残りの善良な人たちに加わり、全員が投票することになります。 2/3 を超えないこと。このようにして、十分なノード署名があり、システム全体のほとんどのノードが正直である限り、システムはまったくフォークせず、非常に迅速に実行でき、誰もがすぐにそれを確認します。たとえば、EOS では高速なブロック生成と高速な確認が実現されています。
しかし、PoS コンセンサスには新たな問題もいくつかあります。
1 つ目は、コミュニケーションの複雑さは有権者の数に関係しており、通常は 2 次の関係になるということです。投票する人が増えれば増えるほど、コミュニケーションは複雑になり、全員が待たなければならない時間が長くなります。これは、米国大統領を 1 人 1 票で選出したい場合、投票プロセス全体が非常に複雑で非常に時間がかかるのに対し、問題を決定するための政治局での投票は人数が少ないためはるかに迅速であるのと同じです。
また、PoS コンセンサスには、投票権の決定時刻が候補ブロックの生成よりも早いという、より本質的な問題もあります。このブロックができる前に、誰が投票権を持っているか、誰が投票権を持っていないのかがわかります。投票権の決定方法により、投票するという実際の決定とこの権利を行使する行為は別個のものであり、結び付けられるものではありません。私が投票権を持ったとき、誰に投票しなければならないかを他の誰も教えてくれませんでした。したがって、選挙権を取得した後は自由に投票することができ、投票行動によって選挙権があるかどうかが決まることはありません。しかし、この方法では、投票権の使用がより柔軟になり、より大きな戦略スペースを選択できることも意味し、ゲーム全体がより複雑になります。一般に、ポリシー空間が大きいと、攻撃者が活動する余地が増えるため、セキュリティにとって好ましくありません。誠実な人は通常、ルールに従うだけで、その都度行動を決定しますが、攻撃者の行動範囲が広い場合、攻撃者は多くのことを行うことができ、セキュリティを確保することがより困難になります。その結果、PoS システムには無害な攻撃や長距離攻撃など、より多くの攻撃手法が存在することになります。
では、なぜPoSシステムでは、PoWシステムのように最初にブロックを生成してから投票権を決定することができないのでしょうか?投票権に関して全員が確実に合意できるようにする必要があるからです。有権者がどの候補者ブロックに投票するとしても、誰が投票する資格があるのかを知らなければなりません。そうしないと、PoW と同様の状況に陥る可能性があります。これは、PoS システムではステーク グラインドと呼ばれます。これは、多くの新しいブロックを生成しようとするたびに、これらのブロックから最も有益なブロードキャストを選択して、終了することを意味します。このブロックが将来の議決権を決定します。ブロックが最初に作成され、投票権が後で決定されるということが事実であれば、フォークがいくつかの支部に分割され、各支部ブロックの後に親戚や友人のグループのような委員会が続くことになるかもしれません。親戚や友人のグループのこのブロックが正しいと言われています。しかし、各ブロックの背後にある親族や友人のグループが異なるため、どのように投票してもシステム全体の合意に達することはできません。
PoS コンセンサスにも問題があります。つまり、ほとんどのノードが誠実であると想定する必要があります。 「正直さ」は一般的に暗号学の分野でよく言及されます。しかし、ゲーム理論や経済学では、人が正直であると言えることはほとんどなく、むしろ人が合理的であると言われることはまれです。嘘をつくことでより多くのお金を稼げるのであれば、多くの人は嘘をつくことを選ぶでしょう。したがって、これらのノードが正直であると仮定すると、それは実際には非常に強力な仮定になります。それは、たとえ嘘をついたり悪事を働いてより多くのお金を稼ぐことができたとしても、彼らは依然として合意を遵守することを選択するだろうということを意味します。この点でも、具体的な合意内容と、それが合理的な仮定であるかどうかを知るためにどの程度の誠実さが求められるかを検討する必要があります。
PoS コンセンサスによってもたらされるこれらの新たな問題を解決する方法について話しましょう。
1 つ目は通信の複雑さの問題ですが、実際にはこれが最も簡単に解決できます。比較的小規模な委員会をランダムに選択し、これらの人々が代表者として投票する責任を負うことも、代理投票を使用することもできます。つまり、最初に私が投票して代表者 (EOS のスーパー ノードなど) を選出し、次にこれらの委員会を選出することもできます。人々は選挙で選ばれます。党の代表者が私の代わりに投票します。この利点は、ブロック コンセンサス投票に実際に参加する人の数が比較的少ないため、投票の複雑さを軽減できることです。実際には、人民会議、外国の議会、陪審はすべて同様の論理を使用しています。
では、どうやって攻撃に対抗すればいいのでしょうか? 1 つの方法は、ほとんどの人が正直であると仮定し、ネットワークの同期が非常に良好であると仮定することです。つまり、ブロックをブロードキャストした後、1 分または 30 秒などの一定の時間内にネットワーク全体が同期されていると仮定します。ノードはそれを受信できます。この前提の下では、合意を得るのは非常に簡単です。しかし、そのような仮定は実際には非常に強力であり、現実にそれを保証するのは簡単ではありません。ある攻撃の問題を解決したい場合、その攻撃が存在しないと直接仮定して問題を解決するのは、決して説得力のある方法ではありません。
PoS システムに対するより一般的な攻撃方法について説明します。
1 つ目は無関心な攻撃で、実際には 1 票以上です。 PoW システムで、マイナーがそのようなフォークを 2 つ見た場合、彼の計算能力は 1 つを追跡して掘ることしかできず、同時に 2 つを追跡することは不可能です。もちろん、2 つのブロックを同時に掘ることは不可能ではありませんが、各ブロックに割り当てられる計算能力を削減する必要があることを意味します。両側のマイニング能力の合計は固定値であるため、一般に誰かが掘削することはできません。やれ。 PoS システムでは異なります。左側にフォークが見えるので、彼に投票しますが、右側にフォークが見えるので、もう一度投票します。このようにして、どのフォークがコンセンサスと呼ばれても、投票の報酬を共有できます。そうすれば悪者も幸せになる。悪者は、私がとにかくフォークを実行すれば、合理的なマイナー全員が私に投票するだろう、それで私が残りの「それほど合理的ではない善良な人々よりももう少し多くの投票権を持っている限り、前のメインチェーンをロールバックできる」と言いました。 「負ける。これは非常に危険です。
無害な攻撃の場合、一般的な対立方法は、そのような複数投票の行為が検出されたら、この人にペナルティを課すというものです。実際に複数の票を投票した場合、他の人があなたの投票の情報を入手してチェーンに送信し、「この人は複数の票を投票したので、お金を差し引いてください」と言うことができます。しかし、この方法では、実際にはいくつかの問題が発生する可能性があります。つまり、両側で複数票を投票しても、最終的には片方だけが減点され、もう片方でより多くの利益が得られる可能性があります。
贈収賄攻撃もある。投票に関して言えば、参加者のほとんどは実際には合理的な人々に近いです。たとえば、あなたが 100 元を持っている場合、1 票の収入は 1 元ですが、私のブロックに投票する限り、2 元を差し上げますと言います。おそらく多くの人が私の提案を受け入れるでしょう。このようにして、悪者は非常に低コストで支店を支援するためにより多くの票を購入することができます。たとえば、資産 100 元に相当する議決権を 2 元で購入することができます。これは間違いなくセキュリティに影響を与えます。贈収賄問題にはすでにいくつかの解決策があり、完璧ではありませんが、かなり説得力があります。たとえば、アルゴランドが提案した解決策は、議決権の配分を非公開の乱数によって計算するというものです。有権者が投票権の証明を公開するまでは、誰が投票権を持っているかは誰にもわかりません。このようにすれば、少なくとも投票前に私に投票権があることを誰も知らなくなり、私に賄賂を渡すこともできなくなります。一般投票の後、アルゴランドの方式は、投票が完了するたびに委員会のメンバー全員を変更し、投票するグループを再選出することなので、私が投票する権利があることを他の人が知ったとき、私の投票はすでに投じられています。これを変更するために賄賂を渡す方法はありません。ここでは、コンセンサス参加者の誠実さに関する比較的高い仮定を示します。投票権を取得した後、インターネットにアクセスして、自分がどのラウンドの投票権を持っているか、誰かがお金を払うかどうかを尋ねるとは言えません。それのための。実際、誰かがこの件について大規模に質問した場合、コミュニティに発見されるのは実際には簡単で、誰かがこの種の攻撃を行っていることが誰もが知り、対応が容易になります。したがって、これは攻撃されるリスクを軽減する少なくとも 1 つの方法です。
もう 1 つは、長距離攻撃の安全性に関するものです。これは何て言います?つまり、A が作成ブロックのコインの 20% または株式の 20% を持っている場合、A は通常のブロックに投票できます。しかし、A はある時点でチェーン上のすべてのコインを売却する、つまり現金化して逃げることができます。今、彼は鎖につながれたお金を持っていません、そして将来、他人が彼を鎖につないで罰することは不可能です。このとき、彼は自分の秘密鍵を攻撃者に販売しました。攻撃者は、A、B、C、および多くの人の秘密鍵を取得する可能性があります。これらの秘密キーを取得した後、ジェネシス ブロック内のこれらの秘密キーの制御権は 50% を超え、場合によっては 80% を超える場合もあります。次に、攻撃者はこれらの秘密キーを取得し、悪意のあるブロックを作成し、A、B、および C をそれぞれ悪意のあるブロックを支持する 1 票に置き換えます。
多くの人が投票しているため、第三者の観点からは、このブロックと実際のメイン チェーン ブロックは同等に正当に見えます。悪者のチェーンが十分に長い場合、将来的に新しく参加する人は、2 つのチェーンがあり、それぞれが多くの人によって投票されていることがわかります。どちらを信じるべきでしょうか?この時点で、コンセンサスはすでに問題になっています。では、この攻撃にどう対処すればよいのでしょうか? 1 つの方法は、弱いアクティビティを保証することです。つまり、すべての正直なマイナーに、最新のステータスを同期するために少なくとも時々立ち上がって確認することを要求します。誰かがあなたの状態が間違っているので、1 年前の特定の状態からフォークする必要があると言った場合、ロールバック時間が長すぎるため、一般的にそのような提案は受け入れるべきではありません。
もう 1 つの方法は、デポジットをロックしてからロールバックの長さ制限を追加することです。これはイーサリアムの Casper PoS プロトコルでの設定です。投票資金を売却する必要がある場合は、可能ですが、しばらく待つ必要があります。この期間は、あなたが以前の投票権で投票しているのを見ても、他の人がそれを認めないほどの長さです。なぜなら、他の人々はずっと昔から法的連鎖に従ってきたからです。これがイーサリアムのソリューションです。
この点に対するアルゴランドの解決策は、あなたは正直なので、正直な人として、投票のたびに、現在の投票に使用された秘密鍵を削除する必要があるというもので、誰もこの秘密鍵を使って再び悪いことをすることはありません。この解決策は正しいですが、参加者の道徳レベルに比較的高い要求を課します。
PoS ベースのコンセンサス システムには他にもいくつかの問題があります。通常、小さな委員会を選択する場合、DPoS を使用しない場合は、PoS システムでランダムに選択する必要があります。 PoW 問題の解決自体には固有のランダム性があるため、PoW 投票のランダム性は主に分散並列マイニングにおける全員の運によってもたらされます。しかし、投票委員会を選択するためにランダム性を使用したい場合は、新しい問題を解決する必要があります。それは、公平な乱数をどのように生成するかということです。
公平な乱数を生成する方法も、暗号化分野で長年議論されてきた問題であり、それを解決するための比較的優れた解決策があります。この方式では完全に一様な乱数を生成することはできませんが、その偏差をある範囲内で制御することは可能です。一方で、完全に一様な乱数を生成することは非常に困難です。 2/3 を超えるコインがあれば、攻撃者はチェーン全体を完全に制御でき、生成される乱数も自由に選択できることがわかっているからです。したがって、67% のコインを持っていて、100% の乱数を制御できる場合、10% のコインで 11% の乱数を制御できることは、特に受け入れられないように思えます。実際、PoW に基づくビットコインにも同様の特性があり、たとえば、計算能力の 51% でチェーン上の収入の 100% を制御でき、実際の計算能力の割合よりも高い収入が得られます。これは非線形の関係ですが、大きく逸脱しない限り、一般に誰にとっても受け入れられます。
さらに、PoS コンセンサスに基づくシステムは、開始時にいくつかの問題を抱えます。プロジェクトが最初に開始されたときは、その資産の分散が最も分散されていないためです。ビットコインが最初に始まったときと同じように、サトシ・ナカモトはたくさんのコインを持っていたでしょう。 PoSシステムであれば、彼一人でシステム全体を完全にコントロールできる。初期段階にある他のプロジェクトの開発チームやいくつかの大規模な投資機関はすでにほとんどのコインを取得している可能性があり、PoS について発言する権利は非常に大きくなるでしょう。したがって、PoSパブリックチェーンをどのように開始するかも大きな問題です。より良い仕事をするために EOS が発売されるまでには長い時間がかかりました。したがって、この点に関して、私たちのチームは、少なくともプロジェクトが開始される時点では、PoS よりも PoW を使用する方がはるかに便利であると考えています。 PoW方式のみがライセンスフリーであり、初期通貨の発行時は比較的公平になります。
04 PoW VS. PoS
最後に、PoS は一部の違反をチェックし、チェーン上のこれらの人々を罰することができますが、攻撃者の利益がすべてチェーン上にあるわけではなく、チェーン外で別の利益を得ている可能性もあります。たとえば、イーサリアムへの攻撃を開始し、多額の ETH を失うという罰を受けましたが、同時に通貨の価格は下落する可能性が高く、別の市場で ETH を空売りすれば、より高いリターンを得ることができます。ショートすることで。この場合、チェーンの外側に動機があるため、チェーンに多額のお金を持っている一部の人々がチェーンを攻撃する動機を依然として持つことになります。これは、PoS にとって解決が難しい問題でもあります。
副題
最後に、PoW メカニズムと PoS メカニズムに基づくコンセンサスの比較を簡単に見ていきます。
1 つはアクセス メカニズムです。つまり、ライセンスがあるかどうか?投票は匿名ですか?参加者数に制限はありますか?投票は並行して行われますか、それとも放送で行われますか?投票結果を確認する別の方法はありますか?投票の限界費用?
1つはセキュリティです。 2 つの大きな違いは、投票権が先か、候補者ブロックが先かだと思います。投票行動と投票権には拘束力があるのか?これらの観点から、セキュリティの点では PoW の方が優れています。
ただし、PoW の投票結果は、ブランチの累積アドバンテージが確認できるほど大きくなるまで待つ必要があるため、実際には、ブロックを待つ代わりに、正直なコンピューティング能力がこのブロックに集中するまで待つ必要があります。確認するまでの一定期間。したがって、PoW システムはいくつかの最適化を通じて確認速度を可能な限り速くすることしかできませんが、一部の PoS のような 2 段階目の確認を実現することは困難です。
投票の限界コストに関して言えば、機械や電気代が必要となるため、PoW を避ける方法はありません。しかし、他の面では改善が進んでいます。対照的に、PoS はパフォーマンスの点で優れていますが、主にセキュリティの点で優れています。投票権を先に決めるので、この投票権を持って誰もが自由に投票できるからです。そして、一度投票した後は、この権利を使って再度投票することができます。 PoS のその他の問題点については、実は委員会や代理権の権利利益証明を活用することで軽減・解決できるのですが、議決権だけの問題は解決が困難です。投票権と投票行動が拘束されていないという問題は、PoS の本質的な問題です。
PoW の欠点は、確認が遅く、一般にスループットが比較的低いことです。 PoS の主な欠点は、贈収賄攻撃、長距離攻撃、無害な攻撃などのさまざまな攻撃手法にどのように対処するかです。これらの攻撃に対処するために、PoS プロトコルは多くの状況に対処する必要があるため、より複雑になります。ご存知のとおり、システムが複雑になればなるほど、セキュリティを確保することが難しくなり、分析や証明が難しくなる一方で、攻撃者にとって抜け穴が発見されやすくなります。複雑なシステムで。
現在はあまり使用されていないかもしれないもう 1 つの方法は、コンセンサスを得るために PoW と PoS を一緒に混合することです。 PoW の主な利点は安全性と信頼性であり、PoS の利点は高効率、特に迅速な確認、および比較的低いエネルギー消費であるためです。これら 2 つの利点を組み合わせることができれば、より理想的なコンセンサスプロトコルを設計することが可能になります。同時に、チェーン方式ではなく DAG 方式でブロックを整理することも検討できます。 DAG 方式はフォークを恐れないため、ブロック生成の速度を過度に制限する必要がなく、帯域幅が同期できる限り、誰でもより速くブロックを生成できます。
スループットが帯域やネットワーク容量の上限に達した場合、さらに容量を拡張したい場合は、別の面から頭を使う必要があります。比較的単純なアイデアは、第 2 層の拡張ソリューションを採用することです。各トランザクションは検証のためにネットワーク全体に送信されるべきではありません。たとえば、シャーディングと同様に、トランザクションはシャード内でローカルにのみ検証されます。これにより、ネットワークの帯域幅を節約できます。ネットワーク全体のスループットを向上させ、システム全体のスループットを向上させます。ライトニングネットワークも同様のロジックを使用します。別のより困難な方法では、検証可能な計算、短いゼロ知識証明、確率的検証可能な証明などの「ブラック テクノロジー」の使用が必要ですが、ここでは説明しません。