This article is translated from

Ethereum 2.0: A Complete Guide. Scaling, Part One by Colin Schwarz

訳者:@zaki_prog

Image for post
Image for post
Image Courtesy of CC Search. By Stan Levandovsky

私が前回の記事(イーサリアム2.0:コンプリートガイド)で述べたように、Ethereumが現在直面する最大の課題はスケーラビリティの問題です。Ethereum上では何百ものdappsが稼働しており、高いスループットを確保する必要があります。単にノードの数を増やしただけではスケーラビリティを獲得することはできません。すべてのノードがトランザクションの承認を行っているからです。多くのdappが作られ、より多くのトランザクションが発行され、Ethereumネットワークが頻繁に使われるようになったことでトランザクションにかかる時間とコストが大きくなってきています。そうするとEthereumネットワークは遅く、より不便になります。最近のスピードテストでは、ネットワーク速度は20TPS(Transaction Per Seconds, トランザクション毎秒)にとどまっています。(昨年出された多くの情報では大体が12から45の範囲です)一方、中央管理されたネットワークでは、PayPalで193TPS、VISAで1667TPSの平均速度が出ており、VISAの最大速度では約24000TPSほどです¹。Ethereumネットワークの使用が拡大するにつれて、スケーラビリティとマスアダプションの問題を解決する、優れた、効率的な仕組みを実装する事が日に日にその重要度を増しています。Ethereumコミュニティは2014年からネットワークをスケールさせる方法について調査をはじめました。現在までにEthereumやその他のブロックチェーンネットワークはいくつかの方法を検討してきましたが、EthereumコミュニティはShardingを最も有望な解決策として結論付けました。この記事のPart1では、今までに検討されてきたいくつかのメソッドについて見ていきます。Shardingに劣るものや、Shardingと相補的に実装できるものなどです。Part2ではShardingそのものについての詳細と今後のロードマップを俯瞰します。

Image for post
Image for post

Ethereumのスケーリング問題について理解するためには、ブロックチェーンのトリレンマについて知る必要があります。この問題はEthereumの共同開発者Vitalik Buterinにより指摘されたもので、ブロックチェーンネットワークは、分散性、セキュリティ、スケーラビリティの3つの要素のうち2つまでしか完全に同時に満たすことはできない、という問題です。

最適解は、ブロックチェーンが機能しなくなったり、妥協した性能にならない程度にどの要素も成り立たせることです。現在、Ethereumネットワークは分散されておりセキュアですがスケーラブルではありません。長い目で見て包括的なソリューションを生み出そうとするなら、ネットワークをスケーラブルにしようという試みにおいて分散性とセキュリティを損なってはいけないのです。

ブロックチェーンをスケーラブルにしようというアイデアで最も単純なものは、それぞれのブロックサイズを大きくすることです。Ethereumのブロックのサイズはガスリミットにより決められています。現在は800万ガスです。どういうことかというと、ブロックが生成される速度は変わらないので、ガスリミットを増加させると、一つのブロックにより多くのトランザクションを含むことができるようになり、ネットワークのスループットが向上する、ということです。これは技術的には正しいのですが、一定以上に大きくしてしまうと別の問題を生み出してしまい、そのような問題を回避しようとするとスループットの向上はあまり見込めないというジレンマがあります。まず問題点の1つは、サイズの大きなブロックは処理するのには時間がかかり、高レイテンシを引き起こし、ネットワーク全体に悪影響を与えてしまうことです。これによりブロックサイズが一定を超えると、より高価で最新のハードウェアを持つ人々のみがマイニングを出来るようになってしまいます。2つ目の問題点は、ブロックが大きくなるということはより大きなストレージが必要になるということであり、それぞれのノードに要求される性能も高くならざるを得ないというものです²。現在、Ethereumブロックチェーンの総容量はおよそ227GBです。今までのブロックサイズを仮に2倍にしたとすると、これが2倍になるということです。しかしそれにより得られるスループットの向上は劇的と言えるほどではありません³。繰り返しになりますがこの問題も、より良い性能とより大きなストレージを備えたハードウェアをもつ裕福な人間に有利な状況を生み出してしまいます。3つ目の問題点は大きなサイズのブロックとノードが同期するのは難しいということです。これにより、同様に裕福な個人が有利になり、ネットワークの再構成が遅くなり、攻撃の際にはより困難になります。これらの理由でブロックサイズを最適点以上に大きくし、劇的にスループットを向上させることは、ネットワークの中でより豊富なリソースを持つ人々に力を集中させる原因になり、平均的なユーザがノードを立てたりマイニングをしたりできなくなってしまう状況を引き起こすことで、中央集権化のリスクを増大させます

