見出し画像

イーサリアムにおけるスケーラビリティ問題解決その1-総論,Sharding,Casper-

イーサリアムにおける主要なスケーラビリティ解決方策をまとめました。

そもそもブロックチェーン技術にはトリレンマが存在します。
それは、分散化、セキュリティ、スケーラビリティの3つのうち、2つしかサポートできないということです。
実際、現在のイーサリアムでは分散化とセキュリティは達成していますが、スケーラビリティはサポートできていませんよね。
だからこそスケーラビリティ解決の技術が待たれるわけです。

ちなみにEOSやNEOのようなブロックチェーンは、トランザクション能力がイーサリアムより比較にならないくらい大きいですが、これは分散化を犠牲にしているからです。(トランザクションを承認しているノード数がそもそも少ない。)結局彼らもトリレンマにハマっているのです。

※ただ、NEOは中国のブロックチェーンなので、最初から分散化に興味なさそうだけどw

パッと思いつく解決方法として、例えばアルトコインをバンバン発行することが挙げられます。すると全てのノードのハッシュパワーが特定のブロックチェーンに振り向けられるわけではないので、トランザクション能力は増大します。しかし、これは最近モナコインやビットコインゴールドに対するアタックがあったように、ノードの分散=ハッシュパワーの減少=脆弱なセキュリティという構図があるため、セキュリティが犠牲になります。

次に、ブロックサイズの増大というのも非常に簡単なオプションのように見えます。しかし、ブロックサイズが大きくなればなるほど、一つのブロック生成にかかる電気代もまた増えてしまうため、対応できるノードが減ってしまい、巨大ノードによる中央集権化が進んでしまいます。
要するに、ブロックサイズ増大はセキュリティとスケーラビリティはサポートできるけど、分散化からは離れるということです。

さて、そもそもスケーラビリティ問題における最大の障害はイーサリアムに参加する全てのノード全てのトランザクションをブロックチェーンに乗せる(= オンチェーンにする)ために逐一承認しなければならないという点です。

そのため、解決策の方向性としては

A. 全てのノードが承認するのではなく、一部のノードの承認でオッケーにする

B. 全てのトランザクションをオンチェーンにしない

の2つの方向性があります。

この問題点を解決すべく動いているイーサリアムの拡張プロジェクトがSharding, Casper, Raiden, Plasmaの4つになります。今回はAのやり方(=全てのノードが承認するのではなく、一部のノードの承認でオッケーにする)であるShardingとCasperについてまとめてみましたよ。

Sharding

Shardingではnodeが「shard」と呼ばれるいくつかのグループに分けられます。各グループでは、そのグループ内のトランザクションのみ処理すればよいので、全てのshardが同時に異なるトランザクションを処理することが可能になります。
各shard内では、「collators」と呼ばれる特定の複数のノードが、そのshardに関する情報をまとめた「collation」を作成しています。
それぞれのcollationには以下の内容が含まれます。

1. そのcollationはどのshardのものか
2. トランザクションを処理する前のshardの状態
3. トランザクションを処理した後のshardの状態
4. そのcollation内に書かれた情報について、collatorsのうちの2/3が承認しているデジタル署名

各shardから集められたcollationは1つのブロックに格納され、さらにイーサリアムのブロックチェーンに追加されるという流れになります。なので、トランザクション自体は全てをオンチェーンにします。

ノードをグループ化して、同時に処理させて、それらの情報をブロックに記載すればいいじゃん!っていう流れですね。一見良さげですが、Shardingにおける問題点は2つあります。
一つ目はノードを各shardに分割するといっても、ちゃんと各shardのセキュリティを維持するだけのノードは確保してねということです。極論ですが、仮にあるshardのノード数が3つしかなかったら、そのうち2つ奪えばcollationを乗っ取ることが可能です。俺でも乗っ取れる気がしてきたぞw
二つ目はshard間のトランザクションを処理するのが非常に面倒ということです。グループごとに分けてしまったがゆえに、グループ間のトランザクション処理が面倒になるなんて、どこの縦割り行政だよって感じですねw

Casper

イーサリアムは現在コンセンサスアルゴリズムとして、PoWを用いていますが、これがPoSに移行します。
PoSになれば、ブロック生成に参加するのはあらかじめETHをステークしたノードのみになります(=全てのノードがブロック生成に参加しなくなる)し、ブロック生成に必要なエネルギーも大幅に減ります。ShardingやPlasmaの導入もコンセンサスアルゴリズムがPoSであることが前提になります。

書いた人


https://twitter.com/nogacrypto?lang=ja

参考資料


この記事が気に入ったらサポートをしてみませんか?