
この記事は以下からのものです。CSDNこの記事は以下からのものです。liuchengxu、翻訳する:
元のリンク:
元のリンク:https://medium.com/@icebearhww/ethereum-sharding-and-finality-65248951f649
存在するEthereum Casper 101存在する
ブロックチェーンのスケーラビリティの問題sharding doc .
ブロックチェーンのスケーラビリティの問題
ブロックチェーンのスケーラビリティの問題
取引の拡大。
現在のブロック生成プロセスでは、スケーラビリティが制限されます。ブロックのガス制限により、ブロックの計算能力が制限されます。ブロック ガス制限を増やすか、ブロック時間を大幅に短縮すると、古いレートが高くなり、攻撃に抵抗するネットワークの能力が弱まります。
並列処理が不十分です。まず、既存の EVM はトランザクションを順番に処理します。第 2 に、セキュリティと分散化のため、各完全なノードはすべてのトランザクションを実行し、状態ツリー全体 (またはプルーニングされた) を保存します。EIP 648 — Easy parallelizability
用語
まず、メイン チェーン (現在のメインネット チェーンとして理解できます) とシャード チェーンのさまざまなレベルにあるオブジェクトの違いを見てみましょう。
画像の説明
単純にトランザクションが「照合」に読み込まれると考えることができます。ブロックと同様に、照合順序もチェーン上の親照合順序 (シャード チェーンを参照) を指します。 「照合者」になるということは、POS シャード チェーン上で新しい照合を指名する資格があることを意味します。
画像の説明
基本的なセカンダリシャーディング
シャードチェーンのコンセンサスはメインチェーンに依存します
シャードチェーンのコンセンサスはメインチェーンに依存します
サイドチェーンと同様に、照合順序には、メインチェーンに記録する必要がある少数の証明セットのみが含まれます。これが、ブロックチェーンを拡張する方法の基本的な考え方です。
シャード チェーン上のトランザクションは独自の独立した空間にあり、シャード検証者は関心のあるシャードを検証するだけで済みます。
バリデーターマネージャー契約 (VMC)
バリデーターマネージャー契約 (VMC)
シャード チェーンをメイン チェーンに追加するには、メイン チェーンに Validator Manager Contract (VMC) と呼ばれる特別なコントラクトが必要です。 VMC は、このシャーディング メカニズムの中核です。 VMC の目的は次のように要約できます。
プルーフ・オブ・ステークシステム。バリデーターが不正行為をすると、そのステークが悪用されます。
擬似ランダムサンプリング。適格な照合器は、現在のブロック ハッシュをシードとして使用してサンプリングされます。基本的に、バリデーターは自分のステークを VMC にデポジットし、検証コード アドレス (検証コード アドレス) が VMC 内のグローバル バリデーター プール リスト (グローバル バリデーター プール リスト) に記録されます。システムは、認証者リストからシャードチェーン認証者を抽出し、指定された「期間(期間、期間については後述)」内で指定されたシャードの認証者として指定します。このアプローチでは、バリデーターがいつバリデーターになるか、またはどのシャードのバリデーターになるかを事前に予測することができなくなります。
照合ヘッダーの検証。 VMC には、= を使用して照合ヘッダーを検証し、有効な照合ヘッダー ハッシュを記録する addHeader(bytes CollationHeader) 関数があります。この機能は、即時のオンチェーン検証を提供します。
シャード間のコミュニケーション。 UTXOモデルを利用し、メインチェーン上でトランザクションを行い、レシート(レシートID付き)を作成することで、指定したシャードにイーサを入金することができます。シャード チェーン上のユーザーは、指定されたレシート ID を使用してレシート消費トランザクションを作成し、レシートを使用できます。
シャード内で照合順序を指定するにはどうすればよいですか?
シャード内で照合順序を指定するにはどうすればよいですか?
「期間」は、ブロック時間のウィンドウの境界として定義されます。たとえば、PERIOD_LENGTH = 5 は、期間あたり 5 ブロックを意味します。これは、エポックごとにシャードごとに有効な照合が 1 つしかないことを意味します。
画像の説明
新しい照合を提案するために適格な照合器としてバリデーターがサンプリングされると、照合器は最新の照合を検証し、トランザクションを送信して addHeader 関数を呼び出す必要があります。新しい照合を送信するために照合サイクル 10 がサンプリングされる場合、これは addHeader トランザクションがサイクル 10 に含まれる必要があること、つまり、トランザクションがブロック番号 10 * PERIOD_LENGTH からブロック番号 (10 + 1) * の間にある必要があることを意味することに注意してください。 PERIOD_LENGTH - 1 の間。
画像の説明
-図 2(b). スライスの場合、ピリオドには照合順序が 1 つだけあり、ブロックには異なるスライスの複数の addHeader トランザクションを含めることができます。
シャードチェーンのフォーク選択ルール
シャードチェーンのフォーク選択ルール
図 3(a) の例では、メイン チェーンに 2 つのフォークがあり、下図の 2 番目のチェーンが最も長い有効なメイン チェーンです。ブロック B3 が先頭のブロックであるため、照合 C3 が先頭の照合であることが簡単にわかります。
画像の説明
次に、図 3(b) のブロック B3' が到着します。ブロック B3 のスコアがブロック B3' よりも高いと仮定すると、上記のチェーンが依然として最長のメイン チェーンになります。
画像の説明
最後に、図 3(c) はブロック 4 に到達します。このシャードでは、照合 C3 のスコアが照合 C2 よりも高いですが、下位のチェーンが最も長い有効なメイン チェーンであるため、照合 C2 が先頭の照合であることに注意してください。
画像の説明
詳細: 別のデザイン - Vlad Zamfir のsharded fork choice rule
画像の説明
- ブロックチェーンが完成する前にアトマイズできることを保証するエレガントなデザイン -
スケーラビリティとセキュリティのトレードオフ
— Blockchain Trilemma in Sharding FAQ
分散化、スケーラビリティ、セキュリティの 3 つの属性について、ブロックチェーン システムは 3 つのうち最大 2 つしか選択できません。3システムのセキュリティが保証されているため、拡張性は制限されています
。 TPS (1 秒あたりのトランザクション数) を増やすためにトランザクションをシャードに分散する一方で、各トランザクションのコンピューティング リソースも削減します。
シャーディングの重要なメカニズムの 1 つは、チェーン上で乱数を生成する方法です。
照合者が選択される確率は、バリデーターのデポジットにのみ関連し、それに比例する必要があります。
バリデーターがどのシャードに参加するかを予測したり、任意に選択したりできる場合、不正なバリデーターは互いに共謀して適応型攻撃を開始する可能性があります。シャーディングの制御.
-図4. 従来のマジョリティ攻撃(51%攻撃)-
画像の説明
-図5. シャードに対する1%の攻撃-
暗黙的なファイナリティと明示的なファイナリティ
暗黙的なファイナリティと明示的なファイナリティ
まず最初に、シャーディング メカニズムは POW チェーンと POS チェーンの両方に適用できる必要があると宣言しなければなりません。それでも、Casper のような明示的なファイナリティの小さな機能により、シャーディングをより堅牢にすることができます。一般的な POW チェーンではファイナリティは確率的ですが、暗黙Casper the Friendly Finality Gadget (“FFG”)。簡単に言うと、ブロックに何千もの確認がある場合でも、チェーンを書き換えることは可能です。代わりに、
暗号化経済メカニズムは、プロトコル内 (プロトコル内) で明示的に POS に適用され、最終化されているかどうかの保証を強制します (we-can-check-if-its-finalized-for-us)。
メインチェーンのファイナリティは以下に依存します
メインチェーンのファイナリティは以下に依存します
基本的なシャーディングでは、シャード チェーンはメイン チェーンに固定されます。
シャードバリデーターの場合、フェーズ 1 でシャードのブロックチェーン容量を 100 倍に拡張する必要があるため、これら 100 シャードのすべてのバリデーターは VMC ステータスを監視して、正確かつ効果的なヘッド照合を取得する必要があります。バリデーターは、自分が照合者であるかどうかをできるだけ早く確信することが重要です。一般ユーザーの場合、フェーズ2でクロスシャードトランザクションを適用すると、一般ユーザーもVMC上で入金情報(入金ID)を取得する必要があります。
明示的なファイナリティはステートレス クライアントに役立ちます
明示的なファイナリティはステートレス クライアントに役立ちますステートレス クライアントの基本原理は、ステートレス クライアントはステート ツリー全体を保存せず、ステートレス クライアントはステート ツリー ルートのみを保存することです。アーカイブ クライアントは、状態ツリー全体を保存し、特定の照合に必要なマークル ブランチを提供します。これらの Merkle ブランチを使用すると、ステートレス クライアントはステート ツリーの一部を構築し、 。
同期は、バリデーターがサンプリングされて再シャッフルされるとすぐにトリガーされます。ステートレス クライアント メカニズムを使用すると、最新の照合順序 (つまり、最高スコアの照合順序) を検証するだけで済むため、再シャッフル (つまり、バリデーターによって検出されたシャードの変更、およびシャード チェーンの同期) のコストは低く (ゼロに近く) なります。 ) シャードを同期します。
画像の説明
-図6. ステートレスクライアントモデル 図6. ステートレスクライアントモデル-
同期プロセスは非常に高速であるため、ステートレス クライアント モデルは照合ごとにシャッフルできます。これにより、ストレージの圧力とオーバーヘッドが軽減されるだけでなく、頻繁なサンプリングにより適応型攻撃に対する耐性が得られるため、システムの安全性も高まります。after about 2.5 “epoch times”Casper FFG は明示的なファイナリティしきい値を提供します、 あれは、125ブロック時間
結論
結論
イーサリアムのシャーディング設計の現在の概念と、明示的なファイナリティがシャーディング メカニズムにどのようなメリットをもたらすかを簡単に説明できたと思います。プロトコル設計の詳細については、次のサイトをご覧ください。ETHResear.chそしてsharding doc。
そして
間違いやわかりにくい表現がありましたら修正してください!