# シャーディング技術:ブロックチェーン拡張の最前線の探求2022年9月15日、イーサリアムはマージ(を完了しました。これは歴史的な瞬間であり、イーサリアムはこれのために5年を準備し、6回の延期を行いました。反復的なデバッグと長期的な開発、そして多くの人々の注目を集めた影響により、多くの人がマージが自然により高いスケーラビリティ、安全性、持続可能性をもたらすと誤解していましたが、実際はそうではありません。PoW)からPoS(への移行は、単に「レールと車輪」を交換しただけであり、直接的により速い速度、より大きな容量、より低い手数料をもたらすわけではありません。これらの目標を達成できるのは、シャーディング能力を備えたメインネットと、拡張性を向上させるLayer2ソリューションの一連の解決策です。イーサリアムの創始者ビタリック・ブテリンが指摘したように、シャーディングはスケーラビリティの三重苦の下での一つの拡張解決策です。ネットワーク内のノードをより小さなグループに分け、異なるトランザクションセットを処理し、並列処理を実現します。これは、スーパーマーケットでの会計時に、複数のレジを開設することで、列に並ぶ時間を減らし、会計効率を向上させるのに似ています。これがシャーディングの論理であり、直接的でシンプルです。しかし、魔が細部に宿る - 原則と方向は間違っていませんが、実施の中で常に多くの問題に直面します。本稿は「シャーディング」という道の方向性と困難を整理し、星空を仰ぎ見て地に足をつけたシャーディング探索者の地図を描くことを目的としています。同時に、既存のシャーディングソリューションを比較し、いくつかの共通の問題を見つけ、実行可能な探索の方向性を提案します: Shardeumと動的シャーディング。! [Shardeum:シャーディングの別の可能性])https://img-cdn.gateio.im/social/moments-69c7de2bfe4ae7b233bec1f706fad9ad(## 一、"シャーディング"について簡単に言うと、不可能な三角形の制約を考慮し、イーサリアムを座標系の原点)0,0(から出発し、「縦」と「横」の二つの考え方に従って、現在のブロックチェーンの拡張性の方法を二つの大きなカテゴリーに分けます:**縦のスケーリング)Vertical Scaling(**: システムの既存ハードウェアの性能を向上させることによって実現されます。分散型ネットワークを構築し、ネットワーク内の各ノードがスーパーコンピュータの能力を持つ必要があります。つまり、各ノードは"より良い"ハードウェアを必要とします。この方法はシンプルで効果的であり、スループットの初期改善を達成することができます。特に高頻度取引、ゲーム、その他の遅延に敏感なアプリケーションシーンに適しています。しかし、このスケーリング方法は、検証ノードまたはフルノードを運営するコストが高くなるため、ネットワークの分散化レベルを制限します。分散化レベルを維持することは、計算ハードウェア性能の大まかな成長速度に制約されます)これがいわゆる"ムーアの法則"です: チップ上のトランジスタの数は2年ごとに倍増し、計算コストは半分になります(。**横方向のスケーリング)Horizontal Scaling(**: 横方向のスケーリングには一般的にいくつかのアプローチがあります。一つは、ブロックチェーンの文脈において、特定のエコシステム内の取引計算量を複数の独立したブロックチェーンに分散させることです。各チェーンは独自のブロック生産者と実行能力を持ち、この方法により各チェーンの実行層を十分にカスタマイズできます。例えば、ノードのハードウェア要件、プライバシー機能、ガス料金、バーチャルマシン、許可設定などです。別の横方向のスケーリングのアプローチは、モジュラー型ブロックチェーンであり、ブロックチェーンの基盤インフラを実行層、データ可用性層)DA(、およびコンセンサス層に分割します。最も主流のブロックチェーンのモジュラー機構はロールアップです。さらに、1つのブロックチェーンを多くの分片に分けて並行実行する方法もあります。各分片は1つのブロックチェーンと見なすことができ、つまり多くのブロックチェーンが並行して実行されることになります。加えて、通常、すべての分片を同期させる唯一のタスクを持つ主チェーンも存在します。! [Shardeum:シャーディングの別の可能性])https://img-cdn.gateio.im/social/moments-7aa1677db6b8128b68accfe04fcda738(指摘すべきは、上記のスケーリングの考え方は孤立して存在するものではなく、各解決策は不可能な三角形の中でトレードオフを見つけ、システム内の経済的力によって生み出されるインセンティブメカニズムの設計と組み合わせて、マクロとミクロのレベルでの効果的なバランスを達成するということです。"シャーディング"について議論するために、私たちは最初から整理する必要があります。依然このような状況を仮定します。スーパーマーケットでの会計時、会計の効率を向上させ、顧客の待ち時間を短縮するために、単一の会計通路から10の会計窓口に拡張します。帳簿のエラーを避けるために、この時、私たちは統一されたルールを策定する必要があります:第一、もし私たちに10人のレジ係がいる場合、彼らをどの窓口で働かせるべきですか?第二、もし私たちに1000人のお客様が列を作って待っている場合、どのようにして各お客様がどの窓口で会計をするかを決めますか?第三、これらの10のウィンドウに対応する10の個別の帳簿は、どのように集計すれば良いですか?第四、帳簿の不一致を避けるために、どのようにしてレジ係のミスを防ぐことができますか?これらの問題は実際にはシャーディングにおけるいくつかの重要な問題に対応しており、それぞれは:全ネットワークのノード/バリデーターがどのシャーディングに属しているかをどのように確認しますか?つまり、ネットワークシャーディング)Network Sharding(をどのように実行しますか;各取引がどのシャードに割り当てられるかをどのように判断しますか?つまり:取引シャーディング)Transaction Sharding(;ブロックチェーン資料は異なるシャーディングにどのように保存されますか?つまり:どのように状態シャーディング)State Sharding(を行いますか;複雑さはリスクを意味します。上記のすべての基盤の上で、システムのセキュリティの分裂をどのように回避するべきでしょうか?) 01 ネットワークシャーディング(Network Sharding)ブロックチェーンを単純に去中心化帳簿として理解した場合、PoSでもPoWでも、コンセンサス機構は各ノードが一定の既定のルールに従って記帳権を争うためのものであり、その過程で帳簿の正確性を保証します。そしてネットワークシャーディングは、別の既定のルールが必要で、ブロックチェーンネットワークをシャーディングし、相互通信をできるだけ低減しつつ、各シャードがオンチェーン取引を処理し、記帳権を争うことを指します - すなわち、ノードのグループ化ルールです。この過程で直面する問題は、ブロックチェーン内部のノードが異なるシャードに分割されるにつれて、攻撃者の難易度とコストが直線的に低下することです。我々は推測できます。このグループ化プロセスのルールと結果が固定され、予測可能であると仮定すると、攻撃者がブロックチェーンネットワーク全体を制御するためには、特定のシャードの制御を行い、そのシャード内の一部のノードを買収するだけで済みます。シャーディングシステムは、ネットワークが外部のシャードからこれらの取引を逆転することを信頼するメカニズムを開発する必要があります。これまでのところ、最も良い答えの一つは、シャード内のバリデーターの数がある最小の閾値を上回ることを確保することで、不誠実なバリデーターが単一のシャードを圧倒する可能性を低くすることです。最も一般的な方法は、ある程度の無偏性を持つランダム性を構築し、数学的手法を用いて攻撃者の成功確率を最小限に抑えることです。例えば、イーサリアムでは、イーサリアムの解決策は、すべてのバリデーターからランダムに特定のシャードのバリデーターを選び、6.4分ごとに###エポックの長さ(ごとにバリデーターを変更することです。言い換えれば、ノードをランダムにグループ化し、作業を各グループのノードに独立して検証させることです。しかし、指摘すべきは、ブロックチェーンにおけるランダム性は非常に挑戦的なトピックであり、論理的には、この乱数の生成プロセスは特定のシャーディングの計算に依存するべきではないということです。この計算に関して、多くの既存の設計思想は、ネットワーク全体を維持するために独自のブロックチェーンを開発することです。このようなチェーンはEthereumとNearではビーコンサインと呼ばれ、PolkaDotではリレーチェーンと呼ばれ、CosmosではCosmos Hubと呼ばれています。! [新しいパブリックチェーンShardeumの10,000語の詳細な説明:シャーディングの別の可能性])https://img-cdn.gateio.im/social/moments-6e8d3331d7d68cb512eb2eb47bd9064d() 02 トランザクション シャーディング (Transaction Sharding)取引シャーディングは「どの取引がどのシャードに割り当てられるべきか」というルールの策定を指し、並列処理の目的を達成するだけでなく、二重支払いの問題を回避することも可能です。ブロックチェーンの帳簿モデルの違いは、取引シャーディングの開発に影響を与えます。現在のブロックチェーンネットワークには2種類の記帳方式が存在し、それぞれUTXO###未使用トランザクション出力(モデルとアカウント/バランスモデルです。前者の典型的な代表はBTCで、後者はETHです。**UTXOモデル:** BTC取引において、各取引には1つ以上の出力が存在し、UTXOは未使用のブロックチェーン取引の出力を指します。これは新しい取引の入力として使用でき、使用済みの取引出力は再び使用できません。これは紙幣取引における支払いとお釣りの状況に似ています。顧客は1枚または複数枚の紙幣を店に支払い、店は1枚または複数枚の紙幣を顧客にお釣りとして返します。UTXOモデルでは、取引のシャーディングにはクロスシャーディングの通信が必要です。1つの取引には複数の入力と複数の出力が含まれる可能性があり、アカウントの概念はなく、残高の記録もありません。1つの可能な方法は、その取引のある入力値に基づいて、ハッシュ関数で処理し、離散型のハッシュ値を生成してデータがどのシャードに送信されるべきかを決定することです。エントリが一貫した方法で正しいシャードに配置されることを保証するために、ハッシュ関数に入力される値はすべて同じ列から取得される必要があります。この列はシャードキーと呼ばれます。その後、1の値を生成するトランザクションはシャード1に、2の値を生成するトランザクションはシャード2に振り分けられます。しかし、この方法の欠点は、シャード間で通信を行う必要があり、二重支払い攻撃を回避しなければならないことです。クロスシャードトランザクションを制限するとプラットフォームの可用性が制限され、クロスシャードトランザクションを許可すると、シャード間通信のコストとパフォーマンス向上による利益を天秤にかけなければならなくなります。**アカウント/残高モデル:** システムは各アカウントの残高を記録し、取引を行う際にはシステムがアカウントに支払いに必要な十分な残高があるかを確認します。これは銀行振込の際に銀行が各アカウントの残高を記録し、アカウントの残高が必要な振込額を超えている場合にのみ取引が行われるのと似ています。アカウント/残高モデルでは、一つの取引に対して一つの入力しかないため、取引を送信者アドレスに従ってシャーディングすることで、同じアカウントの複数の取引が同じシャード内で処理されることが保証され、二重支払いを効果的に防ぐことができます。したがって、シャーディング技術を採用しているほとんどのブロックチェーンは、イーサリアムのようなアカウント台帳システムです。! [Shardeum:シャーディングの別の可能性])https://img-cdn.gateio.im/social/moments-4227a2e49f76cd01b23d7b5398e51a3c() 03 ステート シャーディング (State Sharding)状態シャーディングとは、ブロックチェーンのデータがどのように異なるシャードに分配されて保存されるかを指します。依然スーパーマーケットの列に並ぶ例を使いますが、各ウィンドウにはそれぞれの帳簿があります。彼らの帳簿はどのように記録されているのでしょうか?例えば、顧客がどの列に並ぶかによって、どの帳簿に記録されます。例えば、A顧客がAウィンドウに行った場合、翌日その顧客が別の決済ウィンドウ、例えばBウィンドウに行ったとします。しかし、Bウィンドウにはその顧客の過去のアカウント情報###がありません。例えば、プリペイドカードなどの決済方法(が関与している場合、どうすればよいのでしょうか?Aウィンドウからその顧客のアカウント情報を呼び出すべきでしょうか?状態シャーディングはシャーディングの最大の難題であり、前述のネットワークシャーディングや取引シャーディングよりも厄介です。なぜなら、シャーディングメカニズムの下では、取引はアドレスに基づいて異なるシャードで処理されるからです。つまり、状態はそのアドレスが所在するシャードにのみ保存されます。この時、直面する問題は、取引が一つのシャードの中だけで行われるわけではなく、しばしばクロスシャーディング)Cross-Sharding(に関わることです。AアカウントがBアカウントに10Uを送金するシナリオを考えてみましょう。Aのアドレスはシャーディング1に割り当てられ、取引の記録もシャーディング1に保存されます。Bのアドレスはシャーディング2に割り当てられ、取引の記録はシャーディング2に保存されます。AがBに送金しようとすると、クロスシャーディングトランザクションが形成され、シャーディング2はシャーディング1の過去の取引記録を呼び出して取引の有効性を確認します。もしAが頻繁にBに仮想通貨を送信する場合、シャーディング2はシャーディング1と常に相互作用しなければならず、取引処理効率はそのため低下します。しかし、特定のシャーディングの全履歴をダウンロードして検証しない限り、参加者は彼らの相互作用の状態がいくつかの有効なブロックシーケンスの結果であることを必ずしも確認できず、そのようなブロックシーケンスが実際にシャーディング内のノーマティブチェーンであるかどうかもわかりません。したがって、無シャーディングの単一チェーンと比較して、シャーディングシステムが直面する新たな課題は、データが多すぎるためにユーザーが特定のチェーンの有効性と可用性を完全に直接検証できないことです。ユーザーがどのチェーンが完全に利用可能で有効であるかを特定できるように、最大限の信頼のない実用的な間接的手法を提供する必要があります。実際には、ブロックチェーン開発者は、検証に関するいくつかの問題を解決するために、委員会、SNARKs/STARKs、漁師メカニズム、詐欺とデータ可用性証明などの技術を使用できます。この問題を解決するための2つのアプローチがあります。1つは、シャーディングをまたいで同期することです。
シャーディング技術探索:ブロックチェーンのスケーラビリティの原理と課題を解析する
シャーディング技術:ブロックチェーン拡張の最前線の探求
2022年9月15日、イーサリアムはマージ(を完了しました。これは歴史的な瞬間であり、イーサリアムはこれのために5年を準備し、6回の延期を行いました。反復的なデバッグと長期的な開発、そして多くの人々の注目を集めた影響により、多くの人がマージが自然により高いスケーラビリティ、安全性、持続可能性をもたらすと誤解していましたが、実際はそうではありません。PoW)からPoS(への移行は、単に「レールと車輪」を交換しただけであり、直接的により速い速度、より大きな容量、より低い手数料をもたらすわけではありません。これらの目標を達成できるのは、シャーディング能力を備えたメインネットと、拡張性を向上させるLayer2ソリューションの一連の解決策です。
イーサリアムの創始者ビタリック・ブテリンが指摘したように、シャーディングはスケーラビリティの三重苦の下での一つの拡張解決策です。ネットワーク内のノードをより小さなグループに分け、異なるトランザクションセットを処理し、並列処理を実現します。これは、スーパーマーケットでの会計時に、複数のレジを開設することで、列に並ぶ時間を減らし、会計効率を向上させるのに似ています。
これがシャーディングの論理であり、直接的でシンプルです。しかし、魔が細部に宿る - 原則と方向は間違っていませんが、実施の中で常に多くの問題に直面します。本稿は「シャーディング」という道の方向性と困難を整理し、星空を仰ぎ見て地に足をつけたシャーディング探索者の地図を描くことを目的としています。同時に、既存のシャーディングソリューションを比較し、いくつかの共通の問題を見つけ、実行可能な探索の方向性を提案します: Shardeumと動的シャーディング。
! [Shardeum:シャーディングの別の可能性])https://img-cdn.gateio.im/webp-social/moments-69c7de2bfe4ae7b233bec1f706fad9ad.webp(
一、"シャーディング"について
簡単に言うと、不可能な三角形の制約を考慮し、イーサリアムを座標系の原点)0,0(から出発し、「縦」と「横」の二つの考え方に従って、現在のブロックチェーンの拡張性の方法を二つの大きなカテゴリーに分けます:
縦のスケーリング)Vertical Scaling(: システムの既存ハードウェアの性能を向上させることによって実現されます。分散型ネットワークを構築し、ネットワーク内の各ノードがスーパーコンピュータの能力を持つ必要があります。つまり、各ノードは"より良い"ハードウェアを必要とします。この方法はシンプルで効果的であり、スループットの初期改善を達成することができます。特に高頻度取引、ゲーム、その他の遅延に敏感なアプリケーションシーンに適しています。しかし、このスケーリング方法は、検証ノードまたはフルノードを運営するコストが高くなるため、ネットワークの分散化レベルを制限します。分散化レベルを維持することは、計算ハードウェア性能の大まかな成長速度に制約されます)これがいわゆる"ムーアの法則"です: チップ上のトランジスタの数は2年ごとに倍増し、計算コストは半分になります(。
横方向のスケーリング)Horizontal Scaling(: 横方向のスケーリングには一般的にいくつかのアプローチがあります。一つは、ブロックチェーンの文脈において、特定のエコシステム内の取引計算量を複数の独立したブロックチェーンに分散させることです。各チェーンは独自のブロック生産者と実行能力を持ち、この方法により各チェーンの実行層を十分にカスタマイズできます。例えば、ノードのハードウェア要件、プライバシー機能、ガス料金、バーチャルマシン、許可設定などです。別の横方向のスケーリングのアプローチは、モジュラー型ブロックチェーンであり、ブロックチェーンの基盤インフラを実行層、データ可用性層)DA(、およびコンセンサス層に分割します。最も主流のブロックチェーンのモジュラー機構はロールアップです。さらに、1つのブロックチェーンを多くの分片に分けて並行実行する方法もあります。各分片は1つのブロックチェーンと見なすことができ、つまり多くのブロックチェーンが並行して実行されることになります。加えて、通常、すべての分片を同期させる唯一のタスクを持つ主チェーンも存在します。
! [Shardeum:シャーディングの別の可能性])https://img-cdn.gateio.im/webp-social/moments-7aa1677db6b8128b68accfe04fcda738.webp(
指摘すべきは、上記のスケーリングの考え方は孤立して存在するものではなく、各解決策は不可能な三角形の中でトレードオフを見つけ、システム内の経済的力によって生み出されるインセンティブメカニズムの設計と組み合わせて、マクロとミクロのレベルでの効果的なバランスを達成するということです。
"シャーディング"について議論するために、私たちは最初から整理する必要があります。
依然このような状況を仮定します。スーパーマーケットでの会計時、会計の効率を向上させ、顧客の待ち時間を短縮するために、単一の会計通路から10の会計窓口に拡張します。帳簿のエラーを避けるために、この時、私たちは統一されたルールを策定する必要があります:
第一、もし私たちに10人のレジ係がいる場合、彼らをどの窓口で働かせるべきですか?
第二、もし私たちに1000人のお客様が列を作って待っている場合、どのようにして各お客様がどの窓口で会計をするかを決めますか?
第三、これらの10のウィンドウに対応する10の個別の帳簿は、どのように集計すれば良いですか?
第四、帳簿の不一致を避けるために、どのようにしてレジ係のミスを防ぐことができますか?
これらの問題は実際にはシャーディングにおけるいくつかの重要な問題に対応しており、それぞれは:
全ネットワークのノード/バリデーターがどのシャーディングに属しているかをどのように確認しますか?つまり、ネットワークシャーディング)Network Sharding(をどのように実行しますか;
各取引がどのシャードに割り当てられるかをどのように判断しますか?つまり:取引シャーディング)Transaction Sharding(;
ブロックチェーン資料は異なるシャーディングにどのように保存されますか?つまり:どのように状態シャーディング)State Sharding(を行いますか;
複雑さはリスクを意味します。上記のすべての基盤の上で、システムのセキュリティの分裂をどのように回避するべきでしょうか?
) 01 ネットワークシャーディング(Network Sharding)
ブロックチェーンを単純に去中心化帳簿として理解した場合、PoSでもPoWでも、コンセンサス機構は各ノードが一定の既定のルールに従って記帳権を争うためのものであり、その過程で帳簿の正確性を保証します。そしてネットワークシャーディングは、別の既定のルールが必要で、ブロックチェーンネットワークをシャーディングし、相互通信をできるだけ低減しつつ、各シャードがオンチェーン取引を処理し、記帳権を争うことを指します - すなわち、ノードのグループ化ルールです。
この過程で直面する問題は、ブロックチェーン内部のノードが異なるシャードに分割されるにつれて、攻撃者の難易度とコストが直線的に低下することです。我々は推測できます。このグループ化プロセスのルールと結果が固定され、予測可能であると仮定すると、攻撃者がブロックチェーンネットワーク全体を制御するためには、特定のシャードの制御を行い、そのシャード内の一部のノードを買収するだけで済みます。
シャーディングシステムは、ネットワークが外部のシャードからこれらの取引を逆転することを信頼するメカニズムを開発する必要があります。これまでのところ、最も良い答えの一つは、シャード内のバリデーターの数がある最小の閾値を上回ることを確保することで、不誠実なバリデーターが単一のシャードを圧倒する可能性を低くすることです。最も一般的な方法は、ある程度の無偏性を持つランダム性を構築し、数学的手法を用いて攻撃者の成功確率を最小限に抑えることです。例えば、イーサリアムでは、イーサリアムの解決策は、すべてのバリデーターからランダムに特定のシャードのバリデーターを選び、6.4分ごとに###エポックの長さ(ごとにバリデーターを変更することです。
言い換えれば、ノードをランダムにグループ化し、作業を各グループのノードに独立して検証させることです。
しかし、指摘すべきは、ブロックチェーンにおけるランダム性は非常に挑戦的なトピックであり、論理的には、この乱数の生成プロセスは特定のシャーディングの計算に依存するべきではないということです。この計算に関して、多くの既存の設計思想は、ネットワーク全体を維持するために独自のブロックチェーンを開発することです。このようなチェーンはEthereumとNearではビーコンサインと呼ばれ、PolkaDotではリレーチェーンと呼ばれ、CosmosではCosmos Hubと呼ばれています。
! [新しいパブリックチェーンShardeumの10,000語の詳細な説明:シャーディングの別の可能性])https://img-cdn.gateio.im/webp-social/moments-6e8d3331d7d68cb512eb2eb47bd9064d.webp(
) 02 トランザクション シャーディング (Transaction Sharding)
取引シャーディングは「どの取引がどのシャードに割り当てられるべきか」というルールの策定を指し、並列処理の目的を達成するだけでなく、二重支払いの問題を回避することも可能です。ブロックチェーンの帳簿モデルの違いは、取引シャーディングの開発に影響を与えます。
現在のブロックチェーンネットワークには2種類の記帳方式が存在し、それぞれUTXO###未使用トランザクション出力(モデルとアカウント/バランスモデルです。前者の典型的な代表はBTCで、後者はETHです。
UTXOモデル: BTC取引において、各取引には1つ以上の出力が存在し、UTXOは未使用のブロックチェーン取引の出力を指します。これは新しい取引の入力として使用でき、使用済みの取引出力は再び使用できません。これは紙幣取引における支払いとお釣りの状況に似ています。顧客は1枚または複数枚の紙幣を店に支払い、店は1枚または複数枚の紙幣を顧客にお釣りとして返します。UTXOモデルでは、取引のシャーディングにはクロスシャーディングの通信が必要です。1つの取引には複数の入力と複数の出力が含まれる可能性があり、アカウントの概念はなく、残高の記録もありません。1つの可能な方法は、その取引のある入力値に基づいて、ハッシュ関数で処理し、離散型のハッシュ値を生成してデータがどのシャードに送信されるべきかを決定することです。
エントリが一貫した方法で正しいシャードに配置されることを保証するために、ハッシュ関数に入力される値はすべて同じ列から取得される必要があります。この列はシャードキーと呼ばれます。その後、1の値を生成するトランザクションはシャード1に、2の値を生成するトランザクションはシャード2に振り分けられます。しかし、この方法の欠点は、シャード間で通信を行う必要があり、二重支払い攻撃を回避しなければならないことです。クロスシャードトランザクションを制限するとプラットフォームの可用性が制限され、クロスシャードトランザクションを許可すると、シャード間通信のコストとパフォーマンス向上による利益を天秤にかけなければならなくなります。
アカウント/残高モデル: システムは各アカウントの残高を記録し、取引を行う際にはシステムがアカウントに支払いに必要な十分な残高があるかを確認します。これは銀行振込の際に銀行が各アカウントの残高を記録し、アカウントの残高が必要な振込額を超えている場合にのみ取引が行われるのと似ています。アカウント/残高モデルでは、一つの取引に対して一つの入力しかないため、取引を送信者アドレスに従ってシャーディングすることで、同じアカウントの複数の取引が同じシャード内で処理されることが保証され、二重支払いを効果的に防ぐことができます。したがって、シャーディング技術を採用しているほとんどのブロックチェーンは、イーサリアムのようなアカウント台帳システムです。
! [Shardeum:シャーディングの別の可能性])https://img-cdn.gateio.im/webp-social/moments-4227a2e49f76cd01b23d7b5398e51a3c.webp(
) 03 ステート シャーディング (State Sharding)
状態シャーディングとは、ブロックチェーンのデータがどのように異なるシャードに分配されて保存されるかを指します。
依然スーパーマーケットの列に並ぶ例を使いますが、各ウィンドウにはそれぞれの帳簿があります。彼らの帳簿はどのように記録されているのでしょうか?例えば、顧客がどの列に並ぶかによって、どの帳簿に記録されます。例えば、A顧客がAウィンドウに行った場合、翌日その顧客が別の決済ウィンドウ、例えばBウィンドウに行ったとします。しかし、Bウィンドウにはその顧客の過去のアカウント情報###がありません。例えば、プリペイドカードなどの決済方法(が関与している場合、どうすればよいのでしょうか?Aウィンドウからその顧客のアカウント情報を呼び出すべきでしょうか?
状態シャーディングはシャーディングの最大の難題であり、前述のネットワークシャーディングや取引シャーディングよりも厄介です。なぜなら、シャーディングメカニズムの下では、取引はアドレスに基づいて異なるシャードで処理されるからです。つまり、状態はそのアドレスが所在するシャードにのみ保存されます。この時、直面する問題は、取引が一つのシャードの中だけで行われるわけではなく、しばしばクロスシャーディング)Cross-Sharding(に関わることです。
AアカウントがBアカウントに10Uを送金するシナリオを考えてみましょう。Aのアドレスはシャーディング1に割り当てられ、取引の記録もシャーディング1に保存されます。Bのアドレスはシャーディング2に割り当てられ、取引の記録はシャーディング2に保存されます。
AがBに送金しようとすると、クロスシャーディングトランザクションが形成され、シャーディング2はシャーディング1の過去の取引記録を呼び出して取引の有効性を確認します。もしAが頻繁にBに仮想通貨を送信する場合、シャーディング2はシャーディング1と常に相互作用しなければならず、取引処理効率はそのため低下します。しかし、特定のシャーディングの全履歴をダウンロードして検証しない限り、参加者は彼らの相互作用の状態がいくつかの有効なブロックシーケンスの結果であることを必ずしも確認できず、そのようなブロックシーケンスが実際にシャーディング内のノーマティブチェーンであるかどうかもわかりません。
したがって、無シャーディングの単一チェーンと比較して、シャーディングシステムが直面する新たな課題は、データが多すぎるためにユーザーが特定のチェーンの有効性と可用性を完全に直接検証できないことです。ユーザーがどのチェーンが完全に利用可能で有効であるかを特定できるように、最大限の信頼のない実用的な間接的手法を提供する必要があります。実際には、ブロックチェーン開発者は、検証に関するいくつかの問題を解決するために、委員会、SNARKs/STARKs、漁師メカニズム、詐欺とデータ可用性証明などの技術を使用できます。
この問題を解決するための2つのアプローチがあります。1つは、シャーディングをまたいで同期することです。