ヴィタリック・ブテリンの手書き: ブロックチェーン検証の哲学
編集者注: この記事は以下から引用しましたゴールデンファイナンス、許可を得てOdailyによって転載されました。
編集者注: この記事は以下から引用しました
ゴールデンファイナンス
イーサリアムの共同創設者であるヴィタリック・ブテリン氏は8月17日、自身のウェブサイトに「ブロックチェーン検証の哲学」という論文を発表した。ジンセ・ファイナンスはこの論文を次のようにまとめた。
なぜブロックチェーンを検証する必要があるのですか?
ブロックチェーンの最も強力な機能の 1 つは、ブロックチェーンの実行の各部分を個別に検証できることです。ブロックチェーンマイナー(またはプルーフオブステークブロックチェーンのバリデーター)の大部分が攻撃者に乗っ取られたとしても、その攻撃者が無効なブロックをプッシュしようとした場合、ネットワークはそれらのブロックを単純に拒否します。ユーザーが一定時間内にそれらのブロックを検証しなかった場合でも、自動的に警告が表示される可能性があり、攻撃者のブロックチェーンが無効かどうかを確認し、ルールに従ってチェーンを受け入れる前にそれらのブロックを自動的に拒否することができます。
しかし、実際にはどの程度の検証が必要なのでしょうか? 100 の独立したバリデータが必要ですか、それとも 1,000 の独立したバリデータが必要ですか?世界中のすべての普通の人がソフトウェアを実行してすべての取引をチェックする文化が必要でしょうか? 「サトシ・ナカモト」によって最初に作成された単一のプルーフ・オブ・ワーク・チェーンよりも優れたコンセンサス・メカニズムを備えたブロックチェーンを構築したい場合、上記の問題を解決することは非常に重要な課題になります。
副題
なぜブロックチェーンを検証する必要があるのですか?
ブロックチェーンの検証は、次の 2 つの主な理由からユーザーにとって非常に有益です。
1. まず第一に、ブロックチェーンを検証することで、ノードが正規チェーン上で発言することを正しく決定できる可能性が最大化されます。そのチェーンをサポートするマイナー/バリデーターが最も多い有効なブロックチェーン」 (例: ビットコインの「最長の有効なチェーン」)。無効なチェーンは定義上拒否され、複数の有効なチェーンの間で選択が行われた場合、マイナー/バリデーターからのサポートが最も多いチェーンが勝ちます。したがって、すべての有効性条件を検証して、どのチェーンが有効でどのチェーンが無効であるかを検出できるノードがある場合、正規チェーンを正しく検出できる可能性が最大になります。
2. 第 2 に、ブロックチェーンの有効性を検証するさらに深い理由があります。強力な攻撃者がプロトコルの変更 (トークン発行の変更など) をプッシュしようとしており、他に誰もサポートしていない場合、大多数のマイナーによってサポートされていると仮定します。ブロックチェーンを検証すると、すべてのクライアントがデフォルトで新しいチェーンを受け入れ、人々が何が起こっているかを見ると、反体制派がそのチェーンの拒否を調整しようとするため、この攻撃は簡単に成功します。ただし、一般のユーザーが検証している場合、調整の問題は反対側にあります。契約を変更しようとする人は、契約に同意するためにソフトウェア パッチを積極的にダウンロードするようユーザーを説得する責任があります。
十分な数のユーザーが検証を行っていれば、プロトコルへの強制的な変更に関する不必要な混乱や論争は避けられます。混乱は多大な損害を引き起こす可能性があり、それを解決するにはアウトオブバンドの社会的調整が必要であり、攻撃する動機がありません。大多数のユーザーが (直接または間接的に) 検証しており、攻撃が大多数のマイナーによってのみサポートされている場合、攻撃は完全にデフォルトで失敗し、すべての結果の中で最良の結果となります。
副題
視点の定義と視点の調整
以下の画像は、Gavin Andresen の「定義による」ビューの例です。ビットコインWasabi ウォレットからの別の視点は、フル ノードが価値がある理由を説明するという観点からより簡単です。
このビューには 2 つの主要な部分があることに注意してください。
1. 定義上、基本的で譲渡不可能なルールであると考えられるものを受け入れないバージョンのチェーンは、
ビットコイン
(またはイーサリアムやその他のブロックチェーン)、他の人がどれだけ多くのブロックチェーンを受け入れたかに関係なく。
2. 重要なことは、許容できると思われるチェーン上のルールを守らなければならないということです。
しかし、私はこの「個人主義的」な見方は非常に間違っていると考えています。その理由を知るために、私たちが懸念している状況を見てみましょう。大多数の参加者は、あなたが受け入れられないと考えているプロトコルのルールへの何らかの変更を受け入れる可能性があります。例として、取引手数料が低く、ブロックチェーンの安全性を保つために発行を増やす新しいルールセットに変更することにほぼ全員が同意しているのに、あなたは頑なに実行し続けるノードを実行し続ける未来があると想像してください。古いルールと、大部分のノードとは異なるチェーンへのフォーク。
あなた自身の観点から見ると、許容可能な古いルールの下で動作するシステムにトークンを置くことができます。でも、だから何?他のユーザーはあなたのトークンをまったく受け入れませんし、取引所もあなたのトークンを受け入れません。価格ウェブサイトにはトークンの価格が記載されていますが、そのデータソースは間違いなく多数派チェーン上のトークンを指しているため、トークンは無価値になります。暗号通貨とブロックチェーンは基本的に社会構造であり、誰も信じなければ意味がありません。
では、別の見方とは何でしょうか?ここで提示される中心的なアイデアは、調整問題を通じてブロックチェーンをエンジニアリング セキュリティとして見ることです。
通常、私たちの世界で起こる調整の問題のほとんどは悪いことです。いくつかの例を次に示します。
2. 米国がメートル法に切り替えたほうが良いのではないかと考える人もいます。
3. 景気後退の際に直ちにすべての物価と賃金を 10% 引き下げれば国は乗り切れるだろうが、それには全員の同意が必要であり、通常は達成が非常に難しいと考える人もいる。
しかし、ブロックチェーンアプリケーションでは、調整の問題を有利に利用し、調整の問題によって生じる摩擦を利用して、中央集権的な執行者の不正行為に抵抗します。別の例として、プロパティ X を持つシステムを構築すると、システムが常にプロパティ X を保持することを保証できますが、ルールを X から not-X に変更するには、多数の人が同時にソフトウェアを更新することに同意する必要があります。 。執行者が変更を強制したとしても、それは非常に困難であり、変更に抵抗する反対者を調整する責任をユーザーが負う場合よりもはるかに困難です。
この観点には特別な結果があることに注意してください: フル ノードの主な目的はユーザーを保護することだけではなく、ハード フォークの議論が発生した場合、フル ノードを持つ人々はフル ノードを持たない人々よりも安全です。 。むしろ、ここでの考え方は、集団免疫の観点、すなわち、検証する人が多ければ多いほど、全員の安全性が高まり、たとえ一部の人だけが検証したとしても、その結果、全員が個人となるという考え方です。より高度な保護が与えられます。
副題
さて、次のトピックに進みます。これは、ライト クライアントやシャーディングなどのトピックに非常に関連しています。検証では、何を達成するのでしょうか?これを理解するために、以前に戻ってみましょう。ブロックチェーン上で攻撃が発生した場合、攻撃の発生方法には次の優先順位がある可能性があります。
デフォルトで失敗 > デフォルトで混乱 > デフォルトで勝利
ここでの「>」は「より良い」を意味します。良くても攻撃は完全に失敗しますが、次に良くても攻撃が混乱を引き起こし、正しい連鎖について全員の意見が一致せず、最悪の場合は攻撃が成功します。ここでの疑問は、なぜ勝利よりも混乱のほうがはるかに優れているのかということです。実際、これは動機の問題です。つまり、混乱により攻撃者のコストが増加します。これは、攻撃者が確実に勝つ確率が大幅に減少することを意味するため、攻撃者はそもそも攻撃することを奨励されません。デフォルトで混沌とした環境は、攻撃者がブロックチェーン戦争で 51% 攻撃に勝つ必要があるだけでなく、この「社会戦争」に従うようコミュニティを説得する必要があることを意味します。これは、単に 51% 攻撃を開始して勝利するよりもはるかに困難です。純粋な攻撃 あまり魅力的ではありません。
検証の目標は、デフォルトの状態から勝利から混乱 (理想的には)、および混乱から失敗 (理想的ではない) に移行することです。完全に検証しているノードがあり、攻撃者が異なるルールでチェーンをプッシュしようとした場合、攻撃は失敗します。一部の人が完全に検証したノードを持っていて、他の人が持っていない場合、攻撃により混乱が生じる可能性があります。しかし、ここで別の質問、つまり、同じ効果を達成する他の方法はあるのか、ということを考えなければなりません。
副題
ライトクライアントと不正行為の防止
この方向で自然に発展するのは、不正行為の証拠を備えたライトクライアントです。現在市場に出回っているほとんどのブロックチェーン ライト クライアントは、他のプロトコル ルールが適用されているかどうかをわざわざチェックすることなく、マイナーの大多数が特定のブロックをサポートしていることを確認するだけで機能します。つまり、クライアントは、ほとんどのマイナーが正直であるという信頼を前提として動作します。論争のあるフォークが発生した場合、クライアントはデフォルトで多数派チェーンに従い、古いルールに従いたい場合は、ユーザー自身が積極的な措置を講じることができます。したがって、今日攻撃を受けているライトクライアントはデフォルトで勝ちます。しかし、詐欺防止テクノロジーの登場により、状況は大きく変わり始めています。
上の図に示すように、ブロックチェーン内の個々のブロックは少数のアカウントのみを参照します。不正行為の証拠には、これらのアカウントのデータと、このデータが正しいことを示すマークル証明が含まれます。
断片化
この手法はステートレス検証と呼ばれることもあります。クライアントは完全なブロックチェーン状態データベースではなくブロック ヘッダーのみを保持でき、他のノードに任意の状態のマークル証明を要求することで、任意のブロックをリアルタイムで検証できます。ブロック検証のエントリにもアクセスできます。
この手法の利点は、ライト クライアントがアラートを聞いたときにのみスタンドアロン ブロックを検証することです (アラートは検証可能であるため、ライト クライアントが誤ったアラートを聞いた場合は、そのノードのアラートのリスニングを停止するだけで済みます)。したがって、通常の状況では、ライトクライアントは依然としてライトクライアントであり、大多数のマイナー/バリデーターによってどのブロックがサポートされているかを確認するだけです。ただし、多数派チェーンにブロックを受け入れないライト クライアントが含まれている場合など、特殊な状況下では、不正なブロックを検証する誠実なノードが存在する限り、そのノードはブロックが無効であると判断します。この A ノードが不正行為の証拠をブロードキャストし、ネットワーク内の他のノードがそれを拒否するためです。
副題
断片化
シャーディングは、ネットワーク検証の自然な拡張と考えることができます。シャーディング システムでは、システム内にトランザクションが多すぎて、ほとんどの場合、直接検証を維持できませんが、システムが適切に設計されていれば、無効なトランザクションは検出できます。個々のブロック、およびこの無効性は、多くの場合、ネットワーク全体に伝播する可能性のある不正行為の証拠を伴います。共有ネットワークは、あたかも全員がライト クライアントであるかのように考えることができ、各シャードに特定の最小しきい値の参加者がいる限り、ネットワークには集団免疫があります。
これは、現実世界における監査可能性が通常意味するものです。誰もが常にすべてを検証しているわけではありませんが、次のことを意味します。
(i) それぞれの特定の部品には、エラーがある場合にそれを発見できる十分な目がある。
(ii) エラーが検出された場合、それが全員に明確に見えることが保証されます。
とはいえ、ブロックチェーンは長期的には確かにこれを改善することができます。特定の改善源の 1 つは、ZK-SNARK (または「有効性の証明」) です。これは、ブロックが任意の複雑な有効性条件を満たしていることをブロック作成者がクライアントに証明できる、有効な検証の暗号化証明です。正当性証明は、不正行為を検出するためにインタラクティブなゲームに依存しないため、不正行為証明よりも強力です。もう 1 つの重要な手法は、完全に公開されていないデータがブロックによって実行されるのを防ぐデータ可用性チェックです。ただし、データの可用性チェックは、ネットワークのどこかに少なくとも少数の誠実なノードが存在するという非常に保守的な仮定に基づいています。幸いなことに、たとえネットワーク内に誠実なノードが存在しても、常に誠実なノードが存在します。多数の攻撃者。
副題


