リスク警告:「仮想通貨」「ブロックチェーン」の名のもとでの違法な資金調達のリスクに注意してください。—銀行保険監督管理委員会など5部門
検索
ログイン
简中
繁中
English
日本語
한국어
ภาษาไทย
Tiếng Việt
BTC
ETH
HTX
SOL
BNB
View Market

Vitalik Buterin: シャーディングの技術的特徴をわかりやすく解説

ChinaDeFi
特邀专栏作者
2022-08-30 13:30
この記事は約8076文字で、全文を読むには約12分かかります
シャーディングはどのような具体的なプロパティを提供しますか?また、シャーディング以外の他のテクノロジーとの違いは何ですか?

原作者: ヴィタリック・ブテリン

出典: ハッカーヌーン

オリジナル編集: ChinaDeFi

シャーディングはイーサリアムのスケーラビリティの未来であり、エコシステムが毎秒数千のトランザクションをサポートする上で鍵となります。また、シャーディングにより、世界の大部分が手頃なコストで定期的にプラットフォームを使用できるようになります。ただし、これはイーサリアム エコシステムやより広範なブロックチェーン エコシステムにおいて最も誤解されている概念の 1 つでもあります。これは、非常に特殊な特性を持つ一連のアイデアを指しますが、現在では、セキュリティ特性が弱いテクノロジと結合されることがよくあります。この投稿の目的は、シャーディングが提供する特定のプロパティ、他の非シャーディング テクノロジとの違い、およびこれらのプロパティを実現するためにシャーディング システムが何を犠牲にしなければならないかを説明することです。

イーサリアムのシャード バージョンに関する多くの説明のうちの 1 つ。 Hsiao-wei Wang による原画、Quantstamp によるデザイン。

最初のレベルのタイトル

スケーラビリティのトリレンマ

シャーディングを説明する最良の方法は、解決策を計画し、インスピレーションを与える問題ステートメント、つまりスケーラビリティのトリレンマから始める必要があります。

  • スケーラビリティのトリレンマでは、ブロックチェーンは 3 つの特性を備えようとし、「単純な」テクノロジーに固執すると、これら 3 つのうち 2 つしか実現できないと述べています。これら 3 つの属性は次のとおりです。

  • スケーラビリティ: チェーンは、単一の通常のノードが検証できるよりも多くのトランザクションを処理できます。

  • 分散化: チェーンは、集中化された大規模なアクターの小さなグループに依存することなく機能できます。これは通常、通常のラップトップでノードのグループに参加できない場合、そのノードを信頼すべきではないことを意味すると解釈されます。

セキュリティ: チェーンは、参加ノードに対するほとんどの攻撃に耐性があります。 (理想的には 50%、25% 以上は問題ありませんが、5% は絶対にダメです)。

  • ここで、「簡単な解決策」の 3 つのカテゴリを見てみましょう。通常、そのうちの 2 つだけが利用可能です。

  • 従来のブロックチェーン: ビットコイン、PoS 以前/シャード化されたイーサリアム、ライトコイン、およびその他の同様のチェーンを含みます。各トランザクションを検証するためにフルノードを実行する各参加者に依存しているため、分散型で安全ですが、スケーラブルではありません。

  • 高 TPS チェーン: DPoS ファミリを含みますが、他の多くのチェーンも同様です。これらは相互間の合意を維持するために少数のノード (通常は 10 ~ 100) に依存しており、ユーザーはそれらの過半数を信頼する必要があります。これはスケーラブルで安全ですが、分散化されていません。

マルチチェーン エコシステム: これは、異なるチェーン上で異なるアプリケーションを実行し、クロスチェーン通信プロトコルを使用してそれらの間で通信することによる、「水平スケーリング」の一般的な概念を指します。これは分散型でスケーラブルですが、攻撃者は多くのチェーンの 1 つでコンセンサス ノードの大部分を取得するだけでそのチェーンを破壊し、連鎖反応を引き起こして他のチェーンのアプリケーションに影響を与える可能性があるため、安全ではありません。また、大きな損害を引き起こす可能性もあります。 。

  • シャーディングは、3 つのニーズすべてを同時に満たすことができるテクノロジーです。シャーディングされたブロックチェーンは次のとおりです。

  • スケーラブル: 単一ノードよりも多くのトランザクションを処理できます。

  • 分散化: 「スーパー ノード」に依存せずに、通常のラップトップ上で完全に「生き残る」ことができます。

