2018.08.31 (Fri) column

イーサリアムの「中央集権化」はShardingが加速させる

Written by 真田雅幸

今回の記事はStopAndDecrypto氏によって書かかれた「Sharding centralizes Ethereum by selling you Scaling-In disguised as Scaling-Out」を要約したものだ。

ブロックチェーンの属性

ブロックチェーンベースの仮想通貨それぞれに、特有の属性があるのをご存知だろうか。その属性は、最終的にネットワークが中央集権化するのか、非中央集権化するのかを示している。ブロックチェーン特有の方向性とも表現できる。プロトコルの変更はその方向性に一時的な影響を与えるが、本質的な属性(非中央集権的であるか、そうでないか)を変えることはない。

結論から言うと、イーサリアムは最終的にネットワークが中央集権化する属性をもっている。これから実装が予定されている「Sharding」と「プルーフ・オブステーク(PoS)」といったプロトコルのアップグレードが、イーサリアムの属性を変更することはない。

中央集権性と非中央集権性を分けるものは、ブロックサイズの最大値の固定化にある。簡単に言うと「大きいブロック」は、取引の検証者であるフルノードの数を減少させネットワークを中央集権化させる。

スケーリングの定義

ここではブロックチェーンを活用したネットワークのスケーリングを定義したい。

まず前提としてフルノードの合計数を非中央集権性を表す指標とする。スケーリングの定義は「非中央集権性を損なわずに機能性を向上させる」ことだ。

スケーリングの種類は大きく2つに分類される。

スケーリング・アウト:基礎レイヤーのフルノードの数を増やす。非中央集権性を犠牲にすることなく機能性を向上させる。機能性が向上すると、多くのユーザーを惹きつけるようになるためフルノードの数は次第に増える。「SegWit」のようなアップグレードを指す。

スケーリング・アップ:基礎レイヤー上に別のレイヤーを構築する(複雑性を増す)。いい例は、基礎レイヤーにほとんど影響を与えない「ライトニング・ネットワーク」のようなペイメントチャンネルだ。サイドチェーンは、マイニングによるセキュリティーモデルが低下するためいい例とは言い難い。

その反対が以下だ。

スケーリング・イン:基礎レイヤーのフルノードの数を減らす。基礎レイヤーに機能を加えると、フルノードの数が減る。「Sharding」は、フルノードの数を減少させる。

スケーリング・ダウン:ネットワークのシンプル化。非中央集権のネットワークでは通常起こらない。企業の内部ネットワークなどを縮小化する際に起こる。

フルノードとエッジの重要性

ビットコインのネットワークでは、すべてのノードがフルノードとして取引の検証を行う。仮に誰かが不正な取引を行おうとしたらその取引は破棄される。フルノードは白血球のような役割を担っており、ブロックチェーンのネットワークを守るには最適なセキュリティシステムだ。

フルノードとフルノードを繋ぐコネクションをエッジと呼ぶが、ブロックチェーンのセキュリティにおいて、エッジはフルノードと同等かそれ以上に重要な役割を担っている。ビットコインのネットワークでは、プライバシーとセキュリティを守るためにエッジが分散されている。

エッジが十分に分散されていないネットワークでは

  • ノード同士が互いに誰なのかを認識している
  • ノードは誰が取引を行ったかを認識できる
  • ノードはブロックが誰から伝達されてきたのかを認識することができる
  • コインがどのIPアドレスに紐付いているかがわかるようになる
  • 特定のアドレスからの取引を、ブロックチェーンに追加しないなどの措置を取ることができる

つまりエッジが十分に分散していないネットワークでは、プライバシーが確保されておらず、セキュリティにも問題がある。

フルノードはどの程度の数が必要なのか

上文ではエッジが十分に分散されている必要があると説明したが、「フルノードは実際にどの程度の数が必要なのか」という議論がある。どれだけのフルノードが稼働していればセキュアなネットワークだと言えるのだろうか。

仮に2万のフルノードがネットワークには必要だとしよう。しかしここで問題となるのが、ネットワークを2万という数のフルノードを保つようプログラムすることはできないことだ。もしも我々がセキュアなネットワークの基準となるフルノードの数を知っていたとしても、それを下回っているのか上回っているのかを自発的に教えてはくれない。

さらに2万という数字が、いつまでもセキュアな数字であり続けるのだろうか。もしも地球上の人口が爆発的に増え10倍になったとして、2万という数字は安全なのだろうか。

ここでのポイントは、安全なネットワークを作るために特定の数のフルノードを立ち上げるようプログラムすることはできないという点だ。つまりセキュアな非中央集権のネットワークを作ることが目的であれば、プロトコルが非中央集権性を持っている必要がある。時間の経過とともにフルノードの数が増え、非中央集権化するようにデザインされたプロトコルでなければならないということだ。

