イーサリアムの技術
本記事では、イーサリアム(ETH)の技術的な特徴と課題、またそれを解決する大きな進化である「イーサリアム2.0」の内容にも踏み込んで解説します。
イーサリアムは時価総額でビットコインに次いで2位を維持している仮想通貨(暗号資産)ですが、2019年10月には大阪で開発者会議「Devcon 5」が開催され、3000人以上の開発者が集結するなど技術的な進化が止まらないことも大きな特徴となっています。
1.使用言語と開発環境
開発に使われているプログラミング言語
イーサリアムはC++やGoなど様々な言語で開発が行われているオープンソースのプロジェクトです。
関連:Github : ethereumこれらとは別に、イーサリアム上でのアプリケーション作成専用に特殊なプログラミング言語も用意されています。
イーサリアム上で動くプログラムは一般的に「スマートコントラクト」と呼ばれ、スマートコントラクトを記述するためのプログラミング言語として、最も広く使われていてJavaScriptに似ている「Solidity」、セキュリティにフォーカスしたPythonベースの「Vyper」があります。
イーサリアム上での開発にスマートコントラクト用の言語やブロックチェーンプログラミング特有の考え方について学ぶ必要がありますが、webベースの統合開発環境 (IDE)など様々な開発者のためのツールが整備されており、開発の敷居はかなり低くなっていると言えるでしょう。
参考:開発者リソース一覧
開発体制
イーサリアムもビットコインと同様に特定の管理者が存在しません。
しかし、イーサリアムの考案者であるVitalik Buterin氏を筆頭としたイーサリアム財団が開発の中心的な役割を担っていると言えます。
19年大阪で開催され、今年の開催は中止が決まったイーサリアム開発者会議「Devcon(デブコン)」もイーサリアム財団が中心となって開催しています。
なお、財団は「中心的な役割を担っている」に過ぎず、イーサリアムに貢献している開発者は世界中・あらゆる組織に広がっています。
2.技術面から見た長所
イーサリアム最大の特徴はイーサリアム上に自由にアプリケーションを作ることができることです。
ブロックチェーン上に作成されたアプリケーション(分散型アプリケーション、dApps)は誰にも改変・管理されることなく常にプログラム通りに動きます。
例えば、ゲームであれば運営会社によって突然キャラクターの能力が下方修正されたり、サービス終了したりすることがありません。
イーサリアムを生み出したVitalikも、中学生の頃に熱中した「World of Warcraft」というオンラインゲームのお気に入りキャラクターが突然修正された経験からビットコインのような分散型の仕組みに興味を持ったようです。
他にも金融や保険、通貨取引など、従来は会社が仲介として存在していた領域で、管理者不在のままに動くアプリケーションが数多く作られています。
そもそも、イーサリアムはdAppsを作るためのプラットフォームとして開発されたもので、イーサリアム上に作られたdAppsを適切に動かしていくために仮想通貨「Ether (ETH)」が存在しています。
ビットコインとの比較
イーサリアムはVitalikが生み出しました。
「ビットコインのシステム上でアプリケーションを作りやすくするために汎用的なプログラミング言語が必要だ」というVitalikの提言がビットコインの開発コミュニティに受け入れられなかったため、それを実装したイーサリアムを考案したのです。
しかし、よく「ビットコインは決済用、イーサリアムはプラットフォーム」と言われますが、ビットコインでアプリケーションの作成が不可能なわけではありません。
数年前のビットコイン2.0と呼ばれる潮流においてビットコインのブロックチェーンを利用する「カラードコイン」などはその代表例と言えるでしょう。
また、ビットコインにもプログラムを書き込む領域が存在し、それを使って新たな機能をもったアプリケーションを作ることも可能です。
しかし、ビットコインにおいて使用できるプログラミング言語はループなどが記述できない仕様になっており、自由にプログラムすることが出来ません。
Vitalikはこれを改善するために、あらゆる処理ができる(チューリング完全)コードを書き込み、実行できる新たなブロックチェーンを考案したのです。
3.技術面から見たボトルネック
スケーラビリティ問題
イーサリアムでもビットコインでも、パブリックブロックチェーンのプロジェクトでいつも問題になるのはスケーラビリティです。
スケーラビリティ問題とは、ブロックチェーンが1ブロックに取り込めるデータのサイズと、ブロックの生成時間の間隔が決まっていることから処理できる取引の数・データの量が制限されている問題のことです。
十分な数が処理できていれば問題にならないのですが、ビットコインが1秒間に処理する取引の数は約7件、似たような機能を提供するVisaカードは平均約2000件を処理していて(最大は秒間56000件)、利用者が増えて世界中の人に使われるようなものになるには性能不足と言えるでしょう。
これまでにもdAppsゲーム「クリプトキティーズ」の人気や分散金融(DeFi)の台頭によってイーサリアムのネットワークは混雑してきました。
電力消費
イーサリアムやビットコインなどPoWを採用している仮想通貨へのよくある批判として、「マイニングに無駄な電力が消費されている」といものがあります。
PoWでは、ブロックを生成者にのみ報酬が与えられ、消費したエネルギーに見返りはありません。
上記記事のような反論もありますが、使われているのがクリーンエネルギーというだけで大量に消費されている事実は変わりません。
Vitalikもこの点について問題意識をもっていますが、2018年には「PoWも環境に悪いが、金の採掘はもっと悪い」とTwitter上で述べています。
3. “Money always evolves in the following four stages, collectible -> SoV -> MoE -> UoA” – no, no, no! Seriously, read David Graeber’s Debt. Amazon link for the lazy: https://t.co/UgfNZ9L8ME
— vitalik.eth (@VitalikButerin) April 3, 2018
4.Ethereum 2.0へのアップグレード
イーサリアムを語る上で外せないのが、大型アップデートイーサリアム2.0の存在です。
イーサリアムでは現在、前章で挙げたボトルネックを解消すべく大幅なアップグレードのプロジェクトが進行中です。
構造が大きく変わるため2.0と呼ばれていますが、注意点として、元のイーサリアム(1.0)が無くなったり、フォーク(分岐)するわけではありません。
アップグレードのスケジュールにあるように、フェーズ1.5において元のイーサリアムはイーサリアム2.0に統合されます。それまでは並列して存続することになります。
イーサリアム2.0での大きな変更点は以下の2つです。
- PoWからPoSへ
- シャーディングの導入
それぞれ見ていきましょう。
PoWからPoSへ
PoSへ移行するメリットは大きく以下の2点です。
- エネルギー効率が良い(環境にやさしい)
- マイニングASICによるマイニングの寡占化の解消
ビットコインではProof of Workという仕組みでコンピュータで10分ほど掛かる計算を各々が行い、一番早く計算を終えた人が新たなブロックを作成し報酬を得ていました。
Proof of Stakeではそのブロックチェーンの通貨をステークした(賭けた)量に応じて新たなブロックを作成し報酬を受け取ることができる可能性が変化します。
PoWの計算には膨大な量の電気が消費されていましたが、PoSには計算競争が無いため大量の電力消費はありません。
※PoW、PoSはよく「コンセンサスアルゴリズム(合意形成方法)」と呼ばれていますが、それらの仕組み自体で合意形成を行っているわけではなく、一人の攻撃者がネットワーク上の複数のノードを操作することで行う「シビル攻撃」をコストによって防ぐ機構であるため、シビルコントロールメカニズムやシビル耐性スキームと呼ぶのが正確なようです。
PoWであれば計算、PoSであれば通貨の保有が該当します。
また、現在マイニングは大きな会社がマイニング用のマシン(ASIC:特定用途向け集積回路)を電気代の安い場所に大量に用意して利益を狙うような事業となってしまっています。
ビットコインのマイニングは下図のように大規模なマイニング会社に寡占されてしまっています。
これは、マイニングに特化した専用マシンが開発されたために、その機材のために設備投資を行える会社が有利になってしまった結果です。
イーサリアムのPoWでは、専用マシンでマイニングが効率的に行えないように「Ethash」という特殊なアルゴリズムが用いられていましたが、2018年にEthashに対応したマイニングASICが開発・発売されてしまいました。
しかし、マイニングASICはPoWの通貨にしか意味を為しません。PoSではマシンの性能は関係ないため、マイニング会社による寡占は生じなくなります。
一方で、PoSでは通貨を多く保有しているほどブロックを作成しやすくなるので富の集中が起きるのではないかという懸念も有り、PoWとPoSのどちらが非中央集権的か、優れているかというのは明らかになっていません。
イーサリアム2.0では独自のPoSである「Casper」が導入されます。
PoSでは通貨を保有しているだけでブロックの生成が行えるため、チェーンが分岐した際に複数のチェーンにステークしたほうがお得になってしまう、「Nothing at Stake」というPoWでは存在しなかった別の課題がありますが、それを解決する方策をCasperは備えています。
現在、Vitalikらが提案しイーサリアム2.0に実装予定のCasper FFGと、開発者Vlad Zamfir氏が提案しいまだ研究途上のCBC Casperの2つのプロジェクトが動いており、イーサリアム2.0ではまだ確定していないことも多いです。
シャーディングの導入
シャーディングは元々データベースの分割手法の一つで、データベースへのリクエストを分散し全体の処理能力を上げる目的で利用されています。
イーサリアムにおいては、複数かつ別々のブロックチェーン(シャードチェーン)とそれらを取りまとめる一つのチェーン(フェーズ0で導入されるビーコンチェーン)という構成になります。
PoWを採用している場合、シャーディングによってブロックチェーンが分割してしまうと競争率が下がり、51%攻撃がより簡単になってしまいます。
51%攻撃とは
51%攻撃とは、悪意のある特定のグループがハッシュレートの51%を支配することで、不当な取引を行うこと。攻撃対象となるのは「Proof of Work(PoW)」と呼ばれる、ビットコインも採用するアルゴリズムを採用する仮想通貨。
PoWではどのチェーンをマイニングするかはマイナーに委ねられていますが、PoSではステークしている人が予め明らかになっているため、彼らを自動的にシャードチェーンに分配するだけで済みます。
よって、イーサリアム2.0におけるシャーディングはPoSへの移行が前提の方策と言えるでしょう。
現在の所、シャードチェーンの数は64本を予定しており、バリデータ(ステークしてブロックを作成する人)の数は最低でも1.6万ほどになるようです。
アップデートのスケジュールと現在の開発状況
イーサリアム2.0の開発は以下のように段階的に進んでいく予定です。
- フェーズ0:将来的にシャードチェーンを取りまとめるためのビーコンチェーンの導入
- フェーズ1:64個のシャードチェーンの導入 ビーコンチェーンと繋げられバリデータの割当も行われる
- フェーズ1.5:イーサリアムのメインネット(Ethereum1.0)をシャードチェーンの一つとして統合
- フェーズ2:シャードチェーンにスマートコントラクトが導入される
フェーズ0は当初、2020年1月のリリース予定であったが大幅に延期されています。
6月にイーサリアム財団のブログにおいて開発の状況を知らせる投稿があり、フェーズ0のリリースは間近でフェーズ1もフェーズ0のリリース後すぐに導入される見込みとのことです。
関連:イーサリアム2.0の進捗と機能について、コミュニティの疑問に開発者が回答
参考:The State of Eth2, June 2020
セカンドレイヤー(Layer 2)ソリューション
基盤となるブロックチェーン(Layer 1)以外での処理を利用したスケーラビリティ問題の解決策は一般的にセカンドレイヤー(Layer 2)ソリューションと呼ばれています。例えば、ビットコインであればLightning Networkが有名です。
イーサリアムにおいては、将来的に2.0へのアップグレードのみではなくセカンドレイヤーソリューションも組み合わせてスケーラビリティを向上させていく方針です。
現在は、2019年に発表された「(オプティミスティック/ZK)ロールアップ」という方策の利用が検討されています。
参考:What is Optimistic Rollup? Ethereum’s Latest Layer 2 Scaling Solution
関連:イーサリアムとは、初心者でもわかる通貨の仕組みと今後の将来性
有識者コメント
ーイーサリアム誕生から5年が経ちますが、ここ5年の技術面での進化について、どのような感想をお持ちかお聞かせください
現行の「Eth1」チェーンに関しては、数回のハードフォークでの機能の追加や、クライアントの地道な改善がされていますが、本質的には大きく変わっていないと考えています。結局今だにPoW(プルーフオブワーク)が使われていますし、EVM(Ethereum Virtual Machine)が動いています。
一方、チェーンの外側では色々な技術が進歩しています。Layer2プロトコルのRollupの実装が進み、いくつものプロジェクトが本番稼働しています。また、幾度のコントラクトのハッキングがあったものの、コントラクトのセキュリティを数学的に検証する形式的検証の応用も大きく進み、豊富な検証ツールが使えます。
LayerX Labsでは「Eth2」を研究していますが、10年後みたいな長い時間軸だけを見ているだけではありません。
まず次の2, 3年で、今のEthereumの大きな課題の一つであるスケーラビリティ問題が改善した時、どんな新たなユースケースが華開くのかに集中しています。実際のユーザーが何をしているのかしっかり観察し、「プロトコル研究者のためのプロトコル研究」とならないように心がけています。
ーLayerX執行役員兼LayerX Labs所長 中村龍矢(@nrryuya_jp