この記事の残りの部分では、シャード化されたブロックチェーンがこれをどのように行うかについて説明します。

最初のレベルのタイトル

ランダムサンプリングによるシャーディング

最もわかりやすいシャーディングは、ランダム サンプリングによるシャーディングです。ランダム サンプリングによるシャーディングは、イーサリアム エコシステムで構築したシャーディング形式よりも信頼特性が弱いですが、より単純な手法を使用します。

その核となる考え方は次のとおりです。多数 (たとえば 10,000) のバリデーターと、同時に検証される多数 (たとえば 100) のブロックを備えたプルーフ・オブ・ステーク チェーンがあるとします。次のブロックのセットが到着する前に、これらのブロックすべてを検証できるほど強力なコンピューターは 1 台もありません。

そこで私たちが行うのは、検証作業をランダムに分割することです。バリデータ リストをランダムにシャッフルし、スクランブル リストの最初の 100 バリデータに最初のブロックを検証させ、スクランブル リストの最後の 100 バリデータに 2 番目のブロックを検証させます。ブロックを検証する (または他のタスクを実行する) ためにランダムに選択されるこのバリデーターのグループは、委員会と呼ばれます。

バリデーターはブロックを検証するときに、検証を行ったことを証明する署名を発行します。他の人は、100 個の完全なブロックを検証するのではなく、10,000 個の署名のみを検証するだけになり、特に BLS 署名集約の場合は作業が大幅に軽減されます。同じ P2P ネットワーク上でブロードキャストする代わりに、各ブロックは異なるサブネット上でブロードキャストされ、ノードは担当する (または他の理由で関心のある) ブロックに対応するサブネットに参加するだけで済みます。

何が起こっているのかを説明するために、いくつかの数学用語を紹介します。 Big O 表記法を使用して、単一ノードの計算能力を「O(C)」で表します。従来のブロックチェーンは O(C) サイズのブロックを処理できます。前述したように、シャード チェーンは O(C) ブロックを並列処理できます (各ノードが固定数の署名のみを検証する必要があるため、各ブロックを間接的に検証する各ノードのコストは O(1) です)。ブロックは O(C) であるため、シャード チェーンの総容量は O(C2) です。これが、このタイプのシャーディングをセカンダリ シャーディングと呼ぶ理由であり、この効果が、シャーディングが長期的にブロックチェーンを拡張する最良の方法であると信じる主な理由です。

最初のレベルのタイトル

FAQ: 100 の委員会に分割することと、100 の個別のチェーンに分割することの違いは何ですか?

  • 重要な違いは 2 つあります。

  • ランダム サンプリングにより、攻撃者が 1 つのシャードに火力を集中することを防ぎます。 100 チェーンのマルチチェーン エコシステムでは、攻撃者が損害を与えるために必要なのは総ステークの約 0.5% だけです。シャード化されたブロックチェーンでは、攻撃者が同じことを行うには、全体のステークの 30 ~ 40% 近くを所有する必要があります (言い換えれば、チェーンはセキュリティを共有しています)。もちろん、幸運にシャードの 51% をランダムに取得できるまで待つこともできます。たとえ所有権が総ステークの 50% 未満であっても、51% よりはるかに少ない所有権を持つ攻撃者にとってはこれが倍増します。攻撃者の割合が 30% 未満の場合、これはほぼ不可能です。

これらの違いにより、シャーディングにより、シングルチェーン環境の主要なセキュリティ特性を維持するアプリケーション環境が確実に作成されますが、これはマルチチェーン エコシステムでは不可能です。

最初のレベルのタイトル

より優れたセキュリティ モデルでシャーディングを改善する