非中央集権性と中央集権性

ここでは非中央集権性と中央集権性を説明するために、ビットコインとイーサリアムのブロックチェーンを比較してみることにしよう。

ビットコインのブロックチェーンの伸びは、ブロックサイズの最大値が固定化されているため一時関数のグラフで表わすことができ、ブロックの検証またはフルノードの立ち上げに要求されるコストは安定している。

イーサリアムはガスリミット(ブロックサイズの最大値)が固定化されておらず、拡張され続けておりブロックチェーンの伸びも早くなっている。

一度きりのブロックサイズの引き上げであれば、ブロックチェーンは早く伸びるようになるものの、データ処理に係るコストの増加も一時きりであるため大きな問題にはならないだろう。しかしブロックサイズを「継続的」に引き上げ続ければ、ブロックチェーンの長さと検証コストを表すグラフは以下のような指数関数になる。

非中央集権性をもつブロックチェーン=フルノードの数が増加する。

  • ブロックサイズの最大値が固定化されている=ブロックチェーンの伸びが一定
  • ブロックチェーンの伸びが一定=フルノードの立ち上げコストが一定
  • フルノードの立ち上げコストが一定=フルノードの数は時間の経過とともに増加する

中央集権性をもつブロックチェーン=フルノードの数が減少する。

  • ブロックサイズの最大値が固定化されていない=ブロックチェーンが指数関数的に伸びる
  • ブロックチェーンが指数関数的に伸びる=フルノードの立ち上げコストが指数関数的に増加する
  • フルノードの立ち上げコストが指数関数的に増加する=フルノードの数が減少する

ブロックサイズに最大値が設定されていると、技術の発展とともにフルノードの立ち上げコストが低下し、ユーザーがフルノードを立ち上げやすくなる。言い換えると、時間の経過とともにフルノードの数が増えるということになる。

ブロックサイズに最大値が設定されていないブロックチェーンは、徐々にブロックが大きくなりフルノードの立ち上げに係るコストは上がり続けるため、フルノードの数は減少する。

ブロックサイズの最適なサイズに関する議論もあるが、簡単に変更されることがない最大値が設定されていることが最も重要だ。

将来的に技術が発展し、2MBや8MBのブロックが適正な最大値となることもあるだろう。一方で50TBを最大値として将来的な技術発展を待つこともできる。しかしそれでは、ネットワークは確実に今よりも中央集権化してしまう。

ブロックサイズの最大値が固定化されていて、かつ、最大値を超えるサイズのブロックが生成されれば、それは必ず無効になるということが非中央集権のネットワークを構築するための鍵となる。

イーサリアムのガスリミットに上限はない

イーサリアムのガス(ブロック)には最大値が存在せず、ガスリミット(ブロックの最大値)は徐々に拡大し続けている。仮に技術発展の伸び率がガスリミットの伸び率に比例しているか上回っていたとすれば、ネットワークへの影響は最小限に抑えられる。

しかし、現状のガスリミットの伸び率は技術発展の伸び率を上回っており、ユーザーがフルノードを立ち上げることが困難になっている。これが中央集権性を持つブロックチェーンに起こる事象だ。

Shardingは取引データ処理を複数のノード郡に分担する技術で、一時的にガスリミットの上昇を抑えることができるかもしれない。しかし技術発展が追いつかず時間の経過と共に再びガスリミットは上昇し始めるだろう。つまりShardingではブロックチェーンの中央集権性を非中央集権性に変えることはできない。

ビットコインとイーサリアムの相違は、マイナーがガスリミットを変更できる点にある。ビットコインのネットワークでは、マイナーが立ち上げるフルノードと、ユーザーが取引を検証するために立ち上げているフルノードは、同じ役割を担っている。

イーサリアムのネットワークでは、マイナーがネットワークの状況に合わせてガスリミットを引き上げていくため、フルノードの立ち上げに係るコストはマイナーによって決められる。

イーサリアムのネットワークでは、正当なやり方でブロックが生成されていればどんな大きさであろうと無効になることがない。そのためマイナーのフルノードの方が、ユーザーのフルノードよりネットワーク内での影響力が強いということになる。

取引の検証を行うフルノードの重要性

ビットコインのネットワークでは、通常フルノードは他の8つのフルノードと通信を行っている。仮に、あるフルノードが不正な取引をブロックに入れて送信した場合、8つのノードがそのブロックを検証し、不正な取引が含まれていれば受け取りが拒否される。そのため不正な取引がネットワークに伝達されることはない。

すべてのフルノードは同じ働きをするため、新規のブロックがどのフルノードによって作成されたのかネットワークは知らない。マイナーがマイニングに成功すると、他のフルノードへブロックを送信するが、受け取ったフルノードはマイナーが作成したのか単に伝達されてきただけなのかを識別することはできない。しかしすべてのブロックの取引検証を行っているため、不正があればブロックは破棄される。

