パブリックチェーン Shardeum:シャーディングのもう一つの可能性
TechFlow厳選深潮セレクト
パブリックチェーン Shardeum:シャーディングのもう一つの可能性
真のシャーディングとスケーラビリティを持つブロックチェーンは、ゼロから構築される必要がある。
著者:Beam、Jsquare Research
2022年9月15日、イーサリアムのマージ(Merge)が実現した。これは歴史的な瞬間であり、イーサリアムはこのために5年間準備し、6度延期された。綿密なデバッグと長期にわたる開発、そして注目のハロー効果により、多くの人々はマージによって自然とスケーラビリティ、セキュリティ、持続可能性が高まると誤解しているが、実際にはそうではない――ここでは二つの列車のたとえを使おう。PoW(作業量証明)からPoS(ステークプルーフ)への移行とは、レールや車輪を交換するだけであり、それ自体で速度が速くなり、容量が増え、運賃が下がることはない。実際にこれら三点を達成できるのは、一連の包括的ソリューション――シャーディング機能を持つメインネットと、スケーラビリティを強化するLayer2ソリューションの組み合わせである。
イーサリアム創設者のヴィタリック・ブテリンが指摘したように、シャーディングはスケーラビリティの三難問題に対する解決策の一つであり、ネットワーク内のノードをより小さなグループに分け、異なるトランザクションセットを並列処理することで負荷を分散させるものだ。まるでウォルマートでの会計のように、複数のレジを設けることで待ち時間と会計効率を直感的に改善できる。