ネットワークのスケーラビリティを向上させる、もう一つの不完全な方法は、様々なアルトコインを使用してメインチェーンの負担を軽減する、というものです。すべてのトランザクションをメインチェーンのみに送るのではなく、それぞれ異なる性能をもつ小さいチェーンに分散させるということです。この方法はスループットを先程の方法よりも安定的に向上させる可能性を秘めていますが、それと引き換えにセキュリティが損なわれてしまう恐れがあります。なぜなら、市場が小さく時価総額も低いアルトコインを攻撃するのに必要なリソースはそれほど大きくないからです。Vitalikが指摘するように、「この方法において、スループットを向上させるある要素Nは必ず同時にセキュリティの減少も引き起こ」します。そのため、この方法はNの影響が小さいときに限り安全です。つまり、この方法ではスケーラビリティを劇的に向上させ、同時にセキュリティも保つことは実現出来ないのです

ネームコインなどのプロジェクトで採用されているマージマイニングという仕組みでも同じような方法が使われています。アルトコインを使用する方法と同様に、マージマイニングはトラフィックをいくつかのサイドチェーンに振り分けることで、メインチェーンの負担を軽減させ、スループットを向上させる仕組みです。しかし、アルトコインとは違い、マージマイニングではすべてのサイドチェーンで同じプロトコルを用い、ネットワーク上のマイナー、PoSではバリデータも共有します。そのため、攻撃コストを増加させ、アルトコインを用いる方法よりもマージマイニングはセキュアなものになっています。またマージマイニングは安定的にスループットを向上させます。しかし、スループットの向上に伴って、必要なマイニングパワーも上昇し、先程のブロックサイズを大きくする方法と同様、中央集権化の危険をはらんでいます。上述した方法はすべて、Ethereumのスループットを向上させる可能性を秘めていますが、分散性やセキュリティという高いコストと引き換えにという条件付きです。そのため、トリレンマに対する満足のいく解決策とはいえず、Ethereum2.0を推し進めるチームからは却下されました。

最近になって、スループットの向上を可能にしながらも分散性とセキュリティを損なわないような方法が調査され、いくつかのプロジェクトでは実際に実装されています。その方法の一つは、ZK-SNARKsやMimbleWimbleのようなより高度な暗号を使用して、ノードの承認スピードを向上させるというものです。これらのシステムにより、チェーンにつながるブロックの正当性を暗号学的に証明可能な方法で各ノードがより簡単に行うことができるようになります。各ノードがチェーン全体の情報を自ら保持し、ジェネシスブロックから最新のブロックまで続くチェーン全体の正当性を承認するのではなく、「証明」を承認するだけで済むようになるのです。ZK-rollupsやZK-ZK-rollupsなどもEthereumのトランザクション処理スピードを最大で30%向上させる方法として検討されています。これらの機能によりトランザクションスピードが向上することが期待されていますが、完全な解決策ではありません。ヴィタリクも、上記のような純粋な暗号学を使うよりも暗号経済学を使用すれば同様の成果を得られると発言しています。

