ボム君.com

うどんの仮想通貨・暗号通貨ひろば

暗号通貨が魅せる世界にようこそ!Ethereumとそのエコシステムについて学びましょう!

シャーディング(Sharding)ーTransactionの並列処理ー

https://github.com/ethereum/wiki/wiki/Sharding-FAQ

概要

Ethereumは現状スケーラビリティの問題に直面しています。Vitalikがいうには、「そもそも現状、全てのノードが全部のトランザクションを処理している。これはEthereumの処理能力が1つのノードの処理能力と同じになってしまっているということだ。」 シャーディングは、それらの問題を解決する有力な手段としてみられています。これによりTransaction feeと処理時間を大幅に圧縮することが可能になると見込まれています。PoCは現在開発中であり、そろそろコード公開できるかも?な感じですがまだまだ課題はあるようです。

Shardingの仕組み

概要

ブロックチェーン上にあるノードをシャード(Shards)と呼ばれる複数のグループにランダムに分割するというものです。そして普段はトランザクションを割り当てられたシャード内で処理し、その結果同士を定期的にシャード同士でコンセンサスを取るというものです。そしてShard内のノードも定期的にランダムに入れ替えるようです。 シャード内のコンセンサスはPoS(おそらくCasper)コントラクトが想定されています。

Validator Manager Contract

f:id:udoncryptocurrency:20171215204450j:plain Validator Manager Contractというものがあります。これは(詳しくは理解してないのですが)上の図を見てわかる通りシャード内のステートルートをValidator Manager Contractというものでシャード同士でPoSでコンセンサスを取ります。また、同じく上の図を見てわかる通り、既存のステート(root chainであるEthereumのチェーン)の仕組みは変わりません。

ロードマップ

VitalikがDevcon3で言っていた 1. PoSサイドチェーン的な振る舞い a. Validator Manager Contractによるシステム b.PoSによるブロック作成 c.ランダムなノードがどこのシャードに属するかの選定と、シャード同士のランダムシャッフル d. One-WayのETH交換 2. Two-WayのETH交換 3. ヘッダーの照合方式をコントラクト方式からuncle方式に 4. 無効なヘッダーをブロックと一緒に削除する

課題

  • どのノードがどのシャードに属しているのか安全で効率的に知ることができる仕組みが必要
  • 「PoS実装してからじゃないと面倒」by Vlad Zamfirさん
  • シャード間の安全な同期

まとめ

現状はμRaidenで十分でしょうが、「The World Computer」になるにはShardingは必要になりそうです。Ethereumネットワークを構成するたくさんのノードを生かすスケーリングソリューションになりそうです。 非同期状態でも動くようにするとのことなのですが、そこが難易度高そうですね。ですがこれが解決できれば飛躍的にスケーラビリティーの解決になることは間違い無いでしょうね。

参考文献