フルノードは、すべてのブロックを同様に扱うため、誰が不正な取引を作っているのかわからない。しかしあるマイナーが不正な取引を作り続ければ、フルノードはそのマイナーとの通信を遮断する。この仕組によりどんな強力なマイナーであっても、不正な取引をネットワークに伝達することはできない。

イーサリアムのネットワークでは、ユーザーの多くがフルノードの代わりにライトクライアントを立ち上げている。ライトクライアントは、特定のフルノードと同期することで取引情報を受け取るが、取引の検証作業は行わない。

ライトクライアントは、ネットワーク内の一つのフルノードから取引情報を受け取っているだけで、ネットワークに参加しているとは言えない。また同期しているフルノードに依存しているため、セキュリティー上の問題がある。非中央集権のネットワークでは、取引を検証するフルノードをユーザーが自由に立ち上げれることができる環境が最も好ましい。

非中央集権性とユーザビリティのトレードオフ

ヴィタリック・ブテリン氏は、マイナーのノードが重要であると説明している

イーサリアムのフルノードが減少する原因は、ガスリミットに固定値がないため、作られたブロックがどんなサイズであってもフルノードが受け取りを拒否することができない点だ。ガスリミットが上昇し続けると、多くのフルノードがネットワークと同期できなくなり数が減少していく。

フルノードの数が減少すると、適切な通信相手を見つけることがより困難になっていく。適切なフルノードがネットワーク内で限られた数しか存在しない場合、新たなユーザーが参加する際にデータを送信してくれる相手を見つけることができないため、ネットワークに参加することが容易にできなくなる。最終的に少数のグループが中心となり効率的に通信し合うフルノード郡が、すべてのネットワークへの情報伝達作業を行うようになるだろう。

ガスリミットを一定に保つことで、フルノードの減少は抑えられる。しかし、ガスリミットを上げなければブロックはすぐにスマートコントラクトで満たされてしまう。その場合ユーザーは、高い手数料を支払わなければならなくなる。Dappsの利用コストは大きく上がり、誰も使わなくなるだろう。そのためマイナー達はDappsを稼働させるため、ガスリミットを上げ続けてきた。ガスリミットを上げ続けてきたことで手数料は抑えられてきたが、フルノードの数は減少してきたのだ。

イーサリアムのガスリミットは固定値が設定されていないため現在、ネットワークはフルノードとライトクライアンの2種類のノードに分かれている。Dappsのユーザービリティーを上げるため、マイナーにはガスリミットの調整権が与えられているが、これが中央集権性を強化する要因にもなっている。

ノード立ち上げに大金が必要なPoSのシステム

イーサリアムはスケーリング問題に対する解決策として、Shardingを用意している。Shardingの実装と同時にコンセンサスアルゴリズムをプルーフ・オブ・ステーク(PoS)に変更する予定だ。ここではPoSを実装するにあたり発生するさらなる中央集権化問題について説明する。

PoSに変更されるとPoWで行われているマイニングに必要な演算作業がなくなるため、取引の検証にはマイニング機器を用意したりするという外部的コストがなくなる。検証者は、保有しているコインをステークし、サーバーを立ち上げるだけだ。また、より収益を上げるためにサーバーをアップグレードし、ノードの立ち上げコストを意図的に上昇させ、他の検証者を蹴落とそうとすることが予想される。

検証者になるためには32ETHをステークする必要がある。フルノードを32ETHで立ち上げている検証者は、150万円(ETH=430ドル)をステークしており、すでに金銭的に余裕があるユーザーであると言える。ノードの立ち上げコストがいくらになろうと構わないため、ガスリミットは引き上げられ続け検証データの量も上昇することになるだろう。

PoSはイーサリアムの構想の初期段階から開発ロードマップに含められているが、PoSのノード立ち上げに係るコストをピーク時の価格で計算すると、約450万円が必要となる。イーサリアムは設計段階から中央集権性を持っていたことがわかる。

ネットワークをスケーリング・インさせるSharding

Shardingはイーサリアムのネットワークを「スケーリング・アウト」させると言われているが、実際は「スケーリング・イン」させる技術だ。Shardingが実装されると、フルノードがすべての取引を検証する必要がなくなり、取引をノード郡ごとに振り分け、分業し検証作業を行う。

これにより1フルノードあたりの検証データ量が抑えられ、フルノードの数を増やすことは短期的に可能かもしれない。しかし、これは問題の先延ばしに過ぎず、中央集権性問題の根本を解決するには至らない。