図1 シャーディングの単純なロジック
これがシャーディングの本質であり、単純明快だが、問題は細部にある――原理と方向性は正しいものの、実装には多くの課題が伴う。本稿では「シャーディング」という道筋における方向性と困難を整理し、「星空を見上げつつ足元を踏みしめる」シャーディング探求者の地図を描く。また、既存のシャーディングソリューションを比較することで共通の課題を浮き彫りにし、新たなアプローチとしてShardeumと動的シャーディングを提示する。
一、「シャーディング」とは
簡単に言えば、不可能三角の制約を考慮し、座標系の原点(0,0)としてイーサリアムを想定して、「縦方向」と「横方向」の二つのアプローチに基づき、現在のブロックチェーンの拡張性手法を大きく二つに分類できる:
垂直スケーリング(Vertical Scaling):システムの既存ハードウェア性能を向上させることで実現する。すべてのノードがスーパーコンピュータ級の計算能力を持つ非中央集権ネットワークを構築する。つまり各ノードに「より良い」ハードウェアが必要となる。この方法はシンプルかつ効果的で、特に高頻度取引やゲームなど遅延に敏感なアプリケーションに適しており、初期のスループット向上に有効である。しかし、検証ノードやフルノードの運用コストが上昇するため、ネットワークの非中央集権性が損なわれるリスクがある。非中央集権性の維持は、計算ハードウェアの性能がおおよそ「ムーアの法則」に従って成長することに依存している(チップ上のトランジスタ数は2年ごとに倍増し、計算コストは半減する)。
水平スケーリング(Horizontal Scaling):その考え方はいくつかある。一つ目は、特定エコシステム内のトランザクション処理を複数の独立したブロックチェーンに分散させ、各チェーンが独自のブロック生成者と実行能力を持つこと。これにより実行レイヤーを柔軟にカスタマイズでき、ノードのハードウェア要件、プライバシー機能、ガス料金、仮想マシン、アクセス許可設定などを個別に調整可能。二つ目はモジュラーブロックチェーンで、インフラを実行層、データ可用性層(DA)、コンセンサス層に分割する。主流のモジュール型機構がrollupである。三つ目は、一つのブロックチェーンを多数の「シャード」に分割し、並列実行を行う方式。各シャードは一つのブロックチェーンと見なせ、つまり複数のブロックチェーンが並列動作する。通常、すべてのシャードを同期させる専用のメインチェーンも存在する。
なお、これらのスケーリング手法は互いに排他的ではなく、それぞれが不可能三角の中でバランスをとり、経済インセンティブ設計と組み合わせることで、マクロおよびミクロレベルでの健全な均衡を実現している。
「シャーディング」について議論するには、まず基本から整理しよう。
再びウォルマートの会計を例にしよう。会計効率を高め、顧客の待ち時間を短縮するため、一つのレジから10の会計窓口へと拡張したとする。帳簿の誤りを防ぐため、以下の統一ルールを設ける必要がある:
-
第一に、10人のレジ係がいる場合、どの窓口に配置すべきか?
-
第二に、1000人の顧客が並んでいる場合、それぞれをどの窓口に案内すべきか?
-
第三に、10の窓口に対応する10冊の個別帳簿をどう集計すべきか?
-
第四に、帳簿の不一致を防ぐため、レジ係のミスをどう防止すべきか?
これらの問いは、シャーディングにおける次のキーポイントに対応している:
-
ネットワーク全体のノード/バリデータがどのシャードに属するかをどう決定するか?すなわち:ネットワークシャーディング(Network Sharding)の方法;
-
各トランザクションをどのシャードに割り当てるか?すなわち:トランザクションシャーディング(Transaction Sharding)の方法;
-
ブロックチェーンデータを異なるシャード間にどのように保存するか?すなわち:ステートシャーディング(State Sharding)の方法;
複雑さはリスクを伴う。以上のすべてを踏まえて、いかにしてシステム全体の安全性の分裂を回避するか?
01 ネットワークシャーディング(Network Sharding)
ブロックチェーンを単純に非中央集権的な帳簿と捉えるなら、PoSでもPoWでも、一定のルールに従って各ノードが「記帳権」を争い、帳簿の正確性を保証する。ネットワークシャーディングとは、ネットワークをさらに小さなグループ(シャード)に分割し、相互の通信を最小限に抑えながら、各シャードがトランザクションを処理し、記帳権を獲得できるようなルール、すなわちノードのグルーピング方法を指す。
この過程で生じる問題は、ノードが異なるシャードに分割されると、攻撃者の難易度とコストが急激に低下する点にある。仮にこのグルーピングのルールと結果が固定されて予測可能であれば、攻撃者は特定のシャードを狙い撃ちし、内部の一部ノードを買収すれば、ネットワーク全体を掌握できる。
Nearの創業者Alexander Skidanovはこう説明する:X人のバリデータを持つ単一チェーンが10のシャードにハードフォークすると、各シャードにはX/10人のバリデータしかいない。つまり、一つのシャードを破壊するには全バリデータの5.1%(51%÷10)を掌握すればよい。ここで重要なのは、誰が各シャードのバリデータを選ぶのか?5.1%の悪意あるバリデータがすべて同じシャードに集中しない限り、システムは安全である。もしバリデータが自身の所属シャードを選べないなら、5.1%を掌握してもすべてを同一シャードに配置するのは極めて困難となり、システム破壊のリスクは大幅に低下する。

図2 特定のシャードを攻撃する難易度は大幅に低下
シャーディングシステムは、外部シャードからの巻き戻しが起こらないことを信頼できる仕組みを開発しなければならない。現時点での最善策は、各シャードのバリデータ数が一定の最小閾値を超えるようにし、不正なバリデータが単一シャードを支配する確率を低く抑えること。最も一般的な方法は、ある程度の偏りのないランダム性を導入し、数学的手法で攻撃成功率を最小限に抑えることだ。例えばイーサリアムは、全バリデータから無作為に各シャードのバリデータを選出し、6.4分(1エポック)ごとに交代させる。

