概要
シャーディングは、ブロックチェーンをより小さな「シャード」(断片の意)に分割し、レイヤー1ネットワーク上のスケーラビリティ問題に対応します。
シャーディングにより、トランザクション速度の向上、トランザクション処理とストレージコストの最小化、ネットワークパフォーマンスの向上につながります。
シャーディングには、ネットワークセキュリティの懸念やクロスシャード(シャード間をまたがる)トランザクションの複雑さなど、欠点となりうる問題が伴います。
はじめに
ブロックチェーン技術は、分散化、透明性、セキュリティにおいてかつてない可能性をもたらしました。しかし、スケーラビリティが大きな課題となっています。スケーラビリティは、セキュリティと分散化と共に、「ブロックチェーンのトリレンマ」とされる課題の1つとなっています。この3つの課題の同時解決が、ブロックチェーン分野における長年にわたる課題となっています。そこで、「シャーディング」などの戦略的な解決策が登場しました。
シャーディングとは
シャーディングは、従来のデータベース管理技術から借用される概念です。大規模なデータベースを、シャードと呼ばれるより小さく管理しやすい断片に分割する処理を指します。ブロックチェーンに応用することで、分散化の原則を維持しつつ、スケーラビリティの向上を目指します。つまり、シャーディングとは、ブロックチェーンネットワークをシャードと呼ばれる小さな部分に分割し、それぞれのシャードがトランザクションやスマートコントラクトを並行処理できるようにするものです。
シャーディングの仕組み
ブロックチェーンネットワーク内でシャーディングの仕組みを理解するに当たり、ブロックチェーンデータが通常どのように保存され、処理されるかを見てみましょう。データの処理方法には、様々なものがあります。ここでは、逐次処理と並列処理を取り上げます。
一般的に、各ブロックチェーンノードはネットワーク内の全トランザクション量を処理する責任を負っています。このようなデータ処理は、一般的に逐次処理と呼ばれます。このトランザクション処理方法では、各ノードがアカウント残高やトランザクション履歴などの重要な情報をすべて管理、保存する必要があります。要するに、各ノードはすべてのネットワーク操作、データ、トランザクションを処理しなければなりません。
このようなモデルでは、すべてのノードですべてのトランザクションを記録することで、ブロックチェーンのセキュリティを強化しています。その反面、データの処理が劇的に遅くなります。そこで、複数の操作を同時に実行できるデータの並列処理が効果を発揮することになります。
シャーディングは、ブロックチェーンネットワーク全体でトランザクション作業量を分割または「パーティション化」し、この問題を解決する強力な解決方法となります。つまり、すべてのノードがブロックチェーンの作業負荷全体を管理または処理する必要がなくなります。
代わりに、シャーディングにより水平的パーティション分割によって作業負荷を分離します。このプロセスでは、データは水平方向のサブセットに分割され、各シャードは他のシャードとは別にトランザクションを処理できる個別のデータベースとして機能します。
水平的パーティション分割と垂直的パーティション分割
水平的パーティション分割と垂直的パーティション分割は、データベースのスケーリングにおいて顕著な2つの手法となっています。どちらも大規模なデータセットをより効率的に管理するために設計されているものの、その仕組みは根本的に異なります。シャーディングには、水平的パーティション分割を実装する一般的です。
水平的パーティション分割では、データは行ごとに分割され、それぞれデータのサブセットを含む異なるノード(またはデータベース)に分散されます。テーブルの各行は固有のエンティティであるため、分離してもデータの整合性が失われることはありません。水平的パーティション分割が使用されている顕著な例に、EthereumやBitcoinなどのブロックチェーンネットワーク配信が挙げられます。
垂直的パーティション分割では、データは行ではなく列に分割されます。垂直的パーティション分割の各パーティションには、エンティティごとのデータのサブセットまたはデータセット全体が含まれるものの、特定の属性のセットだけが含まれます。たとえば、名前、ステータス、説明、写真などの列を持つ顧客テーブルを考えてみましょう。垂直的パーティション分割の場合、「名前」と「ステータス」は1つのテーブルに保持され、「説明」と「写真」は別のテーブルに保持されるといった具合です。
水平的パーティション分割が好まれる理由
ブロックチェーンネットワークでは、スケーラビリティ、分散化、セキュリティの3つの主な理由から、水平的パーティション分割が垂直的パーティション分割よりも一般的に好んで採用されます。
スケーラビリティ:シャーディングにより、データをより小さくより管理しやすい「シャード」に分割する解決策となります。各シャードは独立した操作が可能で、より多くのトランザクションを同時に処理でき、ネットワークのスピードと効率が向上します。一方、垂直的パーティション分割では、列が異なるデータベースに分割されるため、完全なトランザクションやブロック情報の検索が複雑になり、スケーラビリティが制限される可能性があります。
分散化:水平的パーティション分割は、ブロックチェーンの基本理念と合致する形で分散化を実現します。ノードが全データの一部(シャード)を処理するだけでよい場合、計算処理とストレージの負担が軽減され、より多くのノードがネットワークに参加できます。一方、垂直的パーティション分割では、各ノードが完全なブロックデータを理解し検証する際、すべてのパーティション(データのすべての列)にアクセスする必要があるため、分散化が制限されます。
セキュリティとデータの整合性:水平的パーティション分割では、各シャード(またはパーティション)に完全なトランザクションデータが含まれるため、データの整合性が維持され、各ノードにブロックチェーンの一部分の完全かつ正確なコピーが保持されることになります。垂直的パーティション分割では、基本的にブロックのデータを異なるノードに分割することになるため、ブロックチェーンネットワークで最も重要な点の1つであるデータの整合性とセキュリティの確保が難しくなります。
シャーディングの利点
シャーディングがブロックチェーン技術にもたらす潜在的なメリットを取り上げます。
トランザクション速度の向上:シャーディングはトランザクションの並列処理を容易にします。トランザクションを1つずつ逐次処理する代わりに、シャーディングを使用するとトランザクションを異なるシャード上で同時に処理できます。各シャードは個別に処理され、トランザクション速度が大幅に向上します。これにより、トランザクション速度が向上するだけでなく、ネットワーク全体でより多くのユーザーを処理できるようになり、大規模な普及が促進されます。
シャードを使ってスケーラビリティに対処している既存のブロックチェーンネットワークの例に、Ziliqaが挙げられます。Ziliqaでは、シャーディングメカニズムにより、毎秒数千のトランザクションを実現しています。
処理コストとストレージコストの最小化:従来のブロックチェーンの設計では、すべてのノードがすべてのトランザクションを保存する必要があり、ブロックチェーンが成長するにつれてハードウェアへの負荷が高まります。一方、シャーディングでは、各ノードがネットワーク全体のデータのほんの一部を処理と保存を担当することになります。ノードがネットワークへの参加への必要リソースが低くなります。
そのため、コストをかけずにバリデーター数を増やすことが可能になり、ネットワークの分散化を強化できます。実質的に、ハイエンドで高価なコンピューターリソースを持つ事業者のみしかバリデーターになれないという問題を解消し、ブロックチェーンネットワークの民主的性質が維持されます。
ネットワークパフォーマンスの向上:シャーディングは、ネットワーク全体のパフォーマンスと容量を向上させます。従来のブロックチェーンでは、ネットワークに参加するノードが増えるとノード間のデータ通信と同期が必要になり、逆説的にパフォーマンスが低下してしまいます。
しかし、シャーディングはこのシナリオを一変させます。各シャードは個別に並行して動作するため、システムはより多くのトランザクションと計算を処理できます。新しいノードが参加すると、ネットワーク全体ではなくシャードに追加できるため、ネットワークのスケーラビリティが向上します。これにより効率が改善され、トランザクションがスムーズになり、ユーザー体験が向上します。
その上、シャーディング技術の将来の進歩や改良によって細かな改善がはかられ、ブロックチェーンエコシステムが継続的に発展できる可能性があります。
シャーディングの限界
シャーディングは、ブロックチェーンネットワークの効率化にいくつかの潜在的な利点をもたらす一方、そのプロセスには特有の問題もあります。シャーディングによってもたらされる潜在的な脆弱性には、以下のようなものがあります。
単一シャード乗っ取り攻撃:シャーディング環境では、単一のシャードを乗っ取るにはネットワーク全体を乗っ取るために必要なコンピュータ処理能力よりも劇的に低くなります。このため、個々のシャードは「1パーセント攻撃」または「シャード乗っ取り」(ネットワーク全体と比較してリソース数量が少ない攻撃者が個々のシャードを乗っ取る可能性)に対して脆弱になります。
シャード間トランザクション:異なるシャードをまたがるトランザクション(クロスシャード)に、特有の課題があります。シャード間のトランザクションは複雑になり、慎重に管理しないと二重支払いにつながる可能性があります。一方のシャードがトランザクション中に他方のシャードの状態を正確に把握していない場合、これを悪用して「二重支払い」が行われる可能性があります。
データ可用性の問題:シャーディングにより、ネットワーク全体の状態を維持運営するのがより複雑な作業になります。そのシャードを管理するノードがオフラインのため必要なときに特定のシャードが利用できない場合、データの可用性に問題が生じ、ネットワーク全体が混乱する可能性があります。
ネットワークセキュリティ:シャーディングには、シャード間の負荷分散を行う堅牢なプロトコルの実装が必要です。これが適切に実装されない場合、データの分散やリソースの不均衡につながり、ネットワークが不安定になる可能性があります。
ノードの同期:ノードの同期は、異なるノード間で情報を共有、更新に時間がかかるため、ネットワークの遅延を引き起こす可能性があります。さらに、処理能力やネットワーク接続速度が遅いノードが原因となり同期プロセス全体が遅延すると、ブロックチェーンネットワーク全体のパフォーマンスが低下する可能性があります。
Ethereumおけるシャーディングへの対応
Ethereumでは、Ethereum 2.0のアップグレードの一部としてシャーディングの実装を計画しています。Ethereum2.0(Eth2またはSerenityとも呼ばれる)は、Ethereumブロックチェーンのアップグレードイベントであり、ネットワーク速度、効率性、スケーラビリティの向上、トランザクション処理の向上を実現し、ネットワーク上の混雑緩和を目的としています。
現在のところ、アップグレードは段階的に実施されており、最終段階(フェーズ2)ではシャーディングが完全実装される予定です。Ethereumの開発者は、これらの機能強化により、ネットワークが直面しているスケーラビリティとトランザクションコストなど現在の抱える多くの問題に対処できるとしています。
ただし、シャーディングの実装には、特にネットワークのセキュリティと分散化を確保することが前提になります。そのため、Ethereumの開発者は、この移行の完全実装に向けて、慎重な検討と広範なテストを実施しています。
まとめ
全体として、シャーディングはブロックチェーンのトリレンマの解決に向けた注目すべき進展と言えます。複雑さや潜在的な問題もあるものの、シャーディング導入により分散化を損なうことなくスケーラビリティを向上させることで、ブロックチェーンネットワークの将来に向けた大きな可能性が開かれることになります。
多くのブロックチェーンプロジェクトで、潜在的な解決策としてシャーディングを研究・模索するのは自明の理と言えます。Ethereumは、スケーラビリティ問題に対応するため、Ethereum 2.0のアップグレードの一部としてシャーディングを実装します。この実装は、包括的な機能拡張計画であるCancunアップグレードで決定的な重要性を持つ項目の1つとなっています。このシャーディング実装が成功するか否かは、他のテクノロジー同様、継続的な研究、開発、厳格なテストにかかっていると言えます。
参考文献
免責事項:このコンテンツは、一般的な情報提供および学習素材としてのみの目的で「現状有姿」にて提供され、いかなる種類の表明または保証を行うものではありません。財務的、法的、またはその他の専門的なアドバイスとして解釈されるべきではなく、特定の商品またはサービスの購入の推奨を意図したものでもありません。適切な専門的顧問に独自に助言を求めるようにしてください。記事が第三者の寄稿者によって寄稿されている場合、提言されている見解は第三者の寄稿者のものであり、必ずしもバイナンスアカデミーの見解を反映したものではありません。詳細は、こちらの免責事項全文をお読みください。デジタル資産の価格は、大きく変動する可能性があります。投資した暗号資産の価値は上下する可能性があり、当初の投資額を取り戻すことができない可能性があります。投資判断についてはご自身が単独で責任を負い、バイナンスアカデミーはお客様が被る可能性のある損失に対して責任を負いません。この資料は、財務的、法的、またはその他の専門的なアドバイスとして解釈されるべきではありません。詳細は、利用規約とリスクに関する警告をご覧ください。