ビットコイン界の一般的な意見であり、私も完全に同意しますが、ビットコイン(またはイーサリアム)のようなブロックチェーンは正直な多数派の仮定に完全には依存していないということです。このようなブロックチェーンに 51% 攻撃が行われた場合、攻撃者はトランザクションの取り消しや検閲などの厄介な行為を行うことができますが、無効なトランザクションを挿入することはできません。トランザクションを元に戻したり検閲したりしたとしても、この動作は通常のノードを実行しているユーザーによって簡単に検出できるため、コミュニティがフォークして攻撃の解決策を調整し、攻撃者の力を排除したい場合は、この時点ですぐに実行できます。 。

理想的には、51% の有効性の信頼仮定を回避し、従来のブロックチェーンが完全な検証を通じて達成する強力なセキュリティ障壁を維持する形式のシャーディングを実現したいと考えています。そして、それがまさに私たちが過去数年間に行ってきた研究のほとんどです。

最初のレベルのタイトル

スケーラブルな計算検証

  • 51% の攻撃耐性というスケーラブルな検証の問題は、次の 2 つのケースに分解できます。

  • 計算を検証する: 計算の入力がすべて揃っていると仮定して、特定の計算が正しく行われていることを確認します。

データの可用性を検証する: 計算入力自体が何らかの形式で保存されていること、および本当に必要な場合にダウンロードできることを確認します。この確認は、入力自体全体を実際にダウンロードせずに実行する必要があります (データが大きすぎてすべてのブロックをダウンロードできない可能性があるため) )。

ブロックチェーン内のブロックを検証する場合、これには計算とデータの可用性チェックが含まれます。ブロック内のトランザクションが有効であること、およびブロック内で宣言された新しい状態ルート ハッシュがそれらのトランザクションを実行した正しい結果であることを確信する必要があります。しかし、そのデータをダウンロードしたユーザーが状態を計算してブロックチェーンでの作業を続行できるように、十分なデータがブロック内に公開されていることを確信する必要もあります。 2 番目の部分は、データ可用性問題と呼ばれる非常に微妙ですが非常に重要な概念です。これについては後で詳しく説明します。

スケーラブルな検証計算は比較的簡単で、不正証明と ZK-SNARK の 2 種類の手法があります。

  • 両方のテクニックは次のように簡単に説明できます。

  • 不正証明とは、計算の結果を受け入れ、保証金を預けている人に「入力 X で計算 C を実行すると、出力 Y が得られることを証明します」というメッセージに署名することを要求するシステムです。デフォルトでは、私たちはこれらのメッセージを信頼しますが、デポジットを賭けている他の人にも異議を申し立てる機会を与えます(「同意しません、出力は Z です」という署名付きのメッセージ)。すべてのノードは、チャレンジされた場合にのみ計算を実行します。両者のいずれかが間違いを犯した場合、デポジットは失われ、その計算結果に応じてすべての計算が再計算されます。

ZK-SNARK は、「入力 X に対して計算 C を実行すると出力 Y が得られる」というステートメントを直接証明する暗号証明の形式です。この証明は暗号的に「健全」です。C(x) が Y に等しくない場合、効率的な証明を行うことは計算上不可能です。 C の実行自体には時間がかかりますが、証明はすぐに検証できます。

すべてのノードがすべてのデータを検証する必要がある一方で、計算のみのスケーラブルな検証を行う、セミスケーラブルなシステムのクラスがあります。これは、一連の圧縮トリックを使用してほとんどのデータを計算に置き換えることによって実現できます。これはロールアップの領域です。

最初のレベルのタイトル

データの可用性をスケーラブルに検証することはさらに困難です

データの可用性を検証するために不正行為の証拠を使用することはできません。計算上の不正証明は、計算への入力が元の請求が提出された瞬間にオンチェーンで公開されるという事実に依存しているため、異議が申し立てられた場合、最初の実行とまったく同じ「環境」で異議の実行が行われます。発生しました。データの可用性をチェックする場合、オンチェーンに投稿するにはチェックすべきデータが多すぎることが問題となるため、それはできません。したがって、データの可用性に関する不正防止スキームは、重大な問題に遭遇します。誰かが「データ X は利用可能である」と主張しても、それを公開せず、異議申し立てを待ってからデータ X を公開すると、異議申し立て者にはそれが真実ではないように見えます。ネットワークの残りの部分。正しいです。