図3 イーサリアム2.0におけるバリデータローテーションの構想
簡潔に言えばノードをランダムにグルーピングし、各グループに独立して検証作業を割り当てる。
ただし、ブロックチェーンにおけるランダム性は非常に難しいテーマである。理論上、この乱数生成プロセスは特定のシャードの計算に依存してはならない。そのため、多くの設計では、ネットワーク全体を管理する別のブロックチェーンを構築する。これはEthereumやNearではBeaconチェーン、PolkaDotではRelayチェーン、CosmosではCosmos Hubと呼ばれる。
02 トランザクションシャーディング(Transaction Sharding)
トランザクションシャーディングとは、「どのトランザクションをどのシャードに割り当てるか」のルールを定め、並列処理を実現しつつ二重支払いを防ぐこと。ブロックチェーンの帳簿モデルの違いが、トランザクションシャーディングの設計に影響を与える。
現在のブロックチェーンには主に二種類の記帳方式があり、UTXO(未使用トランザクション出力)モデルとアカウント/残高モデルがある。前者の代表がBTC、後者がETHである。
UTXOモデル:BTCのトランザクションでは、一つまたは複数の出力があり、UTXOとはまだ使われていないトランザクション出力を指す。これは新規トランザクションの入力として使える。紙幣の支払いとお釣りのようなものだ。UTXOモデルでは、トランザクションシャーディングにシャード間通信が必要になる。トランザクションは複数の入力と出力を持ち、アカウント概念や残高記録がない。一つの方法として、トランザクションの入力値をハッシュ関数に入れて離散的なハッシュ値に変換し、どのシャードに割り当てるかを決める。

