イーサリアムのスケーラビリティ問題とその解決策

目次

    本記事ではイーサリアムのスケーラビリティ問題とその解決について説明します。そもそもスケーラビリティ問題とは一体何なのでしょうか?なぜイーサリアムは“詰まって”しまうのでしょうか?

    なぜイーサリアムは詰まるのか

    イーサリアムに関わらず、ビットコインをはじめとする仮想通貨はブロックチェーンと呼ばれる分散型台帳システムに取引(トランザクション)の記録を書き込むことによって動いています。ある一定時間内におけるトランザクションは、最新のブロック(ブロックチェーンの先頭)に書き込まれることになりますが、書き込むことができるトランザクションの量(容量)には限りがあります。よって、あるブロックに収まりきらなかったトランザクションは、次のブロックに書き込まれるのを待つことになります。

    例えば、一つのブロックは10件のトランザクションを取り込めるとし、100件の未承認のトランザクションが存在するとします。現在のブロックは10件しかトランザクションを取り込めないため、ブロックに入ることが出来なかった残りの90件のトランザクションは、次回以降のブロックを待つことになります。この状態においては全てのトランザクションが承認されるのは9ブロック先となります。(実際には常に新しいトランザクションが発生しているため、9ブロック先までに取り込まれる保証はありません。)

    イーサリアムのブロック生成時間は15秒~17秒と言われており、1ブロック待つ程度であれば人によっては気にならないかもしれません。しかしこれが1ブロック、2ブロック…と待たされることになると、トランザクションが“詰まった”と感じるユーザーが多くなるでしょう。

    最近はこのトランザクション詰まりが頻発するようになってきており、それに対する解決策の導入が期待されています。このことを「イーサリアムのスケーラビリティ問題」と呼んでいます。このスケーラビリティ問題に関して私たちができることは、イーサリアム送金時の手数料を高めに設定することぐらいです。これは高い手数料が付加されたトランザクションほどブロックに取り込まれやすいためです。

    ここで”一度に取り込めるトランザクション数を増やせば良いのでは?”と思いつく方もいるかもしれません。一つの方法としてブロックの容量を増やす必要があります。しかし単純にブロックサイズを大きすることには次のようなデメリットがあります。

    それはマイニングに関わる者(マイナー)に、より高性能な計算機リソース(ストレージ容量、通信速度...etc)が求められることです。マイナーには個人から企業まで様々な規模が存在します。しかし肥大化したブロックチェーンの処理が、企業のような大規模マイナーでしか処理できないようになってしまうと、イーサリアムネットワークの分散化が妨げられ中央集権化が進む恐れがあります。これはイーサリアムにとって望ましい状況とは言えないでしょう。

    数字で見るトランザクション詰り

    ここで実際にどれほどのトランザクションがイーサリアム上で実行され、詰まっているのかを確認してみましょう。

    次の図はイーサリアムのトランザクション数の日時推移を示したものになります。一目見て分かるように、トランザクションの数は2017年の7月あたりから大幅に増加していることが分かります。グラフを見る限り、このままトランザクションの数は増え続けることが考えられます。

    (12月12日午前11時点 引用:https://ethgasstation.info/gasguzzlers.php

    一方で、下図はPending transactions Queueの数、つまりどれだけのトランザクション数が詰まっているか(送金待ちか)を示したグラフになります。2018112~2018117日の状況が掲載されており、1分間あたり2~3万件ほどのトランザクションが詰まっていることが分かります。

    (引用:https://etherscan.io/chart/pendingtx

    トランザクション詰まりの要因

    トランザクション詰まりが起こる根本的な原因としては、ある一つのブロックに書き込めるトランザクションのデータ量に限りがあることは先に述べた通りです。ここでは、トランザクションのデータ量が増えてしまういくつかの要因について説明します。

    ユーザー数の増加

    トランザクションの数が増える要因として、真っ先に思い浮かぶのがユーザー数の増加です。具体的にイーサリアムを利用しているユーザーの人数を正確に知ることは難しいので、代わりにイーサリアムのアドレス数で考えてみましょう。下図はイーサリアムのアドレス数の増加を示したグラフになります。

    (12月12日午前11時点 引用:https://etherscan.io/chart/address)

    2018118日現在、アドレス数は2200万を超え、約20/日の勢いで増加しています。さらにグラフの傾きを見ると急激にアドレス数が増加していることが分かり、今後も増え続けるものと考えられます。ユーザー数が増加している背景としては、イーサリアム上で動作するアプリーケーションの開発(ICO,Dapps)が活発化していること、イーサリアムの価格が高騰していることなどが挙げられます。これらに関しては下記の記事が参考になるでしょう。

    当然、ユーザー数(アドレス数)が増加すればするほど、トランザクションの数も増えることになります。一方で、イーサリアムの一つのブロックの容量は簡単に増やすことができません。ですので、多くのユーザーが一度にイーサリアムの送金を試みた場合(価格が暴騰、暴落した場合など)、トランザクションが詰まる状況が発生してしまいます。

    ICO, DAppの増加

    イーサリアムは、ブロックチェーン上で動作するアプリケーションのプラットフォームを目指してこれまで開発を続けてきました。簡単にトークンの発行/スマートコントラクトの実行ができることから、ICO(Initial Coin Offering/新規仮想通貨公開)やDApp(Decentralized Application/分散型アプリケーションサービス)にイーサリアムが用いられています。

    これらのアプリケーションの実行には、当然イーサリアムのブロックチェーンを利用することになります。そうするとイーサリアム自身は単純に「送金情報」のトランザクションを取り込むだけでなく、「送金+様々な情報(スマートコントラクト)」のトランザクションを取り込む必要があります。最近はICOやDAppの数が爆発的に増加していることもあり、それ自体は悪い事ではないのですが、イーサリアムに対して負荷となっています。

    ノード数

    イーサリアムをはじめとする仮想通貨の多くは、P2Pと呼ばれるネットワーク上で動いています。P2Pネットワークを結ぶ一つ一つの点をノードと呼ぶのですが、イーサリウム上には32,000ほどのノードが存在しています。これらノードには様々な種類がありますが基本的にはトランザクションの処理検証作業(マイニング)および情報の伝搬- を行なっています。

    ノードの数が多いことは、それだけネットワークが分散化しており、非中央集権化されているということになります。このオープンなネットワークは、誰でも参加できるものであるがゆえ、各々のノードのスペック(処理速度、通信速度…etc)は大きく異なります。低スペックのノードはそれだけトランザクションの処理・伝搬が遅く、ネットワークにとっては足手まといになってしまいます。なぜならトランザクションはすべてのノードの行き渡り検証される必要があるからです。

    このノード数という点に関しては、分散化とトランザクションの処理速度はトレードオフの関係にあります。また今後イーサリアムの拡大に伴い、各ノードに求められるスペックが上がってくると、当然脱落するノードも出てきます。こうなるとある特定のノードしかトランザクションを処理することができなくなり、非中央集権化→中央集権化の流れが進むことになってしまいます。

    スケーラビリティ問題の解決策

    今後のイーサリアムの発展のためには、非中央集権化とセキュリティーを維持しながら、トランザクションの処理速度を上げていく必要があります。現在、スケーラビリティ問題に対してどのような解決策が考えられているのでしょうか?いくつかの手法がオフチェーン処理、オンチェーン処理として考えられています。

    オフチェーン処理における解決

    まずオフチェーン処理とはそもそもなんでしょうか?オフチェーン処理とは、本来ブロックチェーン上で処理されるトランザクション(の一部)を、ブロックチェーン外で行うことです。これによって、ブロックチェーン本体で処理されるトランザクションの情報量を減らすことができ、トランザクションの処理速度を高めることができます。

    プラズマ(Plasma)

    プラズマは、イーサリアムのブロックチェーンから不必要なデータを取り除き、トランザクションを高速化することを試みているプロジェクトです。プラズマは2017年8月にイーサリアム創設者のヴィタリック氏によって発表されました。

    現在起きているスケーラビリティ問題は、イーサリアムのブロックチェーンにトランザクションの全ての情報が記録されてしまうことが原因とも言えます。そこでブロックチェーンに記録されるデータ量を減らしてあげることが一つの解決策となりえます。

    階層構造を持ったサイドチェーンをブロックチェーンとは別に用意することで、トランザクションの拡張が可能です。後述するライデンネットワークは、マイクロペイメント(少額支払い)に焦点を当てた解決策ですが、プラズマはより複雑なトランザクション処理に焦点を当てているためイーサリアム上で動作するDApp等が恩恵を受けられると考えられます。

    ライデン(Raiden)

    ライデンとは、現在イーサリアム上で処理されているEtherやERC20に準拠したトークンの送金をオフチェーンにおいて行うスケーラビリティ解決策です。ライデンネットワークの導入によって、イーサリアムの1秒あたりのトランザクション数の引き上げとトランザクション手数料の引き下げが可能とされています。主にライデンネットワークはマイクロペインメントをターゲットとしており、以下のような特徴を持った支払いが可能です。

    • 高速性:1秒以内に送金完了
    • 安い手数料
    • 秘匿性:ブロックチェーンには個々の取引は記録されない
    • 拡張性:100万トランザクション/秒

    ライデンネットワークに参加するユーザーは、送金の際にある金額のEtherをデポジットし、支払いのための専用チャンネル(ペイメントチャネル)を開きます。このペイメントチャネルを利用することによって二者間の送金が実質無制限に(ただしデポジット金額を超えない範囲で)行えます。

    取引の途中経過は記録されず、最終的な結果のみがメインのブロックチェーンに記録されます。また複数のユーザー間における送金もカバーしています。ライデンネットワークはマイクロペイメントに焦点を当てているため、イーサリウム上で動作するDApp等はその恩恵を受けづらいと考えられます。

    オフチェーン解決策として、プラズマおよびライデンを取り上げましたが、これらの技術は実装に向けて開発中の段階で、実用化の目処は今のところ公表されていません(2018年1月23日現在)。

    オンチェーン処理における解決

    オフチェーンの対義語として、オンチェーンが挙げられます。オンチェーンとはブロックチェーン自身のことを指しており、本記事における”オンチェーン処理における解決”とは、イーサリウムのプロトコル基盤自身を変更することを指しています。

    PoSの導入

    現在、イーサリアムの合意形成(トランザクションの検証作業)はプルーフ・オブ・ワーク(PoW)と呼ばれるアルゴリズムによって行われています。しかし将来的にはプルーフ・オブ・ステーク(PoS)と呼ばれるアルゴリズムに移行することが予定されています。

    簡単にPoW/PoSの違いを述べると、PoWはトランザクションの検証作業(マイニング)に最も貢献した者が報酬をもらえますが、PoSは仮想通貨をより多く、そして長く保有している者が報酬をもらえる仕組みになっています。

    より詳細なPoW/PoSの仕組みに関しては、こちらの記事が参考になります。

    「ビットコイン&イーサリアムブロックチェーンの仕組み PoWの特徴と課題」

    PoWからPoSへ移行することによって、検証作業に割かれる時間がなくなりブロックの生成時間を早めることが出来ます。結果として、1秒あたりに処理できるトランザクションが増えるため、スケーラビリティ問題を解決する一つの手段になりえるでしょう。

    シャーディング

    ノード数増加において、検証作業を担う全てのノードが全部のトランザクションの処理を行う必要があると述べました。これではイーサリアムネットワークの処理能力は一つのノードの処理能力と同じになってしまいます。そこでイーサリアム創設者のヴィタリック氏が提唱しているのがシャーディング(Sharding)です。

    シャーディングとは、処理すべきトランザクションをいくつかのシャード(Shard:破片)に分割し、それをいくつかのノードが集まったグループが役割を分担しながらトランザクションを並列的に処理することです。普段は割り当てられたトランザクションのシャードをグループごとで処理し、定期的にその結果をグループ同士で同期し合うことになります。

    このシャーディングによって、大幅に処理速度を上げることができ、スケーラビリティ問題を解決することができると考えられています。なおこのシャーディングの導入にはセキュリティの観点からPoSの導入が前提とされています。シャーディングにPoSの導入が必要な理由は以下の記事に分かりやすくまとめられています。

    「シャーディングは、全てのノードが全てのトランザクションの検証作業を行うのではなく、複数のノード群でトランザクションの検証作業を役割分担していくことでした。つまり、それぞれのシャードごとに状態が異なり独立して成り立っています。なので、少ないマイナーのハッシュパワーによってセキュリティが維持されているシャードに対して、攻撃が簡単になってしまうという問題があります。例えば、シャードAとシャードBをという2つのシャードに分かれて検証作業を行っているとします。そして、シャードAが全体の10%のハッシュパワーを持っていて、シャードBが90%のハッシュパワーを持っている場合、シャードAに対してはたった5.1%のハッシュパワーで51%攻撃が可能になってしまいます。」(引用:https://zoom-blc.com/sharding-ethereum

    コメントする

    メールアドレスが公開されることはありません。