これを漁師のジレンマで拡張すると次のようになります。

誰が正しくて誰が間違っているかを見分ける方法がないという事実により、効果的なデータ可用性詐欺防止スキームを構築することが不可能になります。

最初のレベルのタイトル

FAQ: 一部のデータが利用できない場合はどうすればよいですか? ZK-SNARK を使用すると、すべてが有効であることを確認できます。それだけで十分ではありませんか?

この問題は根本的なものであり、それを解決するための巧妙なトリックは存在しないという強力な情報理論的議論がいくつかあります。

最初のレベルのタイトル

では、ダウンロードせずに 1 MB のデータが利用可能かどうかを確認するにはどうすればよいでしょうか?それは不可能に思えます!

  • 鍵となるのは、データ可用性サンプリングと呼ばれる手法です。データ可用性のサンプリングは次のように機能します。

  • イレイジャーコーディングと呼ばれるツールを使用して、N ブロックのデータを 2N ブロックのデータに拡張し、その中の任意の N ブロックでデータ全体を復元できます。

可用性を確認するには、データ全体をダウンロードしようとするのではなく、ユーザーはブロック内の固定数の場所 (例: 30 個の場所) をランダムに選択するだけで、選択したすべての場所でブロック内のブロックが正常に見つかった場合にのみ、ブロックは受け付けます。

ZK-SNARK を使用してデータの消失符号化が正しいかどうかを検証し、マークル ブランチを使用して個々のブロックを検証できます。あるいは、多項式コミットメント (例: Kate (別名 KZG) コミットメント) を使用することもできます。これは基本的に、消去コーディング、単一要素の証明、および正しさの検証を 1 つの単純なコンポーネントで実行します。これがイーサリアム シャーディングで使用されるものです。

最初のレベルのタイトル

復習: すべてが正しいことを再度確認するにはどうすればよいでしょうか?

  • 100 個のブロックがあり、委員会に頼らずにすべてのブロックの正しさを効率的に検証したいとします。次のことを行う必要があります。

  • 各クライアントは、ブロックごとにデータ可用性サンプリングを実行し、各ブロック内のデータが利用可能であることを確認します。ブロック全体のサイズが 1 メガバイト以上であっても、各ブロックをダウンロードする必要があるのは数千バイトだけです。クライアントは、可用性チャレンジに対するすべてのデータが正しく応答された場合にのみブロックを受け入れます。

データの可用性を確認したので、正確性を確認するのが簡単になります。次の 2 つの方法があります。

1. ZK-SNARKを使用できます。各ブロックには、正確さを証明するための ZK-SNARK があります。

  • 2. 不正行為の証明を使用できます。入金を約束した一部の参加者は、各ブロックの正当性を署名できます。チャレンジャー (またはフィッシャーマン) と呼ばれる他のノードは、ブロックをランダムにチェックして完全に処理しようとします。データの可用性を確認したため、データをダウンロードして特定のブロックを完全に処理することが可能です。無効なブロックが見つかった場合は、全員が検証するチャレンジを発行します。ブロックが壊れていることが判明した場合は、そのブロックとそれに依存する将来のすべてのブロックを再計算する必要があります。

イーサリアム シャーディングの場合、短期的な計画では、シャード ブロックにはデータのみが含まれるようになります。つまり、シャーディングは純粋に「データ可用性エンジン」であり、この安全なデータ スペースを不正証明や ZK-SNARK とともに使用して高いパフォーマンスを実現します。スループットの安全なトランザクション処理機能は、レイヤー 2 ロールアップの役割です。ただし、このような組み込みシステムを作成して、「ネイティブ」の高スループット実行を追加することは完全に可能です。

最初のレベルのタイトル

シャーディング システムの主な特性は何ですか?妥協点は何ですか?

