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