暗号資産におけるステートシャーディングとは?
ステートシャーディングとは、ネットワークの現在の状態をシャードと呼ばれる小さな部分に分割し、異なるバリデーターグループがブロックチェーンの異なる部分を並列で処理・保存できるようにする、ブロックチェーンのスケーリング設計です。暗号資産における状態とは、新しいトランザクションを処理するために必要な、アカウント、残高、スマートコントラクトデータ、ストレージスロット、バリデーター情報、その他の値の現在の記録を指します。シャーディングとは、大規模なシステムを小さな区画に分割し、ネットワーク全体がすべてのタスクを同時に実行する必要がないようにすることです。公式のEthereum scaling documentationでは、シャーディングは、すべてを追跡する代わりにバリデーターのサブセットが個別のシャードを担当できるよう、データベースを分割するプロセスとして説明されています。
ステートシャーディングは、この考え方をブロックチェーンの状態に直接適用します。すべてのバリデーターがブロックチェーン全体の完全な状態を保存・実行する代わりに、各シャードは状態の一部のみを維持できます。複数のシャードが同時にトランザクションを処理できるため、スループットを高められる可能性があります。各ノードが完全なアクティブ状態を保存する必要がなくなる可能性があるため、ハードウェアへの負荷も軽減できます。ただし、ブロックチェーンアプリケーションはシャード間で相互作用する必要がある場合が多いため、ステートシャーディングは困難です。簡単に言えば、ステートシャーディングは、現在のデータベースと実行ワークロードを多数の並列シャードグループに分割することで、ブロックチェーンをスケールさせようとする仕組みです。ステートシャーディングが重要な理由
ステートシャーディングが重要なのは、スマートコントラクトブロックチェーンは利用拡大に伴い、運用コストが高くなる可能性があるためです。新しいアカウント、トークン残高、コントラクト、NFT、流動性ポジション、ガバナンス記録、ストレージスロットは、ネットワークが維持すべきアクティブ状態を増加させる可能性があります。すべてのバリデーターが完全な状態を永久に保存・実行する必要がある場合、一般のユーザーが独立してネットワークを検証することは難しくなる可能性があります。フルノードを運用できるのが大規模な事業者だけになる可能性があるため、これは分散化を弱める可能性があります。ステートシャーディングは、ネットワークを水平スケーリングさせることでこの問題の解決を目指します。水平スケーリングとは、すべてのノードをより高性能にするのではなく、バリデーターグループとシャードを追加することを意味します。公式のNEAR papers pageでは、Nightshadeは需要に応じて水平スケーリングするため、ブロックチェーンを複数の並列チェーンまたはシャードに分割するシャーディング設計として説明されています。
このアプローチが魅力的なのは、すべてのノードがすべてのトランザクションを処理しなくても、処理能力を高められる可能性があるためです。したがって、ステートシャーディングは単なる高速化ではありません。ノード要件を管理可能に維持することで、より多くの参加者がネットワークを検証できるようにする、分散化のための戦略でもあります。ステートシャーディングの仕組み
ステートシャーディングを採用するブロックチェーンは、グローバルな状態を複数のシャードに分割します。各シャードは、アカウント、コントラクト、オブジェクト、状態エントリーのサブセットを担当します。プロトコル設計に応じて、バリデーターは1つのシャード、複数のシャード、またはローテーションするシャード委員会に割り当てられる場合があります。1つのシャードだけに影響するトランザクションは、多くの場合、そのシャード内で処理できます。複数のシャードに影響するトランザクションには、クロスシャード通信が必要です。コーディネーター、ビーコンチェーン、メインチェーン、グローバルコンセンサスレイヤー、またはシャード通信プロトコルが、システムの一貫性維持に役立つ場合があります。ネットワークは、無効なトランザクションをいずれのシャードも受け入れないようにする必要があります。また、クロスシャードの操作によって二重支払い、メッセージの消失、状態の不整合が生じないようにする必要があります。このため、ステートシャーディングは単に複数の独立したブロックチェーンを運用するより複雑です。真のステートシャーディングチェーンでは、多数のシャードを1つの整合的なブロックチェーンシステムとして動作させなければなりません。ステートシャーディングとトランザクションシャーディング
トランザクションシャーディングは、トランザクション処理を異なるグループに分割します。ステートシャーディングは、実際のブロックチェーン状態を異なるグループに分割します。すべてのバリデーターが依然として状態全体を知る必要がある場合、システムは状態を完全にシャーディングせずにトランザクションをシャーディングできます。ステートシャーディングは、各シャードが現在のデータベースの一部のみを保存・更新するため、より深い仕組みです。これにより、より大きなスケーリング効果を得られる可能性がありますが、調整上の課題も大きくなります。例えば、同じシャード内のあるアカウントから別のアカウントへの送金は比較的単純です。あるシャードから別のシャードへの送金には、安全なクロスシャードメッセージまたはレシートシステムが必要です。2つのシャード上のコントラクトに触れるスマートコントラクト呼び出しでは、非同期実行、ロック、レシート、その他の一貫性ルールが必要になる場合があります。トランザクションシャーディングは、作業を分割することでスループットを改善します。ステートシャーディングは、作業が依存するデータを分割することで、スループットとストレージのスケーラビリティの両方を改善します。ステートシャーディングとデータシャーディング
ステートシャーディングはデータシャーディングとは異なります。ステートシャーディングは、ブロックチェーンの現在の実行状態を分割します。データシャーディングは、スケーリングシステムがトランザクションデータを公開・検証しやすくするため、データを小さな部分または並列の部分で利用可能にすることに重点を置きます。Ethereumの現代的なスケーリングロードマップは、従来のステートシャーディングではなくデータ可用性に重点を置いているため、この違いは重要です。公式のEthereum danksharding documentationでは、dankshardingとproto-dankshardingはどちらも、ブロックチェーンを複数の部分に分割する従来のシャーディングモデルには従わないと説明されています。
同ドキュメントでは、dankshardingはEthereum Mainnetを従来の実行シャードに分割するのではなく、ロールアップ向けの大規模データblobを中心に設計されていると説明されています。つまり、Ethereumのシャーディングに関する言及がすべてステートシャーディングを意味するとは考えるべきではありません。以前のEthereumロードマップの議論には、実行シャーディングとステートシャーディングの考え方が含まれていました。現在のEthereumのスケーリングでは、従来の多数シャード実行モデルではなく、ロールアップ、blob、データ可用性サンプリング研究、dankshardingの概念が用いられています。ステートシャーディングとデータシャーディングはどちらもスケーリングの考え方ですが、解決するボトルネックは異なります。ステートシャーディングとロールアップ
ロールアップは、多数のトランザクションをベースレイヤー外で実行し、データまたは証明をベースレイヤーに投稿することでブロックチェーンをスケールさせます。ステートシャーディングは、ベースレイヤーの状態と実行をシャード間で分割することでブロックチェーンをスケールさせます。ロールアップは、ベースレイヤー自体の実行状態を分割する必要がないため、既存チェーンへ追加しやすい場合があります。ステートシャーディングは、より深いベースレイヤーアーキテクチャの変更です。ロールアップは依然として、ベースチェーンによるデータ可用性、決済、証明検証を必要とします。ステートシャーディングチェーンには、シャード割り当て、クロスシャード通信、シャードのセキュリティ、共有ファイナリティが必要です。公式のEthereum data availability documentationでは、ロールアップの状態を他者が検証または再構築できるようトランザクションデータを利用可能にする必要があるため、データ可用性が重要であると説明されています。
このため、Ethereumの現在のロードマップは、従来のステートシャーディングではなくblobデータによるロールアップスケーリングを支援しています。ステートシャーディングは、他のLayer 1設計で使用される場合があります。主な違いは、ロールアップが実行をLayer 2システムへ分離するのに対し、ステートシャーディングはLayer 1自体の実行と状態を分割する点です。ステートシャーディングが難しい理由
ステートシャーディングが難しいのは、作業を分割しながらもブロックチェーンのセキュリティ、一貫性、分散性を維持しなければならないためです。シャードのバリデーター数が少なすぎる場合、攻撃者はそのシャードをより容易に標的にできる可能性があります。バリデーターがランダムかつ安全に割り当てられない場合、攻撃者は1つのシャードに権限を集中させる可能性があります。クロスシャードメッセージが遅い場合、アプリケーションは分断されたように感じられる可能性があります。クロスシャードメッセージが安全でない場合、ユーザーは二重支払いまたは状態不整合のリスクに直面する可能性があります。開発者が常にシャードの位置を考慮しなければならない場合、アプリケーション設計は難しくなります。ユーザーが手動でシャードを理解する必要がある場合、ユーザー体験は悪化します。学術調査Building Blocks of Sharding Blockchain Systemsでは、ノード選択、ランダム性、ノード割り当て、シャード内コンセンサス、クロスシャードトランザクション処理、シャード再構成、インセンティブメカニズムなど、主要なシャーディング構成要素が示されています。
これは、ステートシャーディングが単一の機能ではないことを示しています。多くの可動部分を持つ、完全なシステムアーキテクチャです。シャード
シャードとは、ブロックチェーンの状態と実行環境の1つの分割部分です。各シャードには、アカウント、コントラクト、オブジェクト、ストレージ、トランザクションのサブセットが含まれる場合があります。単純な設計では、アカウントはアドレス範囲、ハッシュ値、明示的なアカウント位置に基づいてシャードに割り当てられる場合があります。より高度な設計では、リシャーディングによってシャード境界が時間とともに変更される場合があります。シャードは、ローカルなトランザクションを他のすべてのシャードに承認を求めずに処理できるべきです。この並列処理が主なスケーリング上の利点です。ただし、ユーザーとアプリケーションがネットワーク全体で相互作用する必要がある場合、シャードを完全に孤立させることはできません。優れたシャーディング設計では、パフォーマンスのために十分な独立性を確保しつつ、使いやすさのために十分な接続性も持たせる必要があります。独立性が高すぎるとネットワークが分断され、調整が多すぎるとスケーリングの利点が減少するため、このバランスは困難です。したがって、シャードはスケーリング単位であると同時に、調整上の課題でもあります。シャードバリデーター
シャードバリデーターとは、特定のシャードにおける活動を確認、生成、承認するよう割り当てられたバリデーターです。一部の設計では、長期的なシャード乗っ取りのリスクを減らすため、バリデーターがシャード間をローテーションします。他の設計では、バリデーターは特定のシャードデータのみを追跡するか、ウィットネスによるステートレス検証を提供する場合があります。ネットワークのサブセットのみが各シャードを直接検証する場合でも、各シャードは安全でなければならないため、バリデーターの割り当ては重要です。攻撃者がバリデーターの割り当てを予測または操作できる場合、1つのシャードを支配しようとする可能性があります。そのため、多くのシャーディングシステムではランダム性が重要です。シャードバリデーターが誠実な参加に対して報酬を受け、不正行為に対して罰せられなければならないため、バリデーターインセンティブも重要です。ステートシャーディングはコンセンサスの必要性をなくすものではありません。ネットワーク全体のセキュリティに結び付かなければならない、より小さな多数のコンセンサス責任を生み出します。ステートシャーディングチェーンの安全性は、バリデーターの割り当て、ローテーション、監視、経済的保護の方法に大きく依存します。クロスシャードトランザクション
クロスシャードトランザクションとは、複数のシャードの状態に影響するトランザクションです。クロスシャードトランザクションは、ステートシャーディングで最も難しい部分の1つです。1つのシャード内での単純な送金はローカルに処理できます。あるシャードのアカウントから別のシャードのアカウントへの送金では、シャード間の調整が必要です。複数のシャードに関わるスマートコントラクト呼び出しはさらに複雑になる可能性があります。システムは、送信元シャードと送信先シャードが何が起きたかについて合意するようにしなければなりません。また、資金が二重に使用されず、コントラクトの効果が正しい順序で発生するようにする必要があります。一部のシステムでは、一方のシャードが送信アクションを記録し、もう一方のシャードが後で受信結果を適用する、非同期レシートを使用します。他の研究では、同期型クロスシャード実行、2フェーズコミット、証明ベースの調整が検討されています。クロスシャードトランザクションの設計は、ステートシャーディングがユーザーにとってスムーズに感じられるか、分断されて感じられるかを左右することが多いです。非同期実行
非同期実行とは、シャード間のアクションが1つのグローバルなステップで即座に起きないことを意味します。代わりに、一方のシャードがメッセージまたはレシートを作成し、別のシャードが後でそれを処理する場合があります。シャードがすべてのアクションで同時に停止・調整する必要がなくなるため、これはスケーラビリティを向上させる可能性があります。ただし、非同期実行は開発者のアプリケーション構築方法を変えます。コントラクトは、同一トランザクション内で別のシャードを呼び出し、直ちに結果を受け取れない場合があります。開発者は、コールバック、レシート、遅延決済、複数ステップの状態遷移を中心にワークフローを設計する必要がある場合があります。これにより、クロスシャードDeFi、ゲーム、マーケットプレイス、コンポーザブルなアプリケーションはより難しくなる可能性があります。非同期シャーディングは強力ですが、単一シャードのスマートコントラクト環境でユーザーが期待する単純なコンポーザビリティを弱める可能性があります。トレードオフは、速度と並列性、同期的なアプリケーションの単純さの間にあります。優れたステートシャーディングエコシステムには、非同期実行を安全に使いやすくする開発者ツールが必要です。アトミックコンポーザビリティ
アトミックコンポーザビリティとは、複数のスマートコントラクト操作を、分割できない1つのトランザクションとしてまとめて実行できることを意味します。一部でも失敗した場合、トランザクション全体が失敗します。単一シャードのスマートコントラクトシステムでは、関連する状態が1つの実行環境で利用可能なため、アトミックコンポーザビリティを実現しやすい場合があります。ステートシャーディングでは、コントラクトが異なるシャードに存在すると、アトミックコンポーザビリティが難しくなる可能性があります。DeFi取引では、レンディングプロトコル、流動性プール、オラクル、ボルトに1つのトランザクションで触れる必要がある場合があります。これらのコントラクトが異なるシャードにある場合、同期実行は困難または高コストになる可能性があります。これが、ステートシャーディングがDeFiに設計上の課題をもたらす理由の1つです。一部のシャーディングシステムでは、関連するコントラクトを同じシャードに置くことが推奨される場合があります。他のシステムでは、特別なクロスシャード通信ツールが提供される場合があります。アトミックコンポーザビリティは、ステートシャーディングを学ぶ際にユーザーと開発者が理解すべき主要なトレードオフの1つです。ステートシャーディングとスマートコントラクト
スマートコントラクトは共有状態に依存する場合があるため、ステートシャーディングをより難しくします。単純な決済システムは、アカウントをシャードに割り当て、それらの間でメッセージを送信できます。スマートコントラクトエコシステムでは、コントラクト呼び出し、ストレージ読み取り、ストレージ書き込み、トークン送転、承認、強制決済、スワップ、コンポーザブルなトランザクションを処理する必要があります。すべてのコントラクトが他のすべてのコントラクトを同期的に呼び出せる場合、ネットワークはシャーディングの利点の多くを失う可能性があります。クロスシャード呼び出しが非同期の場合、開発者には異なるプログラミングモデルが必要です。このため、シャーディング型スマートコントラクトプラットフォームは、アカウント配置、コントラクトデプロイ、メッセージパッシング、開発者ツールを慎重に設計しなければなりません。ステートシャーディングは、高度にコンポーザブルなDeFiシステムより単純なアカウント送金の方が容易です。また、アプリケーションを自然にシャードへグループ化できる場合にも容易です。例えば、ゲームまたはアプリチェーンのような環境では、活動の大部分を1つのシャード内に維持できる場合があります。高度に相互接続された金融アプリケーションでは、より複雑なクロスシャード設計が必要になる場合があります。ステートシャーディングとNEAR
NEARは、シャーディングを中心に設計された最もよく知られるブロックチェーンの1つです。公式のNEAR documentationでは、Nightshade shardingにより、バリデーター数の増加に応じた線形的なスループットスケーリングが可能になるとされています。
NightshadeはNEARのシャーディング設計です。公式NEAR papers pageでは、Nightshadeは更新後の形態で、状態と処理の両方をシャード間で分割する設計として説明されています。NEARのアーキテクチャは、ステートシャーディングが単なる研究概念ではなく、実運用の設計方針であることを示すため重要です。NEARはステートレス検証にも取り組んでおり、これによりバリデーターのシャード検証への参加方法が変化します。公式のNEAR Nightshade 2.0 launch postによると、Nightshade 2.0は2024年8月にNEAR Mainnetへステートレス検証を導入しました。
ステートレス検証は、バリデーターがシャードのためにローカルに保持する必要がある状態の量を減らせる可能性があります。これは、ステートシャーディングとステートレス検証を組み合わせ、スケーラビリティとノード参加を改善できることを示しています。ステートシャーディングとEthereum
Ethereumは、初期のEthereumスケーリングロードマップでシャーディングが広く議論されていたため、ステートシャーディングの歴史において重要です。ただし、Ethereumの現在のロードマップは、Mainnetにおける従来の実行シャーディングやステートシャーディングに重点を置いていません。公式Ethereum dankshardingページでは、proto-dankshardingとdankshardingのどちらも従来のシャーディングモデルには従わないとされています。代わりにEthereumは現在、blobと将来のdankshardingを通じてより安価なデータ可用性を提供し、ロールアップをスケールさせることに注力しています。多くの古い記事ではEthereumが従来のシャードチェーンへ進んでいると説明されているため、SEOとユーザー教育ではこの区別が重要です。そのような古い説明を現在のロードマップの事実として提示すると、誤解を招く可能性があります。Ethereumの現在のスケーリング方針はロールアップ中心です。これは、Layer 2システムが実行の大部分を担い、Ethereumが決済、セキュリティ、データ可用性の改善を提供することを意味します。ステートシャーディングは依然として重要なブロックチェーン概念ですが、Ethereumの現在のMainnet実行計画として説明すべきではありません。正確な暗号資産教育では、Ethereumは現在のステートシャーディング導入例ではなく、シャーディング研究がどのように進化したかを示す例として扱うべきです。ステートシャーディングとステートレス検証
ステートレス検証とは、バリデーターが関連する完全な状態をローカルに保存せずに、ブロックまたはシャードの実行を検証できることを意味します。代わりに、バリデーターは検証に必要な状態データを含むウィットネスまたは証明を受け取ります。バリデーターはすべてのシャードの状態を保存したくない場合があるため、この概念はステートシャーディングと組み合わせることができます。また、より少ないローカルストレージ要件で作業を検証できるため、シャード検証をより柔軟にする可能性があります。NEARのNightshade 2.0は、シャーディングアーキテクチャにステートレス検証が追加された実用例です。Ethereum研究でも、ステートレスクライアントと状態コミットメントの変更による小さなウィットネスが検討されています。ステートレス検証はステートシャーディングと同じものではありません。ステートシャーディングは状態をシャード間で分割します。ステートレス検証は、バリデーターがブロックまたはシャードを検証するために保存する必要がある状態の量を減らします。両者を組み合わせることで、検証を維持しつつノードのハードウェア要件を減らすのに役立つ可能性があります。ステートシャーディングとデータ可用性
データ可用性とは、状態遷移を検証または再構築するために必要なデータがネットワークで利用可能であるという保証です。バリデーターがシャードブロックを検証するために必要なデータへアクセスできなければ、ステートシャーディングは安全ではありません。悪意のあるシャード生成者はデータを隠し、他者がシャードの状態遷移が有効か確認できないようにする可能性があります。このため、データ可用性はシャーディングシステムの中核的な問題です。シャーディングブロックチェーンでは、隠されたデータによる攻撃を難しくするため、データ可用性サンプリング、消失訂正符号、委員会、不正証明、有効性証明、その他のメカニズムが必要になる場合があります。Ethereum data availability documentationでは、データ可用性はデータストレージとは同じではなく、検証に十分な形でデータが公開されているかに焦点を置くと説明されています。この概念はロールアップやシャーディングチェーンを含むスケーリングシステム全般に適用されます。各シャードがネットワークの他の部分が信頼する必要のあるデータを生成する可能性があるため、ステートシャーディングはデータ可用性の重要性を高めます。シャードデータが利用できない場合、クロスシャードメッセージとグローバルコンセンサスは安全でなくなる可能性があります。強力なステートシャーディング設計は、実行の分割とデータ可用性の両方を解決する必要があります。ステートシャーディングとセキュリティ
ステートシャーディングにおけるセキュリティは、シャード割り当て、バリデーターの誠実性、ランダム性、クロスシャード証明、ファイナリティ、インセンティブに依存します。単一のシャードは、割り当てられたバリデーターが少ないというだけで、容易に改ざんできるものになってはなりません。これは、ワンシャード乗っ取り問題と呼ばれることがあります。攻撃者が1つのシャードを支配できれば、無効なトランザクションの作成、資金の窃取、クロスシャードメッセージの改ざんを試みる可能性があります。プロトコルは、ランダムなバリデーター割り当て、ローテーション委員会、スラッシング、共有セキュリティ、不正証明、有効性証明、グローバルファイナリティルールによってこのリスクを低減します。セキュリティでは、シャード割り当てを知った後にバリデーターを改ざんしようとする適応型攻撃者にも対処する必要があります。バリデーターと状態をシャード間で移動する際に攻撃機会が生じる可能性があるため、シャード再構成は慎重に設計する必要があります。クロスシャードトランザクションには、一方のシャードが別のシャードに虚偽を伝えることを防ぐ証明システムが必要です。ステートシャーディングはネットワークをスケールさせる可能性がありますが、プロトコル設計が失敗し得る箇所も増やします。ユーザーにとって重要な問いは、シャーディングチェーンが各シャードをネットワーク全体に必要な水準で安全に保てるかどうかです。ステートシャーディングと分散化
ステートシャーディングは、個々のノードにかかるリソース負荷を下げることで分散化を支援できる可能性があります。ノードが完全なグローバル状態を保存・実行する必要がなければ、より多くの参加者がネットワークに参加できる可能性があります。これは、大規模データセンターだけがチェーンを検証できる将来を避けるのに役立つ可能性があります。ただし、クロスシャード調整を専門インフラだけが処理できる場合、ステートシャーディングは分散化リスクも生み出す可能性があります。ユーザーがすべてのシャードを追跡するために少数のRPCプロバイダーへ依存する場合、アプリケーションレイヤーは中央集権化する可能性があります。ブリッジやクロスシャードルーターがボトルネックになる場合、経済活動がそれらのサービスに集中する可能性があります。バリデーターの参加に複雑なインフラが必要な場合、バリデーターセットは依然として中央集権化する可能性があります。優れたステートシャーディングは、個々のノードの負担を軽減しつつ、他の場所に新たな中央集権的依存を生み出さない必要があります。分散化は、バリデーター、フルノード、クライアント、RPCプロバイダー、ブリッジ、ウォレット、アプリケーションインフラ全体で測定すべきです。システム全体がオープンで検証可能なままである場合にのみ、ステートシャーディングは役立ちます。ステートシャーディングとユーザー体験
理想的には、ステートシャーディングはユーザーに見えないものであるべきです。ユーザーは、自身のアカウントまたはスマートコントラクトがどのシャードに存在するかを知る必要がないはずです。ウォレットは、手動でシャードを選択させずに正しくトランザクションをルーティングすべきです。dAppは、遅延またはクロスシャードの手順が発生する場合に、それを明確に説明すべきです。ユーザーがシャードアドレス、シャードごとのガス残高、クロスシャードのタイミングを手動で管理する必要がある場合、普及に悪影響が出る可能性があります。プロトコル設計によっては、クロスシャード送転は同一シャード内の送転より時間がかかる場合があります。クロスシャードのスマートコントラクト相互作用にも、より多くの承認または非同期コールバックが必要になる場合があります。優れたユーザーインターフェースは、この複雑さの多くを隠すことができます。ただし、ユーザーはステートシャーディングがトランザクションのタイミング、コンポーザビリティ、流動性、アプリ設計に影響する可能性があることを理解すべきです。最も優れたシャーディングシステムは、基盤では多数の並列実行環境として動作しながら、1つのチェーンのように感じられます。ステートシャーディングと開発者
ステートシャーディングチェーン上で構築する開発者は、アプリケーション状態がどこに存在するかを理解する必要があります。プラットフォームがシャード境界を公開している場合、開発者はコントラクトをデプロイする場所を選択する必要がある場合があります。クロスシャード呼び出しが非同期の場合、開発者は遅延した結果と部分的なワークフローを考慮して設計する必要があります。ユーザーが異なるシャードから来る可能性がある場合、開発者はメッセージルーティングと残高移動を処理する必要があります。流動性がシャード間で分割される場合、DeFiアプリケーションには特別なルーティングまたは集約が必要になる場合があります。開発者は同一シャードとクロスシャードのケースをテストする必要があるため、テストも複雑になります。アプリケーション活動が複数のシャードで発生する場合、監視も難しくなる可能性があります。セキュリティレビューには、クロスシャードメッセージ処理、リプレイ防止、コールバックロジック、失敗状態を含める必要があります。ステートシャーディングは開発者により大きな容量を提供しますが、より慎重なアーキテクチャも必要になる可能性があります。優れた開発者プラットフォームは、シャードを意識したプログラミングをより安全かつ容易にする抽象化を提供します。ステートシャーディングとDeFi
DeFiはコンポーザビリティと共有流動性に依存するため、ステートシャーディングの影響を特に受けやすい分野です。スワップは流動性プールに依存する場合があります。強制決済は、オラクル、レンディング市場、担保残高、債務記録に依存する場合があります。イールド戦略は、複数のコントラクトが1つのトランザクションで相互作用することに依存する場合があります。これらのコントラクトが異なるシャードに存在する場合、実行は非同期または高コストになる可能性があります。これにより、アトミックコンポーザビリティが低下する可能性があります。ステートシャーディングDeFiシステムには、流動性ルーティング、クロスシャードメッセージング、シャード固有の流動性プール、アプリケーションクラスタリングが必要になる場合があります。一部のアプリケーションは、単純さのためにすべての中核コントラクトを1つのシャードに維持することを選択する場合があります。他のアプリケーションは、より多くのユーザーと流動性に到達するため、ネイティブなクロスシャードワークフローを設計する場合があります。ステートシャーディングは総スループットを拡大できる可能性がありますが、DeFi開発者は分断リスクを慎重に管理する必要があります。ユーザーにとっての主な懸念は、クロスシャードDeFiが安全で流動性を持ち、予測可能な状態を維持できるかどうかです。ステートシャーディングとNFT
NFTの大規模なエコシステムでは多数の所有権記録、メタデータリンク、マーケットプレイス出品、ゲームアイテムが生成されるため、NFTはステートシャーディングの恩恵を受ける可能性があります。シャーディングはこの状態を複数のシャードに分配できます。これにより、多くのユーザーが異なるコレクションやゲームを同時に操作する際の混雑を軽減できる可能性があります。ただし、NFTもクロスシャードの課題を生み出します。あるシャード上のNFTを、別のシャード上の購入者に売却する必要がある場合があります。ゲームアイテムは、異なるシャードのコントラクトまたはマーケットプレイスと相互作用する必要がある場合があります。ウォレットは、多数のシャードにまたがるNFT残高を表示する必要がある場合があります。マーケットプレイスには、シャードの位置を理解するインデックス化・ルーティングシステムが必要になる場合があります。ステートシャーディングはNFTのスケーリングを容易にできる一方、発見、流動性、送転をより複雑にする可能性もあります。円滑なシャーディングNFT体験には、優れたウォレットおよびマーケットプレイスのインフラが不可欠です。ステートシャーディングとブリッジ
ステートシャーディングとブリッジは、クロスシャード通信が一部の点でクロスチェーン通信に似ているため関連しています。メッセージは、ある状態環境から別の状態環境へ移動する必要があります。受信環境は、そのメッセージが有効であることを知る必要があります。送信環境は、二重使用またはリプレイを防止する必要があります。違いは、シャードは通常1つの共有プロトコルの一部である一方、別々のチェーンは独立したセキュリティ前提を持つ場合があることです。したがって、クロスシャードメッセージングは、ベースプロトコルに組み込まれ共有コンセンサスによって保護されている場合、通常のブリッジより安全になる可能性があります。ただし、設計が不十分なクロスシャードシステムでも、ブリッジに類似したリスクを生む可能性があります。ユーザーは、クロスシャード送転がネイティブなプロトコル操作なのか、アプリケーションレベルのブリッジ操作なのかに注意すべきです。ネイティブなクロスシャードメッセージングは通常、チェーンのコンセンサスルールとより強く統合されています。アプリケーションレベルのブリッジは、追加のスマートコントラクト、バリデーター、リレイヤー、流動性リスクを加える場合があります。ステートシャーディングとリシャーディング
リシャーディングとは、時間とともにシャード構造を変更するプロセスです。チェーンは、利用が拡大した場合、一部のシャードが過度に混雑した場合、状態分布が不均一になった場合に、リシャーディングを必要とする可能性があります。あるシャードに活動の大部分が集中し、他のシャードが十分に利用されない場合、固定シャードは非効率になる可能性があります。動的リシャーディングは、需要に応じてシャード境界またはシャード数を調整しようとします。これはリソース利用を改善できる可能性がありますが、複雑さを増します。状態をシャード間で移動する際は、安全性と一貫性を維持しなければなりません。シャード割り当てが変化している間も、アプリケーションは継続して動作する必要があります。バリデーターとインデクサーは、新しいレイアウトを正しく追跡する必要があります。リシャーディングが発生しても、ウォレットとdAppは機能し続けるべきです。リシャーディングは、ステートシャーディングが一度だけ状態を分割することではなく、ネットワークの存続期間を通じて状態を管理することでもあると示しています。ステートシャーディングの利点
ステートシャーディングの第1の利点は、より高いスループットです。すべての活動を1つの実行パイプラインに通すのではなく、複数のシャードがトランザクションを並列で処理できます。第2の利点は、ストレージのスケーラビリティ向上です。ノードはグローバル状態のすべてを保存する必要がなくなる可能性があります。第3の利点は、水平スケーリングの改善です。ネットワークは、ノードのハードウェア要件だけを引き上げるのではなく、シャードまたはバリデーターリソースを追加することで処理能力を増やせます。第4の利点は、主に1つのシャード内で動作できるアプリケーションの混雑軽減です。第5の利点は、バリデーターとノードの要件が管理可能に維持される場合、より広範な参加への道筋となることです。第6の利点は、設計に応じて異なるシャードが異なるアプリケーションクラスターまたはワークロードを処理できるため、専門化が進むことです。これらの利点が、ステートシャーディングが重要なスケーリング概念であり続ける理由です。利点は、クロスシャード通信が安全で高速であり、ユーザーと開発者にとって使いやすい場合に最も大きくなります。ステートシャーディングのリスクと制約
第1のリスクはクロスシャードの複雑さです。複数のシャードの状態を必要とするアプリケーションは、構築・利用がより難しくなる可能性があります。第2のリスクはセキュリティの分断です。各シャードは、バリデーターセットの一部だけが直接検証する場合でも、攻撃から保護されなければなりません。第3のリスクは流動性の分断です。資産と市場がシャード間に分かれ、価格形成と執行の効率が低下する可能性があります。第4のリスクはアトミックコンポーザビリティの弱体化です。1つの共有状態では単純だったトランザクションが、シャード間では非同期設計を必要とする場合があります。第5のリスクはユーザーの混乱です。ユーザーはクロスシャードの遅延、ルーティング、失敗したメッセージを理解できない場合があります。第6のリスクはインフラの複雑さです。RPCプロバイダー、インデクサー、ウォレット、エクスプローラー、ブリッジは、多数のシャードを正しく追跡する必要があります。第7のリスクは負荷の不均衡です。一部のシャードは混雑する一方、他のシャードには余剰能力がある可能性があります。ステートシャーディングは強力ですが、無償のスケーリングソリューションではありません。ステートシャーディングに関するよくある誤解
よくある誤解の1つは、ステートシャーディングが単にトランザクションを高速化することを意味するというものです。実際には、ステートシャーディングは状態、実行、検証、通信の責任を分割する複雑なアーキテクチャです。もう1つの誤解は、ステートシャーディングとロールアップが同じものだというものです。ロールアップは実行をLayer 2システムへ移す一方、ステートシャーディングはベースレイヤー自体の状態と実行を分割します。3つ目の誤解は、Ethereumの現在のロードマップが従来のステートシャーディングであるというものです。Ethereumの現在のロードマップは、従来の実行状態シャードチェーンではなく、ロールアップ、blob、danksharding型のデータ可用性に重点を置いています。4つ目の誤解は、ステートシャーディングが自動的にコンポーザビリティを維持するというものです。クロスシャードのコンポーザビリティは、設計上最も難しい部分の1つです。5つ目の誤解は、シャーディングチェーンが単に多数の独立したチェーンであるというものです。真のシャーディングブロックチェーンには、共有セキュリティ、共有ファイナリティ、シャード間のネイティブ通信が必要です。ステートシャーディングブロックチェーンの評価方法
まず、そのチェーンが実際に状態をシャーディングしているのか、データまたはトランザクションのみをシャーディングしているのかを確認してください。次に、バリデーターがシャードへどのように割り当てられているかを確認してください。バリデーターの割り当てに強力なランダム性が使用されているかを確認してください。クロスシャードトランザクションがどのように処理されるかを確認してください。クロスシャード実行が同期型か非同期型かを確認してください。アプリケーションがシャード間でアトミックコンポーザビリティを維持できるかを確認してください。プロトコルがシャードブロックのデータ可用性をどのように処理するかを確認してください。ネットワークが動的リシャーディングまたは固定シャードをサポートするかを確認してください。クロスシャード送転のユーザー体験を確認してください。ウォレット、エクスプローラー、RPCプロバイダー、インデクサーがすべてのシャードを信頼性高くサポートしているかを調査してください。ステートシャーディングブロックチェーンは、セキュリティ、使いやすさ、開発者体験、クロスシャード条件下での実際のスループットで評価すべきです。ユーザー向けベストプラクティス
利用するネットワークに、シャード固有のアドレス、ガス残高、送転遅延があるかを理解してください。可能な場合は、シャードルーティングを自動で処理するウォレットを使用してください。重要な価値をシャード間で移動する前に、少額のテスト送転から始めてください。アプリが1つのシャード内で動作するのか、複数のシャードにまたがって動作するのかを確認してください。シャーディングプロトコルにネイティブではないブリッジやルーターを利用する際は注意してください。資金がシャード間を移動する際は、追加の遅延に注意してください。プロトコルまたはウォレットが確認するまで、トランザクションがすべてのシャードで確定したと考えないでください。クロスシャードDeFiまたはNFTマーケットを利用する際は、アプリのドキュメントを確認してください。ネットワークがシャード固有の手数料支払いを必要とする場合は、手数料用のネイティブトークンを十分に保有してください。ステートシャーディングはパフォーマンスを改善できるインフラですが、スマートコントラクトリスクや市場リスクをなくすものではないと考えてください。開発者向けベストプラクティス
シャードの位置とクロスシャードの動作を考慮してアプリケーションを設計してください。同一シャードの設計が可能な場合は、不要なクロスシャード呼び出しを避けてください。プロトコルが非同期クロスシャード実行を要求する場合は、非同期パターンを安全に使用してください。クロスシャードメッセージをリプレイ、順序バグ、失敗したコールバックロジックから保護してください。同一シャードとクロスシャードのトランザクションフローを別々にテストしてください。アプリケーションがトークン市場に依存する場合は、流動性の分断を監視してください。クロスシャードの遅延をユーザーインターフェースで明確に説明してください。メッセージパッシングとシャードルーティングには、公式SDKとプロトコルドキュメントを使用してください。ネットワークが動的なシャード変更をサポートする場合は、リシャーディングを計画に含めてください。クロスシャード実行はアプリケーション設計においてセキュリティ上重要な部分として扱ってください。FAQ
ステートシャーディングとは何ですか?
ステートシャーディングとは、ブロックチェーンの現在の状態を複数のシャードに分割し、異なるバリデーターグループが異なる部分を並列で処理・保存できるようにすることです。シャードとは何ですか?
シャードとは、ブロックチェーンの状態と実行ワークロードの1つの分割部分です。ブロックチェーンがステートシャーディングを使う理由は?
ブロックチェーンは、スループットを高め、ノードごとのストレージ負荷を減らし、並列シャードグループへ実行を拡張するためにステートシャーディングを使用します。ステートシャーディングとデータシャーディングは同じですか?
いいえ。ステートシャーディングは現在の実行状態を分割し、データシャーディングはトランザクションデータをスケーラブルな単位で利用可能にすることに重点を置きます。ステートシャーディングとロールアップは同じですか?
いいえ。ロールアップはベースレイヤー外でトランザクションを実行する一方、ステートシャーディングはベースレイヤー自体の状態と実行を分割します。Ethereumは現在ステートシャーディングを使用していますか?
いいえ。Ethereumの現在のロードマップは、従来の実行シャーディングやステートシャーディングではなく、ロールアップ、blob、danksharding型のデータ可用性に重点を置いています。ステートシャーディングで知られるブロックチェーンはどれですか?
NEARは、状態と処理をシャード間で分割するNightshadeシャーディング設計で広く知られています。クロスシャードトランザクションとは何ですか?
クロスシャードトランザクションとは、複数のシャードの状態に影響し、シャード間の通信を必要とするトランザクションです。ステートシャーディングがDeFiで難しい理由は?
DeFiは、多くの場合、統一された1つの状態にまたがるアトミックコンポーザビリティ、共有流動性、複数コントラクトの相互作用に依存するため、ステートシャーディングはDeFiで難しくなります。ステートシャーディングによりブロックチェーンはリスクフリーになりますか?
いいえ。ステートシャーディングはスケーラビリティを向上させる可能性がありますが、クロスシャードのバグ、セキュリティの分断、流動性の分断、インフラの複雑さなどのリスクは残ります。結論
ステートシャーディングは、現在の状態と実行を複数のシャードに分割するブロックチェーンのスケーリング手法です。主な目的は、スループットを高め、個々のバリデーターまたはノードの負担を減らすことです。データ可用性のみを改善するのではなく、実際の実行状態を分割するため、データシャーディングとは異なります。また、実行を別のLayer 2環境へ移すのではなくベースレイヤーアーキテクチャを変更するため、ロールアップとも異なります。ステートシャーディングはブロックチェーンをよりスケーラブルにできる可能性がありますが、クロスシャードトランザクション、バリデーター割り当て、データ可用性、アトミックコンポーザビリティ、流動性の分断、ユーザー体験に関する難しい問題ももたらします。NEARのNightshade設計は、シャーディング研究が実運用インフラになった重要な例です。Ethereumは歴史的に重要ですが、現在のロードマップでは従来のステートシャーディングではなく、ロールアップ中心のスケーリングとdanksharding型のデータ可用性を採用しています。ユーザーにとって、ウォレットとアプリケーションのサポートが強力であれば、ステートシャーディングはより高速で低コストなブロックチェーン活動を意味する可能性があります。開発者にとって、ステートシャーディングは、アプリケーションアーキテクチャでシャードの位置、クロスシャードメッセージ、非同期実行、セキュリティ上のエッジケースを考慮する必要があることを意味します。ネットワークにとって、ステートシャーディングは、分散化を維持しようとしながら水平スケーリングを追求する手段です。暗号資産用語集において、State Shardingは、すべてのバリデーターがすべてを処理する必要なく、ネットワークがより多くの活動を処理・保存できるよう、ブロックチェーンのアクティブな状態を並列シャードに分割することを意味します。重要なポイントは、ステートシャーディングはスケーラビリティを大きく向上させる可能性がある一方、ブロックチェーンの信頼モデルを弱めずに、クロスシャード通信、共有セキュリティ、データ可用性、開発者の使いやすさをプロトコルが解決できる場合に限られるということです。関連コンテンツ
WhatsMiner M30S++
Web3ドメイン
Web3プロジェクト
ホット
現在、市場で大きな注目を集めているトレンドの暗号資産
トップ取引高
取引高が最も多い暗号資産