シャーディングの主な目標は、従来の (シャーディングされていない) ブロックチェーンの最も重要なセキュリティ特性を可能な限り厳密に複製することですが、すべてのノードがすべてのトランザクションを個人的に検証する必要はありません。

  • 破片は非常に近いです。従来のブロックチェーンでは次のようになります。

  • 無効なブロックは、バリデーターが無効であることに気づき無視するため、通過できません。

利用できないブロックは、バリデーターがブロックをダウンロードできず、無視するため、通過できません。

  • 高度なセキュリティ機能を備えたシャード化されたブロックチェーンでは、次のことが可能です。

    次の理由により、無効なブロックは通過できません。

    不正行為の証拠はすぐにそれらを捕らえ、ネットワーク全体にブロックの不正確さを知らせ、作成者を厳しく罰します。

  • ZK-SNARK は正しさを証明しますが、無効なブロックに対して有効な ZK-SNARK を作成することはできません。

    次の理由により、使用できないブロックは通過できません。

    ブロックに含まれる利用可能なデータが 50% 未満の場合、クライアントごとに少なくとも 1 つのデータ利用可能性サンプル チェックがほぼ確実に失敗し、クライアントがブロックを拒否することになります。

ブロック内のデータの少なくとも 50% が利用可能であれば、ブロックの残りの部分を再構築するために必要な正直なノードが 1 つだけであるため、実質的にブロック全体が利用可能になります。

シャーディングのない従来の高 TPS チェーンでは、これらの保証を提供できません。マルチチェーンエコシステムは、攻撃者が攻撃するチェーンを選択し、それを簡単に乗っ取るという問題を避けることはできません (チェーンはセキュリティを共有できますが、これがうまく行われない場合、あらゆる欠点を伴う事実上の伝統的な高 TPS チェーンになってしまいます)。うまくできれば、上記のシャーディング技術をより複雑に実装するだけになります)。

サイドチェーンは実装に大きく依存しますが、多くの場合、従来の高 TPS チェーン (マイナー/バリデーターを共有する場合) またはマルチチェーン エコシステム (マイナー/バリデーターを共有しない場合) の弱点に対して脆弱です。シャード チェーンを使用すると、これらの問題を回避できます。

  • ただし、シャーディングシステムの装甲にはいくつかの亀裂があります。次の点に注意してください。

  • 委員会のみに依存するシャード チェーンは、適応的な敵対者に対して脆弱であり、説明責任も弱くなります。つまり、敵対者が選択したノードのセットをリアルタイムでハッキング (またはシャットダウン) できる場合、委員会を混乱させるにはノードの小さなサブセットを攻撃するだけで済みます。さらに、敵対者(適応的な敵対者であろうと、単なる 50% の攻撃者であろうと)が委員会を汚職した場合、罰せられるのはほんの一部だけです。これは、データ可用性サンプリングが、不正証明や ZK-SNARK と同様に、ランダム サンプリング手法への優れた追加であるもう 1 つの重要な理由です。

  • データ可用性サンプリングは、十分な数のオンライン クライアントが集合的に十分なデータ可用性サンプリング要求を発行し、その応答がほぼ常に重複してブロックの少なくとも 50% を占める場合にのみ安全です。実際には、これは数百のクライアントがオンラインに存在する必要があることを意味します (この数は、システム容量と個々のノードの容量の比率に応じて増加します)。これは、n 個の少数派の信頼モデルです。一般的には非常に信頼できますが、非シャード チェーンのノードに対する 0 対 n の信頼ほど信頼できるわけではありません。

  • シャード チェーンが不正の証明に依存する場合、タイミングの仮定に依存することになります。ネットワークが遅すぎると、不正防止プログラムが表示されてそれが間違っていることが示される前に、ノードが最終的なブロックを受け入れる可能性があります。幸いなことに、無効なブロックが見つかったらすべて元に戻すという厳密なルールに従えば、このしきい値はユーザーが設定したパラメーターになります。各ユーザーは、最終結果を待つ時間を選択し、十分に待ちたくない場合は選択します。長期間にわたって損失が発生するため、より慎重なユーザーは安全を確保できます。それでも、これはユーザーエクスペリエンスを損ないます。 ZK-SNARK を使用して妥当性を検証すると、この問題が解決されます。

  • 大量の生データを渡す必要があるため、極端なネットワーク条件下では障害のリスクが高まります。少量のデータは、大量のデータよりも送信が簡単です。ブロック エクスプローラーがチェーン全体を保存したい場合は、さらに多くのデータを保存する必要があります。