有望な解決策の1つはPlasma chainです。Plasma chainは半独立的なブロックチェーンでEthereumメインチェーンにくっつき、トランザクションを送ることができるものです。これらのトランザクションはメインチェーンでひとつずつ処理したり、複数のトランザクションをまとめてメインチェーンで処理することもできます。わかりやすい例えとしては、Plasma chainはカジノで使うチップのようなものです。顧客は通貨でチップを購入し、チップをカジノ内のルールにしたがって使用します。カジノでのプレイを終えれば、それらのチップを再度通貨に変える事ができます。この例の通貨をイーサに、チップをそれぞれのPlasma chainで使われるコインに変換すれば同じことです。この方法では、トランザクションをメインネットから分散させ、ノードは計算リソースをより効率的に、より論理的な目的に使用することができます

Plasma chainは他の方法に比べてよりセキュアなものです。なぜなら、Ethereumのメインチェーンと連携しており、メインチェーンを常に正として扱うからです。それによりユーザーはイーサやプラズマトークンを引き換えるときに、Ethereumメインネットのセキュリティを享受することができます。Plasma chainはマップリデュースとマークルツリー構造を組み合わせ、不正なアクターの登場の際にすばやく簡単に不正を見抜く事ができます。Collin Cusceは「Plasma chainにステイクする参加者たちはそれぞれが監視をして、不当な行為を発見した際にはProofsという形でその主張をルートチェーンに訴える事ができる。」と説明しています。Plasma chainはロールバックを行うこともできます。ロールバックは参加者の行動が不正だと認定されたときに発生し、すべての資産は不正が起こる前の状態に戻されます。このロールバックはコンピュータリソースの消費がとても少なく、親チェーンのたった2ビットしか消費しません。これによりPlasma chainはそれぞれの親チェーンがスケーラブルになり、より良いパフォーマンスを発揮することを可能にします。また前述のようにPlasma chainは親チェーンのネットワークや機能、プロトコルを使用することでセキュリティを保証しています

このようにPlasma chainは、その他の方法よりもネットワークを動的にかつセキュアにスケールさせる可能性を秘めていますが、他の方法と同様、Plasma chainにもいくつかの問題があります。1つ目の問題として、Plasma chainはEthereumのスケーラビリティを一定の割合で上昇させますが、指数関数的な劇的な上昇を可能にするものではありません。またEthereumチェーンのセキュリティを使用することである程度のセキュリティを保っていますが、メインチェーンと同レベルのセキュリティを持っているわけではありません。アクセス拒否攻撃などに対しては脆弱です。問題の原因は、小さなブロックチェーンには大きなブロックチェーンよりもノードやユーザーが少なく、攻撃に対しての耐性が低いということです。もしPlasma chainで不正があった場合、そのチェーンにいるすべてのユーザーは資産をEthereumメインチェーンに退避させる必要があります。もし退避させようとするユーザーの数が非常に多く、メインネットが短期間で発揮できる計算能力を超える負荷がかかってしまった場合、その時点で退避が完了していないユーザーはアクセス拒否攻撃を受けてしまいます。これは重大なセキュリティの問題です。EthereumのShardingFAQページではそのような事態が発生したときには「ブロックチェーン上にすべての資産退避を処理する十分なスペースがなくなり、システムが安全でなくなる」と書かれています。しかし幸運なことにこの問題を軽減する方法もあります。例えば同時に多数の引き出し要求が来たときに自動でそれらを遅らせるようにすれば、ユーザーの資産を安全な状態にすることができます。これは多くのユーザーの資産を、攻撃者が長い間ロックアップすることを可能にしてしまいますが(サービス拒否状態)、先程のアクセス拒否よりはいくらかマシなものです。また、もし攻撃にあったPlasma chainが高額なトランザクションではなく、マイクロペイメントなどの小額決済に主に使用されていれば、影響はさらに小さくなります。実際、Plasma chainはこういった少額決済が最も適当な使用方法です。なぜなら高い手数料と長い処理時間がかかるメインチェーンで何回も小さいトランザクションを発行するメリットは無いからです。またPlasma chainで起こるいかなる問題もEthereumメインチェーンのセキュリティを脅かすことは無いということも重要な事実です。

