「シャーディング」とは?わかりやすく解説します
ビットコインの「スケーラビリティ問題」というのは、よく取り上げられますが、イーサリアムも確実にこの問題に直面してくると思われます。
イーサリアムは送金などに加えて、スマートコントラクトによる契約内容の書き込みまでやっているので、その分データの容量が大きくなり、現に「ガス代の高騰」というフレーズは日常茶飯事に使われてます。
このイーサリアムの「スケーラビリティ問題」に対する解決策の一つとして、「シャーディング」という技術があります。
シャーディングとは
「シャーディング」は元々、IT用語で、データを複数のサーバーに分散させることでPCへの負担を減らすという意味を指します。
仮想通貨(暗号資産)分野でも同じような意味合いを持ちます。
トランザクションの検証作業をバリデーターのグループごとに分けて、並列してトランザクションを処理する技術という意味になっています。
シャーディングの手順
シャーディングの手順を簡単に解説します。
1.ブロックチェーン上にあるノードをシャードという複数のノードからなるグループにランダムに分けていきます。
2.各シャードは、割りふられたトランザクションのみを処理します。
3.その結果をシャード間で共有して合意を取ります。
4.シャード内のノードは、ランダムに定期的に入れ替えられます。
このように、一つのノードが処理しなければならないトランザクションの数が減るので、大幅に処理時間が短くなるのです。
シャーディングの仕組み
シャーディングでは、このトランザクションの検証作業をシャードごとに分担させて、検証作業を並列化させます。
例えば、100のトランザクションが作られて、ネットワークを構成するノードが1000あれば、理論上ではそれぞれ100回の検証作業を行う必要性があります。
ノードを1/10に分けて、100のシャードを10個作るとします。
すると、1つのシャードは、100÷10=10で10回のトランザクションを検証するだけでいいことになります。
そして、手順3のように、どのようにトランザクションを処理しているのか、お互いのレシートというものでコミュニケーションを図りコンセンサスを取っていきます。
このようにして、トランザクションの検証速度の向上により、スマートコントラクトの処理能力も最適化され、ネットワーク全体の処理効率も良くなっていきます。
プルーフ・オブ・ステークの導入が必要
シャーディングの欠点として、51%攻撃があります。
各シャードは独立しているので、ハッシュパワーが異なります。
この状況下では、検証作業でパワーバランスが生まれ歪みが出てきます。
ですので、計算力がモノを言うプルーフ・オブ・ワークでは簡単に51%攻撃が可能になります。
つまり、シャーディングの技術は、プルーフ・オブ・ステークの導入が前提になっているということです。
イーサリアムは、プルーフ・オブ・ステークに移行予定ですので、シャーディングが可能になるというわけです。