図4 UTXO向けのトランザクションシャーディングの一案
項目が一貫して正しいシャードに配置されるよう、ハッシュ関数の入力値はすべて同じ列から選ぶべきである。これをシャードキー(Shard Key)と呼ぶ。その後、ハッシュ値が1のトランザクションはシャード1に、2の場合はシャード2に割り当てる。この方法の欠点は、シャード間通信が不可避となり、二重支払い攻撃を防ぐ必要がある点だ。シャード間取引を制限すればプラットフォームの利便性が下がり、許容すれば通信コストと性能向上のトレードオフを考慮する必要がある。
アカウント/残高モデル:システムは各アカウントの残高を記録し、取引時に残高が支払い額以上かを確認する。銀行振込に似ており、残高が送金額より多ければ取引が成立する。このモデルでは、取引は一つの入力しか持たないため、送信者アドレスに基づいてシャーディングすれば、同一アカウントの複数取引が同じシャードで処理され、二重支払いを防げる。そのため、シャーディング技術を採用する多くのブロックチェーンは、イーサリアムのようにアカウントベースの帳簿システムを採用している。
03 ステートシャーディング(State Sharding)
ステートシャーディングとは、ブロックチェーンデータが異なるシャード間でどのように保存されるかを指す。
再びウォルマートの例に戻ろう。各窓口に帳簿があるが、それはどう記録されるのか?顧客がどの列に並んだかで帳簿をつけるとしたら、A顧客がA窓口に行った後、翌日B窓口に行ったらどうなるか?B窓口にはA顧客の過去情報(プリペイドカードなど)がない。A窓口に問い合わせて情報を取得すべきか?
ステートシャーディングは、ネットワークシャーディングやトランザクションシャーディングよりもはるかに難しい課題である。なぜなら、シャード化された環境では、トランザクションはアドレスに基づいて異なるシャードで処理され、状態も対応するシャードにのみ保存される。そのため、シャード間取引(Cross-Sharding)が発生する。
例えば、AアカウントからBアカウントに10U送金する場合、Aのアドレスはシャード1に、Bはシャード2に割り当てられているとしよう。Aの取引履歴はシャード1に、Bの履歴はシャード2に保存される。
AがBに送金するとシャード間取引となり、シャード2はシャード1に過去の取引履歴を問い合わせ、有効性を確認する。Aが頻繁にBに送金すれば、シャード2は常にシャード1とやり取りし、処理効率が低下する。一方で、特定シャードの全履歴をダウンロードせず検証できないと、参加者は交互の状態が本当に有効なブロック列の結果であるか、それが正規のチェーンかどうかを確定できない。
そのため、非シャーディングの単一チェーンと比べ、シャーディングシステムではユーザーが直接的にチェーンの有効性と可用性を完全に検証できないという新しい課題がある。データが膨大すぎるのだ。ユーザーに最大限の信頼性と実用性のある間接的検証手段を提供し、どのチェーンが完全に利用可能で有効かを判断できるようにしなければならない。実際には、委員会、SNARKs/STARKs、フィッシャーマンメカニズム、詐欺およびデータ可用性証明などの技術が活用される。
この問題を解決する二つのアプローチがある。一つは同期的シャード間処理(Synchronous)、すなわち緊密結合(Tight Coupling)。シャード間取引が必要になると、関連ブロックの状態遷移が同時に発生し、各シャードのノードが協働して処理する。自然で使いやすいが、実装は複雑。このモデルの有名な設計がMerge Blocksだが、実際にはシャード間のバリデータが同期通信しなければならず、シャード間取引が多くなると性能が低下する。
もう一つは非同期的シャード間処理(Asynchronous)、すなわち緩やかな結合(Loosely Coupling)。NEAR、イーサリアム、Cosmos、Kadenaなどが採用。この場合、最大の課題はトランザクションの原子性である。Scalar Capital共同創業者のJordan Cliffordによれば、受領証(Receipt)の概念を考える。受信者は、送信元シャードの取引のMerkleパスを提示し、他シャードからトークンを受け取ったことを証明する。目的のシャードはこの受領証を使い、受信者のアカウントに記録する。これは原子的に完了しなければならない。送信者と受信者のアカウントは同時に更新されるか、どちらも更新されない。差異や片方の失敗があれば、送信者は受信者を騙して「受け取れない資金を受け取った」と思わせる可能性がある。
ここで原子性を生活に例えると、海辺の旅行をする際に飛行機とホテルを同時予約したい。ホテルが取れなければ飛行機も買わず、飛行機が取れなければホテルも予約しない。これが原子性――すべて成功するか、すべて失敗する。
二、シャーディングの探索と試行
これまでのシャーディングに関する議論を振り返ると、以下の二つのキーポイントが見えてくる:
一つ目は、ステートシャーディングの方法、すなわちブロックチェーンデータを異なるシャードにどう分配し、シャード間通信時の効率バランスをどう保つか。
二つ目は、原子性の問題。あるシャードが共有状態を変更したとき、他のシャードがそれを即座に認識できなければ、状態の不整合が生じる。
以下では、業界で知られる主要なパブリックチェーンとその技術的解決策を整理し、その脈絡からShardeumの先進性と革新性を探る。
01 計算シャーディング
Zilliqaは、スマートコントラクトプラットフォームとして最も早くシャーディングを試みたプロジェクトの一つであり、非常に有益で効果的な試みだった。
2017年に設立され、シンガポール国立大学関連の研究者・学者チームにより推進された。主な目標はスケーラビリティの解決で、計算集約型タスク向けに構築されている。Zilliqaネットワークは「計算シャーディング」と呼ばれる並列処理により、高スループットのトランザクション処理を実現する。シャーディングされたブロックチェーンネットワークでは、トランザクション処理のタスクが各シャードに分散される。
シャーディングプロセスとしては、まずディレクトリサービス(DS)委員会ノードを選出し、次にノードを各シャードに割り当てる。一旦シャード内でトランザクションが検証されると、全ネットワークで検証され、グローバル状態に入る。これはすべてのシャードの取引を一つの検証可能な真実の源にまとめる。
簡潔に言えば、ブロックチェーンノードの三つの主機能:
-
- トランザクション処理
-
- トランザクションのまとめと他のノードへのブロードキャスト
-
- ネットワーク全体の履歴帳簿の保存
Zilliqaは、シャード間通信と原子性問題の解決に「計算シャーディングのみを行い、ネットワークとストレージのシャーディングは行わない」という簡潔で効果的なアプローチを採用している。すべてのノードが完全な状態を保持し、すべてのトランザクションを受信する。トランザクション検証のために、ネットワークはアカウントアドレス空間に基づき複数のパーティションに分割される。これは計算資源の負荷を分散するための「計算シャーディング」である。しかし、すべてのノードがすべてのトランザクションを受信し、すべてのアカウント状態を更新するため、ネットワーク帯域とストレージ操作が依然ボトルネックとなり、真のスケーラビリティは達成できない。
02 静的ステートシャーディング
より一般的なシャーディング手法は、アカウントアドレス空間を固定サイズの複数領域(シャード)に分割し、ノードを異なるシャードに割り当てる方法である。これをステートシャーディングと呼び、Near、Elrond、Harmonyなどが採用している。イーサリアムも当初はステートシャーディングを計画していたが、現在のアプローチはデータの可用性向上に特化したシャーディングとなっている。
2.1 イーサリアムのデータシャーディング構想
イーサリアム環境では、シャーディングは大量のデータを集約する負荷を分散し、Layer2と協働してネットワーク混雑を緩和し、TPSを向上させる。
より効果的なスケーリング手法の開発に伴い、イーサリアムのシャーディング計画も進化している。今後の一つの構想は「データ可用性」に基づくシャーディングで、「Danksharding」と呼ばれる新しい方法では「シャードチェーン」ではなく「シャードBlob」でデータを分割し、「データ可用性サンプリング」でデータの完全性を確認する。
もう一つの構想は、上記に加え各シャードに追加機能を持たせ、現在のイーサリアムメインネットに近づけ、コードの保存・実行やトランザクション処理を可能にするもの。各シャードは独自のスマートコントラクトとアカウント残高を持つため、シャード間通信による取引も可能になる。しかし、この案はコミュニティ内で議論中であり、データ可用性+Layer2で十分なスケーラビリティが得られるため、経済的コストと価値の評価が続いている。
2.2 Harmony
HarmonyはPoSベースのシャーディングネットワークで、より標準的な方法を採用している。複数の小型ブロックチェーン(シャード)を持ち、それぞれが状態の一部を担当し、それらを調整するブロックチェーン(Harmonyではビーコンチェーン)を持つ。前述の枠組みで、Harmonyがネットワーク、トランザクション、ステートの各シャーディングをどう解決しているか見てみよう。
ネットワークシャーディング:Harmonyはバリデータネットワークを複数のシャードに分割し、各シャードに異なるバリデータグループを割り当てる。これらは密接に接続され、内部でコンセンサスを実行する。
トランザクションシャーディング:Harmonyのトランザクションは単一のシャードで処理される。これにより並列処理が可能になり、総合的な取引処理能力が向上する。ユーザーは署名付きトランザクションにshard_idフィールドを指定し、取引先シャードを示す。
ステートシャーディング:Harmonyでは、各シャードのバリデータが1/Nのグローバル状態を保存する(N=シャード数)。各シャードは独自のブロックチェーンと状態データベースを維持する。これによりデータ可用性の懸念が軽減され、シャード間の状態整合性も向上する。
Harmonyメインネットは数千のノードを複数のシャードに分散し、数秒で即時確定性のあるブロックを生成できる。ステーキングメカニズムにより中央集権化を抑制し、ステーキング委任、報酬複利、ダブル署名ペナルティをサポート。EPoS(Effective Proof-of-Stake)と安全なランダムシャーディング技術を採用し、大規模ステーキングのトークンを細分化し、ランダムに複数のシャードに分散させることで、特定シャードへの集中攻撃を防いでいる。
シャード間取引については、ビーコンチェーンとの同期下で、異なるシャードのバリデータがグローバルネットワークを通じてメッセージを送信する。公式ドキュメントによれば、「Kademliaクロスシャードルーティング技術」を用いて通信のネットワークオーバーヘッドを制御し、「消散符号」でブロックブロードキャストを最適化し、送信者のネットワークボトルネックを回避、効率的な水平スケーリングを実現している。シャード間メッセージ伝達を実現した最初のシャーディングブロックチェーンとなった。効果的なプロトコルとフルメッシュ設計により、シャード間のシームレスな通信が可能になる。今年後半には、Harmony上で完全なシャード間メッセージプロトコルが実装される予定。
開発者にとって大きな前進であり、異なるシャードに存在するデータを統合して機能を構築できる。また、シャード間データの一貫性も重要であり、これら二つが無限のスケーラビリティの持続可能性を左右する。
2.3 Elrond
Elrondは高スループットのパブリックブロックチェーンで、セキュリティ、効率性、スケーラビリティ、相互運用性を提供することを目指している。Elrondを特徴づける二つの最重要要素は、適応型ステートシャーディングと安全なステークプルーフコンセンサスである。
トランザクション、データ、ネットワークに対して、Elrondはすべてのレベルで適応型ステートシャーディングを採用。動的適応型シャーディングメカニズムは、利用可能なバリデータ数とネットワーク使用状況を考慮してシャードのマージやスプリットを行う。定期的なノードのシャッフルにより、悪意ある攻撃に対して高い弾力性を持つ。各エポックで、各シャードの最大1/3のノードが他のシャードに再配置され、共謀を防止。ランダム性については、BLS署名でランダムソースを保護し、偏りのない予測不能な状態を実現している。
また、シャード状態アーキテクチャ上のスマートコントラクトは、シャード間実行プロセスで処理され、シャード負荷のバランスを保つ。負荷均等化スマートコントラクトにより、複数のスマートコントラクトを並列実行できる。
さらに、シャード間通信に関しては、メタチェーン(Meta Chain)と呼ばれる設計を採用し、数秒でシャード間取引の最終確定を実現する。技術ホワイトペーパーを基に、そのプロセスを簡略化する。Elrondネットワークが二つのシャードとメタチェーンのみだと仮定する。ユーザーAがシャード0にあるウォレットから取引を生成し、シャード1にあるユーザーBにEGLDを送金する場合、以下の手順でシャード間取引が処理される。
ブロック構造は、ブロックナンス、ラウンド、提案者、検証者タイムスタンプなどの情報を含むブロックヘッダーと、各シャードの内部トランザクションを含むミニブロック(miniblock)のリストからなる。例として、シャード0のブロックには通常3つのミニブロックがある:
-
ミニブロック0:シャード0内の内部取引
-
ミニブロック1:シャード0の送信者とシャード1の宛先間のシャード間取引
-
ミニブロック2:送信者がシャード1、宛先がシャード0のシャード間取引。これらは送信元シャード1で処理済みで、現在のシャードでの処理後に完了する。
同じ送信者・受信者のミニブロック数に制限はない。つまり、同じブロックに複数のミニブロックが含まれてもよい。このプロセスにおいて、シャード間実行の原子的処理単位はミニブロックであり、すべてのトランザクションを即時処理するか、あるいは全く処理しない。処理失敗時は次ラウンドで再試行される。
Elrondのシャード間取引戦略は非同期モデルを採用。検証と処理はまず送信者シャードで完了し、次に受信者シャードで行われる。取引はまず送信者シャードで配信され、そのシャード内のアカウントから開始される取引は完全に検証できる。その後、受信者シャードでは、メタチェーンが提供する実行証明を使って署名検証とリプレイ攻撃チェックを行い、最後に受信者の残高を更新し、金額を加算する。
シャード0は、ミニブロック0の内部取引と、シャード1のアドレスを宛先とする一連のシャード間取引を処理し、これらをミニブロック1としてまとめ、ブロックヘッダーとともにメタチェーンに送信。メタチェーンは、各ミニブロックの送信者シャードID、受信者シャードID、ミニブロックハッシュを含む新しいメタチェーンブロック(メタブロック)を作成し、シャード0のブロックを公証する。
シャード1はメタブロックからミニブロック1のハッシュを取得し、シャード0にミニブロックを要求、トランザクションリストを解析、不足分を要求(あれば)、シャード1で同じミニブロック1を実行し、結果ブロックをメタチェーンに送信。公証後、シャード間取引セットは最終確定と見なされる。下図は取引完了に必要なラウンド数を示す。これはミニブロックに最初に含まれてから最後のミニブロックが公証されるまで。

図5 Elrondのシャード間非同期モデル
2.4 Near
Nearは全ステートシャーディングを実現した、開発者に優しいスケーラブルなパブリックチェーンで、「ナイトシェードプロトコル(Nightshade)」と呼ばれる新しいプロトコルを提唱している。
前述の二つのシャーディングチェーンとは異なり、ビーコンチェーンと複数のシャードチェーンからなるアーキテクチャではなく、システムを単一のブロックチェーンとしてモデル化し、ブロックレベルでシャーディングを行う。各シャードには多数の「チャンク」が含まれる。

図6 Nearはビーコンチェーンを放棄し、ナイトシェード設計を採用
ナイトシェードはシステムを単一ブロックチェーンとしてモデル化し、各ブロックが論理的にはすべてのシャードのすべてのトランザクションを含み、全シャードの状態を
TechFlow公式コミュニティへようこそ
Telegram購読グループ:https://t.me/TechFlowDaily
Twitter公式アカウント:https://x.com/TechFlowPost
Twitter英語アカウント:https://x.com/BlockFlow_News