まだ比較的新しく十分なテストも行われていませんが、Plasma chainのメリットはデメリットを十分に上回るように思えます。CryptoKittiesがメインチェーンでローンチされた時、トランザクション量が増加し、手数料が上昇し、処理待ち時間の増加を引き起こすなど、ネットワークのユーザビリティに明らかにネガティブな問題が発生しました。もしCryptoKittiesがPlasma chain上で動いていれば、メインチェーンはより重要でより大きな額を動かすトランザクションを自由に処理でき、ユーザビリティが損なわれることも無かったでしょう。またこの”kitty chain”上のトランザクションやアセットの総額は比較的小さいものになり、攻撃するインセンティブを小さくすることにもつながったでしょう。またもし先程のような攻撃が起きてしまったとしても、現実世界に与える影響が壊滅的となることもありません。Vitalikも、Plasma chainを使用することで起きるトレードオフは前述のトリレンマのトレードオフとは別の性質のものであり「より軽微なトレードオフだ」と述べ、Plasma chainを導入すれば「現状を大きく改善することにつながる」と発言しています。また最大の利点は、Plasma chainとShardingが共存可能なことでしょう。Ethereum2.0はどちらの機能も実装される予定なので、ユーザーはShardingを実装したメインチェーンかPlasma chainのどちらかを使用する、もしくはどちらも使用する、というように彼らのニーズに合わせて選択することができるようになります。

もう一つの解決策としてはビットコインのライトニングネットワークやEthereumのライデンネットワークのように、チャネルを使用したものです。State channelはPlasma chainと似たような利点や欠点を持ちますが技術的には大きく異なるものです。Plasma chainのようにメインチェーンとは別にチェーンを作るのではなく、ライデンはEthereum上でスマートコントラクトを使用するユーザー達のネットワークです。ネットワーク上でアセットを送信したいユーザーはEthereumのメインチェーンにつながった特殊なコントラクトにイーサをデポジットする必要があります。そのスマートコントラクトが

ライデンネットワーク上で他のユーザーと直接つながるチャネルを開き、デポジットはトランザクションの担保として使用されます。デポジットしたユーザーはデポジットした額と同じかそれ以下の量のイーサを送る事が出来ます。チャネルを開いた二人のユーザー以外にはこのスマートコントラクトへのアクセス権はなく、イーサをデポジットする事で二重支払いやその他の不正を出来なくさせています。取引を行うどちらの側もデポジットされたイーサと結びつく電子署名を送らなければならず、それにより彼らに責任を発生させています。そうする事で、トランザクションが一度承認されればそれを取り消すことは出来無くなります。この仕組みが、システムを公平で一貫性のあるものにすると同時にセキュアなものにしているのです

もしユーザーが他の人とState channelを使って取引したい場合、必ずしも新しいチャネルを開く必要はありません。「彼ら二人をつなぐルートがネットワーク内に存在するのであれば」彼らの間に既に存在する複数のチャネルを使って取引する事が出来ます。この仕組みにより、たとえユーザーが1つや2つしかチャネルを開いていなくても、大量のトランザクションを発行することが出来ます。2人のユーザー間で直接チャネル開いた場合、トランザクションにはセキュリティのためのデポジット以外には何も払う必要がありません。複数のチャネルをまたぐトランザクションでは中間のチャネルはトランザクションに対してチャネルの使用料として少しだけ手数料を取る権利があります。手数料の設定額は自由競争に晒されるため、手数料は送る金額に比例し、低く抑えられます。State channelの一番大きな強みの一つは、チャネルにおけるトランザクションはメインチェーンのトランザクションのようにネットワーク全体の承認を得る必要がないため、ほとんど即時に行う事が可能だという事です。さらに、メインチェーンはチャネルを開くときと閉じる時の2回以外、チャネル内のいかなる活動にも影響されません。Plasma chainと同じように、State channelもShardingと補完的です。そのため現在同時に開発が行われています。残念なことにPlasma chain同様、State channelもサービス拒否攻撃に対して脆弱です。しかし、既に述べたように、これらの攻撃は軽減する事が可能で、セキュリティを根本から脅かすものではありません。ライデンネットワークはチャネルを使用した、完璧にではないにしても劇的に、スケーラビリティを向上させるもので、分散性やセキュリティも保つ事が出来ます。ShardingFAQ上で「Sharding(またその他の機能)によるオンチェーンのスケーリング、そしてチャネルによるオフチェーンのスケーリングはどちらも必要で相互に補完しあうものだ。」と説明されています。

