BTC
ETH
HTX
SOL
BNB
View Market
简中
繁中
English
日本語
한국어
ภาษาไทย
Tiếng Việt

Eth 2.0が実装するSharding(シャーディング)とは何ですか?

区块链大本营
特邀专栏作者
この記事は約3555文字で、全文を読むには約6分かかります
Ethereum 開発者コミュニティがなぜシャーディングを実装しようとしたのか、シャーディングとは何なのか、そしてなぜこのソリューションがそれほど魅力的なのか。
AI要約
Ethereum 開発者コミュニティがなぜシャーディングを実装しようとしたのか、シャーディングとは何なのか、そしてなぜこのソリューションがそれほど魅力的なのか。

編集者注: この記事は以下から引用しましたブロックチェーンキャンプ(ID:blockchain_camp)編集者注: この記事は以下から引用しました

ブロックチェーンキャンプ(ID:blockchain_camp)

ブロックチェーンキャンプ(ID:blockchain_camp)

イーサリアムは、シャーディングの概念と同期しているすべてのブロックチェーンの基盤となるプラットフォームです。なぜイーサリアム開発者コミュニティがシャーディングの実装を望んでいるのかを理解するには、シャーディングとは何か、そしてなぜこのソリューションが魅力的なのかを理解することが重要です。

ETH ガソリン ステーションの統計によると、イーサリアム ブロックチェーンにトランザクションを追加するのに約 1.78 分かかり、新しいブロックは 32 秒ごとに生成され、1 秒あたり平均 15 ~ 20 のトランザクションが処理されます。このエコシステムは、ユーザーよりもマイナーに有利な環境を作り出します。ユーザーは、トランザクションを先に処理してもらいたい場合は、ガス価格を値上げする必要があります。

低スループット、高遅延、高価格によりイーサリアム ネットワークのパフォーマンスが制限されるため、イーサリアムは現時点では、強力なスケーラビリティを必要とするサービスやアプリケーションの展開には適していません。

副題

簡単に言うと、シャーディングは、P2P ネットワーク内でコンピューティング タスクとストレージ ワークロードを分散できるパーティショニング方法です。この処理方法の後、各ノードはネットワーク全体のトランザクション負荷を処理する責任を負わず、そのパーティション (またはFragmentation) 関連の情報は問題ありません。

シャーディングをさらに詳しく説明するために、シャーディングの最も単純な例を見てみましょう。イーサリアムの創設者ヴィタリック・ブテリン氏は、これを「1000アルトコイン分のスケーラビリティの向上」と呼んだ。

この例では、単一のブロックチェーンを実行する代わりに複数のブロックチェーンを実行し、各ブロックチェーンをブロックチェーンではなくシャードと呼びます。逆に、各シャードには独自のバリデーター ネットワークまたはノード ネットワークがあり、PoW アルゴリズムを使用してブロックをマイニングしたり、ステーキングや投票を通じてブロックをマイニングしたりすることもできます。

副題

シャーディングの課題

シャーディングを使用しようとするときに直面する最初の問題は、各シャードには独自のノードのセットがあるため、各シャードの安全性がイーサリアムのような単一のチェーンよりも劣ることです。

したがって、x 個のノードを持つイーサリアムがハードフォークしてシャード チェーンに分割し、ネットワーク全体を 10 を超えるシャードに分散することを決定した場合、各シャードは元のチェーンの 1% のセキュリティを持つことになります。これは、元のチェーンのノードの (51% ではなく) 5.1% を制御することで、すべてのシャードが破損する可能性があることを意味します。

私たちが抱いた 2 番目の質問は、「どのシャードを検証するノードをどのように選択すればよいでしょうか?」 あまり優れたアクターではない場合、これは、ネットワークのノードの 5.1% がすべて同じシャード内で検証し、これらのノードを制御している場合にのみ発生します。問題です。

実際、すべてのシャーディング アーキテクチャはノードをシャードにランダムに割り当てます。ノードをシャードに割り当てるには、シャード固有ではない計算が必要であり、これらの設計のほぼすべては、シャード全体とノード ネットワークの維持を処理するために別個のチェーンを使用します。 Ethereum ではビーコン チェーンとして知られるこのチェーンは、乱数の生成、シャードへのノードの割り当て、個々のシャードのスナップショットのキャプチャ、ハンドシェイク ステークの処理、およびその他のさまざまな機能を担当します。

ビーコン チェーンにはいくつかの欠点があります。これらは前述の記録保持の計算を担当するため、ネットワークで使用するシャードが増えるほど、ビーコン チェーンが実行する必要のある作業が増え、シャードのないネットワークではスループットが低下し、遅延が長くなる可能性があります。そのため、シャード ネットワークのスケーラビリティは低下します。には自然な制限があります。

ただし、シャード ネットワークは乗算的であるため、ネットワーク内のノードがトランザクションを 4 倍速く処理するようにネットワーク効率が向上すると、ビーコン チェーンは 4 倍のシャード数を処理できるようになり、ネットワーク速度が 16 倍向上します。

  • 副題

  • データをシャードに分割するにはどうすればよいですか?

  • まずは、ブロックチェーン上でノードが通常実行する機能を見てみましょう。

トランザクションの処理/検証

  • これらのトランザクションとマイニングされたブロックをネットワーク上の他のノードに中継します。

  • すべてのトランザクションの履歴を保存する

  • ネットワークが成長するにつれて、ノードはネットワークの要求と進化するニーズに対応できる必要があります。

処理されるトランザクションの数が増えると、各ノードのコンピューティング能力をさらに追加する必要があります。

中継されるトランザクションが増えるほど、ノードによって提供される必要のある帯域幅が増加します。

すべてのデータをブロックチェーンに保存するには、ノードが徐々にストレージ容量を追加する必要があります。