シャード化されたブロックチェーンはシャード化されたピアツーピア ネットワークに依存しており、各 p2p 「サブネット」はノード数が少ないため、攻撃に対してより脆弱になります。データ可用性サンプリングのサブネットワーク モデルでは、サブネットワーク間にある程度の冗長性があるため、この問題は軽減されますが、依然としてリスクは存在します。

ちなみに、シャーディングされたブロックチェーンのスループットが高くなりすぎると、そのセキュリティ リスクが大きくなり、これが超 2 次シャーディングへの拡張の取り組みがほとんど放棄されてきた主な理由です。2 次シャーディングを維持することは、2 次シャーディングが重要であるというだけのようです。素敵な妥協案。

最初のレベルのタイトル

本番環境とシャードの検証を一元化してみませんか?

シャーディングの代替案としてよく提案されるのは、有効性と可用性を検証するためにデータ可用性のサンプリングとシャーディングを使用する点を除き、集中型の高 TPS チェーンと同様の構造を持つチェーンを構築することです。

  • これにより、現在存在する集中型の高 TPS チェーンが改善されますが、それでもシャード システムよりもはるかに弱いです。これにはいくつかの理由があります。

  • 高 TPS チェーンでは、ブロックプロデューサーの検閲を検出するのは困難です。検閲の検出には、(i) すべてのトランザクションを調べて、明らかに入力する価値があるが入力できないトランザクションがないことを検証できること、または (ii) ブロック プロデューサー間に 1 対 n の信頼モデルがあり、トランザクションが存在しないことを検証できることのいずれかが必要です。入れないブロック。集中型の高 TPS チェーンでは、(i) 不可能、(ii) より困難です。チェーンのブロック時間が DAS に対して長すぎる場合、ノード数が少ないため n 分の 1 の信頼モデルが崩壊する可能性が高くなります。 (ほとんどの集中型高 TPS チェーンと同様に) 高速ですが、すべてのブロックの公開が遅すぎるため、ノードのブロックが拒否されていないことを証明するのは困難です。

  • ブロックプロデューサーとエコシステムメンバーの大多数が望ましくないプロトコル変更を強行しようとした場合、ユーザークライアントは確実にそれを見つけるでしょうが、コミュニティが反抗してフォークすることははるかに困難です。なぜなら、新しいセットをスピンアップする必要があるからです。古いルールを維持するチェーンを維持するには、非常に高価な高スループット ノードが必要です。

  • 一元化されたインフラストラクチャは、外部の関係者による監視の影響を受けやすくなります。ブロック生成ノードのスループットが高いため、ノードの検出が非常に簡単になり、シャットダウンもさらに簡単になります。論理的には、個々のユーザーのラップトップを追跡するよりも、専用の HPC を検閲する方がはるかに簡単です。

適切なシャーディング システムをベース レイヤとして使用するのが最適です。シャードされたベースレイヤーを使用すると、ロールアップとして構築することで、いつでも一元化された運用システムを作成できます。ただし、集中化されたブロック生成に依存するベースレイヤーがある場合、その上にさらに分散化されたレイヤー 2 を構築することはできません。

元のリンク

Vitalik
創設者
Odaily公式コミュニティへの参加を歓迎します
購読グループ

https://t.me/Odaily_News

チャットグループ

https://t.me/Odaily_CryptoPunk

公式アカウント

https://twitter.com/OdailyChina

チャットグループ

https://t.me/Odaily_CryptoPunk

AI要約
トップに戻る
シャーディングはどのような具体的なプロパティを提供しますか?また、シャーディング以外の他のテクノロジーとの違いは何ですか?
著者ライブラリ
ChinaDeFi
Odailyプラネットデイリーアプリをダウンロード
一部の人々にまずWeb3.0を理解させよう
IOS
Android