シャーディングとは
シャーディングとはデータベースを水平方向に分割する技術です。
シャーディングとは元々データベースシステムの用語です。
データベースを水平方向に分割することを意味しています。
Ethereum(イーサリアム)も同様にブロックチェーンの状態が分割されて
複数のシャード(Shard)が存在することになります。
シャーディングはネットワークの負荷を分散させることが目的です。
Ethereum(イーサリアム)のノード数は20,000以上存在しており、
これはBitCoin(ビットコイン)よりも多いです。
ノード数が多いということはそれだけ分散化されているということですが、
トランザクション処理が遅延したり特定のノードに集中化してしまうなどもあります。
Ethereum(イーサリアム)の開発者であるヴィタリック・ブテリン氏は
現状全てのノードが全部のトランザクションを処理しており、
これはEthereum(イーサリアム)の処理能力が一つのノードの処理能力と
同じになってしまっていることだと言っています。
要するに、Ethereum(イーサリアム)ではネットワーク全体で、
トランザクションの処理能力を高めていけるような施策が必要で、
その問題を解決する有力な手段の一つがシャーディングです。
Ethereum(イーサリアム)2.0ではイーサリアムブロックチェーンを64個の
シャードチェーンに分割することでイーサリアムネットワークの負荷が分散されて
ネットワークの混雑が解消されるとされています。
ネットワークの混雑が解消されることでスムーズに取引を行えるようになるので、
取引手数料が現状よりも安くなるなどユーザーに大きなメリットをもたらしてくれます。
シャーディングの仕組み
それでは具体的にシャーディングが
Ethereum(イーサリアム)上でどのように機能していくのかを説明します。
例えば、100のトランザクションが作成されて、
ネットワークを構成するノードが1000ノードあれば
理論上それぞれ100回の検証作業を行う必要があります。
シャーディングは、このトランザクションの検証作業をノード群ごとに
役割分担させて検証作業を並列化していくことを目指しています。
つまり、100のノードが50ずつの計20グループに分けられて、
それぞれのグループが分担されたトランザクションを検証することになります。
この場合、1つのグループ(50ノード)は5つのトランザクションを検証するだけです。
1つのノードが100回の検証作業を行わなければ行けないのに対して、
シャーディングの導入によって5回の検証で済むようになります。
そして、グループごとに同時進行でトランザクションを処理していくことができます。
シャード毎に並列してトランザクションを処理できるので
大幅なパフォーマンス向上に繋がります。
シャーディングのメリット
- 検証作業の分担による検証速度の向上
- スマートコントラクトの処理能力の最適化
検証作業の分担による検証速度の向上
シャーディングは検証作業を分割して同時進行するので、
ノードの作業回数を減少することが可能で、
トランザクションの検証速度を向上させることが可能です。
スマートコントラクトの処理能力の最適化
トランザクションの検証速度の向上によって
スマートコントラクトの処理能力が最適化されます。
するとネットワーク全体の処理効率もよくなります。
シャーディングのデメリット
- 51%攻撃
51%攻撃
シャーディングによる分割作業は各シャードが独立している状態なので、
それぞれ異なるハッシュパワーを持ちます。
その結果、PoWのコンセンサスアルゴリズムだとハッシュパワーの強いシャードが
弱いシャードに対して51%攻撃を仕掛けることができてしまいます。
シャーディングにはPoS導入が前提
シャーディングはPoSの導入を前提とされています。
先程も話したとおり、
各シャードは独立しているのでハッシュパワーがそれぞれ異なります。
こうした状態で検証作業するとハッシュパワーの歪みが生じてしまいます。
そのような状態でコンセンサスアルゴリズムが計算力によって承認が決まる
PoWのままですと簡単に51%攻撃ができてしまいます。
そのためシャーディングではPoWではなくPoSの導入が必要になります。
PoSは通貨の保有量と保有期間によってブロック承認できるかどうかが決まるので、
PoWのようにハッシュパワーの強いシャードが攻撃することができないです。
まとめ
シャーディングという技術は仮想通貨の大きな問題である
スケーラビリティの問題を解決や改善に繋がる期待の高い技術です。
コメント