トランザクションではなくストレージをシャーディングすることは、この投稿の前に提案されており、一部のプロジェクトでは (ストレージではなく) トランザクション処理のためにシャーディングを実装しています。

ただし、最も一般的なタイプのシャーディングは「ステート シャーディング」と呼ばれ、各シャード内のノードで構成され、各シャードにのみ影響を与えるグローバル ネットワーク内のすべてのノードを含む独自のブロックチェーンを構築します。シャードのトランザクション履歴を管理し、シャードに影響を与えるトランザクションを処理し、それらのトランザクションをシャード内で中継します。

次に、シャード間のトランザクション、無効なトランザクション、悪意のある動作について説明します。

副題

ブロックチェーンのシャーディングとスケーリング

上で説明した基本的なタイプのシャーディングは、相互に通信できないため、単一のブロックチェーンのように動作するため、あまり効率的または実用的なシャーディング アプローチではありません。単純な支払いを例に挙げると、ユーザー A とユーザー B が同じシャード上にある場合、シャード内のバリデーターは何の障害もなくトランザクションを処理できますが、アカウントが異なるシャード上にある場合はどうなりますか?

ユーザー A はシャード 1# に存在し、ユーザー B はシャード 2# に存在します。個々のシャードのバリデーターは、互いのシャードに対する権限を持っていないため、ユーザーのアカウントから借方記入したり、貸方記入したりすることはできません。

ただし、この問題には解決策があるので、そのいくつかを詳しく見てみましょう。

副題

2018 年の初めに遡ると、Vitalik Buterin はブロックとこのソリューションをマージすることを提案していました。https://ethresear.ch/)

非同期クロスシャードトランザクション

(ソースを参照:

副題

非同期クロスシャードトランザクション

これは操作を完了するのが簡単で、調整もはるかに簡単であるため、同期トランザクションよりも推奨されます。

同様に、シャード 1# のユーザー A がシャード 2# のユーザー B に送金したいと考えている例を使用します。このシナリオでは、ユーザー B のアカウントへの入金を担当するシャードは、ユーザー A のアカウントからの借方への入金を担当するシャードが完了したことを証明する十分な証拠があった後にのみ、トランザクションの B 自身の部分を検証します。

ただし、このアプローチは完璧ではなく、シャードのブロックが破棄される可能性がゼロではありません。確率がゼロではない場合、確率がどんなに小さくても、それは無視できない弱点です。

次の図でその理由を詳しく説明します。

このようなフォークが発生した場合、シャードは 1 つのチェーンを破棄し、別のチェーンを受け入れる必要があります。このとき、チェーン A、B などが 1# シャードで承認済みチェーンになり、W'、X' などが 2# シャードで承認済みチェーンになれば、トランザクションは正常に完了し、全員が満足します。

1# シャードが A'、B' などを受け入れ、2# シャードが W、X などを受け入れる場合、トランザクション全体が失敗しますが、トランザクションは再送信できるため、これも許容可能な結果です。

しかし、1# フラグメントがチェーン A、B などを受け入れ、2# フラグメントがチェーン W、X などを受け入れた場合はどうなるでしょうか?トランザクションの一部 (A、B など) は完了しますが、別の部分 (W、X など) は破棄されます。

副題

シャード内の悪意のあるノード

シャーディングとその仕組みについてよく理解できたので、満足するかもしれませんし、さらに疑問があるかもしれませんが、少なくとももう 1 つ考慮すべき点があります。それは、悪意のあるノードです。

1. 悪意のあるノード

これは非常に頻繁に起こります。大きな取引日が訪れる可能性があるとき、システムが何であれ、誰かがそのシステムを攻撃しようとするでしょう。

2. 無効なブロックを承認する

悪意のあるノードは、ネットワークを変更しようとするブロックを作成してネットワークを攻撃する可能性があります。ユーザー 1 が 10 コインを持っていて、ユーザー 2 が 0 コインを持っているとします。ユーザー 1 がこれら 10 枚のコインをユーザー 2 に送ろうとすると、ネットワーク上の悪意のあるノードがブロックを作成しようとする可能性があり、最終的にユーザー 1 はすべてのコインを失い、ユーザー 2 は 1000 コインを所有することになります。

シャード化されていない通常のブロックチェーンでは、すべてのノードがすべてのブロックを検証し、無効なブロックが見つかった場合、すべてのノード (マイナーであるかどうかに関係なく) がそのブロックを拒否するため、このタイプの攻撃は不可能です。

従来のブロックチェーンの場合、悪意のあるノードが作成するブロックの数や作成速度に関係なく、ネットワークの誠実なノードは常にこれらのブロックを無視し、誠実なブロックチェーンの構築を続けます。

悪意のあるノードが無効なブロックを構築してそのアカウントに大量のトークンをリチャージしようとすると、チェーンが 2 つに分割されます。この場合、悪意のあるノードの数が誠実なノードの数を超える可能性さえあります。短いチェーンが正直なチェーンであり、長いチェーンが無効なチェーンです。

通常の非シャードブロックチェーンでは、各参加者は受け取ったすべてのブロックを検証し、そのステータスを確認する責任があるため、ブロックチェーンに利害関係がある人は誰でも、無効なチェーンをすぐに認識し、(この場合は)短いチェーンを無視します。

シャードチェーンは、参加者がすべてのシャード上のすべてのトランザクションを検証できないため、少し複雑になります。したがって、シャードの履歴全体に無効なブロックがないことを確認する方法を考え出す必要があります。

ETH
Odaily公式コミュニティへの参加を歓迎します
購読グループ:
https://t.me/Odaily_News
チャットグループ:
https://t.me/Odaily_GoldenApe
公式アカウント:
https://twitter.com/OdailyChina