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