Ethereumやその他のブロックチェーンで、セキュリティと分散性を損なわない、多くのレイヤー1の選択肢が研究され試されてきました。いくつかは失敗し、いくつかは限定的に成功しました。膨大な研究の結果、Ethereumコミュニティはスケーラビリティを向上させ、トリレンマ問題を解く最も有望な手段としてShardingを選択しました。Plasma chainとState channelはShardingとともに使用されることとなるレイヤー2の解決策です。

この記事のレビューを行い、貴重な提案をしてくれたAidan Hyman、Greg Markou、 Cayman Navaに感謝します。また、この記事はこの業界における多くの優れた著者による研究がなければ決して完成しませんでした。この記事で引用した研究に関わった全ての人に感謝します!

  1. “Ethereum 2.0.” https://medium.com/rocket-pool/ethereum-2-0-76d0c8a76605
  2. “Why Scaling Public Blockchains is a Lot Harder Than Just Increasing Block Size.” https://medium.com/gochain/why-scaling-public-blockchains-is-a-lot-harder-than-just-increasing-block-size-5c5e7ed53c38
  3. “Cryptocurrency Statistics.” https://bitinfocharts.com
  4. “Sharding FAQs.” https://github.com/ethereum/wiki/wiki/Sharding-FAQs
  5. “Ethereum Plasma — Part 1: Scaling Problems.”https://medium.com/@collin.cusce/why-business-needs-ethereum-plasma-now-scaling-problems-pt-1-8d6186438b5
  6. “Ethereum Plasma — Part 2: How It Works.”https://medium.com/@collin.cusce/why-business-needs-ethereum-plasma-now-how-it-works-key-components-pt-2-37a82737cd54
  7. “What is the Raiden Network?” https://raiden.network/101.html
  8. “Transcript: Scalable Blockchains as Data Layers.” https://medium.com/@trenton.v/transcript-scalable-blockchains-as-data-layers-vitalik-buterin-11aa18b37e07

Works Cited

BitInfoCharts. “Cryptocurrency Statistics.” May 6, 2019.https://bitinfocharts.com/

Cusce, Collin. “Ethereum Plasma — Part 1: Scaling Problems.” Medium. Oct 18, 2017. https://medium.com/@collin.cusce/why-business-needs-ethereum-plasma-now-scaling-problems-pt-1-8d6186438b5

Cusce, Collin. “Ethereum Plasma — Part 2: How It Works.” Medium. Oct 18, 2017. https://medium.com/@collin.cusce/why-business-needs-ethereum-plasma-now-how-it-works-key-components-pt-2-37a82737cd54

Langley, Darren. “Ethereum 2.0.” Medium. August 7, 2018.https://medium.com/rocket-pool/ethereum-2-0-76d0c8a76605

GoChain. “Why Scaling Public Blockchains is a Lot Harder Than Just Increasing Block Size.” Medium. Accessed November 12, 2018.https://medium.com/gochain/why-scaling-public-blockchains-is-a-lot-harder-than-just-increasing-block-size-5c5e7ed53c38

Raiden Network. “What is the Raiden Network?” Accessed April 12, 2019.https://raiden.network/101.html

Ray, James editor. “Sharding FAQs.” Github. August 22, 2018.https://github.com/ethereum/wiki/wiki/Sharding-FAQs

Van Epps, Trenton. “Transcript: Scalable Blockchains as Data Layers.” Medium. March 17, 2019. https://medium.com/@trenton.v/transcript-scalable-blockchains-as-data-layers-vitalik-buterin-11aa18b37e07

Blockchain Engineer / IOST / DApps development / https://twitter.com/zaki_prog

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store