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