ShardingとPoSから読み取れるイーサリアムの開発者達の考え方として以下のようなことが言える。

  • ベース・レイヤーの取引処理量を増やしたい
  • フルノードの数が減少することを理解しており、減少自体を問題点として捉えていない
  • Shardingによりフルノードの作業を分担しフルノードの数の減少を抑える。最終的にノードの数は減少するが実装しないよりはマシだ
  • ライトクライントと同期させるフルノードがネットワーク内に複数あれば十分だ

次にあるメディアがShardingについて取り上げた記事の一部を紹介しよう。

「Shardingはスケーラビリティ問題に対するベース・レイヤーの解決策で、本質的にブロックチェーンを改善する。現在イーサリアムのノードは、すべての取引を処理しなければならない。これは高いセキュリティーを提供できるシステムである一方、ブロックチェーンの処理スピードは個々のノードの処理スピードと同等であり、合計数がいくらであろうと変わらない。Shardingではブロックチェーンのネットワークを複数のShardに分散し、それぞれが独立した取引履歴を保有する。ここでは個々のノードはそれぞれのShard内の取引を検証する。これによりネットワーク全体として検証効率が上がる。一つのノードがすべての取引を検証する必要はない」

この記事には、多くのバズワードが使われているが、技術的な詳細や重要な情報が含まれていない。スケーラビリティが何なのかや、検証が何をさすのかをハッキリさせるべきだ。ノードが何なのか、ライトクライアントを含んでいるのか否かについて言及されていない。

記事を簡単に説明すると、「ノード」はすべて「150万円相当のETHにより立ち上げられるノード」に置換できるということだ。

多くのSharding関連記事では「ノードの負担が軽減される」と書かれているが、ノードの立ち上げには150万円が必要で、ラップトップを使ってノードを立ち上げることはできない。

Shardingの概要

Shardingは一つのブロックチェーンを複数のブロックチェーンに分割する。それぞれのShardの中のブロックをCollationsと呼び、ShardのブロックチェーンをCollation chainと呼ぶ。

Shardingには3つの異なるノードが存在する。

  • Executorノード(青)はShard内のCollations(紫)を検証する
  • Collatorノード(赤)はShard内の取引データをCollationに入れ、Executorノードへ伝達させる
  • ライトクライアント(ピンク)は、行われた取引の確認をするだけで、ネットワークに対する影響力はない

イーサリアムのノードと、ビットコインのノードが指す役割と意味は異なる。ビットコインのノードはすべてフルノードであり同じ働きをする。

イーサリアムのネットワークで重要なのはExecutorノードとCollatorノードであり、32ETHをステークする必要がある。ライトクライアントは好きなShardを選んで同期するか、各Collationsのヘッダーを管理するメインチェーン(緑)と同期することができる。

ここまでのポイントは

  • ExecutorノードかCollatorノードを立ち上げるには32ETHが必要になる
  • ライトクライアントはブロックが生成されても受け取ることはなく、コンセンサス・コードを実行することもない。不正な取引が行われてもそれを不正であると主張することはできない
  • メインチェーンは取引データを保有しておらず、Collation Chainのヘッダーを記録しているだけ

図からもわかるように、ShardingとPoSが実装されるとピンクのライトクライアントがネットワークの大多数を占めるようになる。しかしライトクライアントはネットワークに対し何の影響力も発言権も持たない。32ETHを保有していない限り、ユーザーはライトクライアントとしてネットワークに参加するしかない。

まとめ

Shardingは、フルノードのデータ処理量を減らすことができる技術だが、データ処理量を減らしても、本質的にイーサリアムが抱える中央集権性から逃れることはできない。

非中央集権性を持つブロックチェーンのネットワークでは、時間の経過とともにフルノードの数が増加する。一方、中央集権性を持つブロックチェーンのネットワークでは、時間の経過とともにフルノードの数が減少する。

イーサリアムのネットワークでPoSのフルノードを立ち上げるユーザーの目的は、利益の最大化だ。ステークによって得た報酬を使ってユーザーは、さらにフルノードを立ち上げるようになる。報酬を繰り返しステークすることで、複利効果によりユーザーの利益は最大化する。そして特定のユーザーが立ち上げるフルノードしか存在しないネットワークになり中央集権化する。

今回の論点は、イーサリアムが機能するか否かではなく、Shardingという技術がネットワークの非中央集権性を保つことができるのかだ。実際にShardingが実装される前であるため不確定的な要素を含んでいるが、長期的に中央集権化する方向性は変わらないだろう。

仮にユーザーがネットワークの中央集権化を気にしないのであれば、イーサリアムの代わりにEOSを使っても同様の機能を提供してくれる。Googleもその気になれば、世界中のすべての取引処理をサービスとして提供することができるだろう。しかし私はブロックチェーンに中央集権のペイメントネットワークを求めてはいない。

Sharding centralizes Ethereum by selling you Scaling-In disguised as Scaling-Out


無料メールマガジン

BTCNの最新ニュースを毎日お昼ごろお届けします!


まだデータがありません。