Ethereumについては、長い間、Shardingによるスケーラビリティーの向上や、PoWからPoSシステムへの移行に関する議論が続けられてきました。その中で、Ethereumを大規模にアップグレードするSerenity(セレニティー)またはEthereum 2.0と呼ばれる計画が持ち上がり、2020年にそのリリースが始まります。本記事ではEthereumのこれまでを振り返り、2020年以降、どのようなアップデートがいつ行われ、Serenityが実現されるのかわかりやすく解説します。
目次
これまでのEthereumのバージョンとアップデート
Ethereumの最初のバージョンは、2015年7月にFrontierというコードネームでリリースされました。2016年3月には、Frontierに対する改善案を実装し安定化させたHomesteadがリリースされ、同年にはThe DAO事件をきっかけとした想定外のハードフォークも発生しました。2017年にはMetropolisと呼ばれるバージョンへのアップデートが始まりました。Metropolisへのアップデートの第一弾はByzantiumというコードネームで、2017年10月にスマートコントラクトやその実行環境EVM(Ethereum Virtual Machine)の改善が行われました。続く第二弾はConstantinopleというコードネームで、ネットワークの効率化を目的として2019年2月にリリースされ、同時にConstantinopleの脆弱性を修正するPetersburgもリリーされました。2019年12月には、Serenityへの布石として、Istanbulがリリースされました。2020年1月執筆時点での最新のアップデートは、2020年1月1日のMuir Glacier(ミュアー・グレイシャー)で、ディフィカルティボムの調整が行われました。
これまでにリリースされたバージョンやアップデートをタイムラインにまとめました。英語のコードネームがたくさん出てくるため、文字で読むだけではわかりにくいですが、タイムラインで俯瞰すると全体像がつかみやすくなります。
画像: Ethereumのリリースタイムライン
2020年1月現在のEthereumのバージョンはMetropolisで、2020年にSerenityへの移行が段階的に始まります。
Serenityでのアップグレード内容
SerenityはETH 2.0、Ethereum 2.0とも呼ばれ、Ethereumネットワークの構造が大きく変更され、ネットワークが生まれ変わるといってもよいでしょう。Serenityでは、合意形成の方法がPoSになりネットワークの分散性が高められ、かつ、Shardingによりネットワークのパフォーマンスが向上されます。Ethereumのウェブサイトの「イーサリアムについて学ぶ」では、Serenityへの移行計画として、以下のEthHubのページを参照しています。
Ethereum 2.0 Phases – EthHub ※ 最終更新2019年11月(2020年1月執筆時点)
Serenityへの移行は、大きく3つのフェーズに分けて段階的に行われます。各フェーズは、フェーズ0「Beacon Chain」、フェーズ1「Shard Chain」、フェーズ2「State Execution」とされ、それぞれが順次Ethereumネットワークに導入されていきます。下の図の各要素を上から下に向かって現行システムに追加していくイメージです。
画像:Serenityの全体像(What you can do for Ethereum 2.0 a.k.a. sharding P17ページ図に追記)
新旧ブロックチェーンは共存
まず、覚えておきたいのは、ある時点で一瞬にして上の図の灰色枠内のEthereum 1.xブロックチェーンが廃止されたり、仮想通貨ETHの価値がなくなったりはしないことです。
Ethereum 1.xブロックチェーンと、Ethereum 2.0ブロックチェーン(フェーズ0で導入されるBeacon Chain、フェーズ1で導入されるShard Chain)は少なくともフェーズ2が完了するまでは共存する、または共存せざるを得ません。これは、フェーズ2で初めて、Shard Chainがバーチャルマシンを持ち、Ethereum 2.0ブロックチェーン上でスマートコントラクトを実行できるようになり、ひとつの分散型アプリケーション実行環境として完結するからです。フェーズ0とフェーズ1では、スマートコントラクトはEhtereum 1.xブロックチェーン上で実行されます。
PoWのEthereum 1.xブロックチェーンとPoSのEthereum 2.0ブロックチェーンではブロック生成の参加者がマイナーとバリデーターで異なり、それぞれのブロックチェーンで両者に報酬が支払われます。この結果、インフレが懸念されますが、前出のEthHubのSerenityへの移行計画について書かれたページでは、移行が進むにつれてEtereum 1.xブロックチェーンの重要性が低くなるため、インフレ率は0-1%の範囲に収束するだろうとしています。
Serenityへの移行では、Ethereum 2.0ブロックチェーンが徐々にメインのブロックチェーンになることが期待されていますが、移行のインセンティブをどのように示していくかも成功の鍵となりそうです。
フェーズ0: Beacon Chain
Beacon Chainは、Beacon Chainそのものと、続くフェーズ1で導入されるShard ChainのためのPoSプロトコルを扱い、システム全体で、ブロックの提案やcommitteeとよばれる検証ノードの委員会を組織する際に使われる乱数の生成を行います。Beacon Chainでは、PoWのように誰もがマイナーとしてブロック生成を競えるのではなく、PoS(プルーフ・オブ・ステーク)の名前の通り、一定額をステークしているバリデーターがブロックチェーンの検証にあたります。
Phase 0ではBeacon Chain上で使われる新しい仮想通貨ETH2が発行されます。ETH2はバリデーターのための新しいアセットで、バリデーターになりたい人は32ETH2をステークします。ETH2は、Beacon Chainで検証作業の報酬として得られるほか、バリデーター登録のためのスマートコントラクトにETHを送るとETHがバーンされてETH2が発行され、デポジットされます。ETHをもとにETH2を入手することはできますが、ETH2をETHにすることはできません。
この段階ではスマートコントラクトはPoWチェーン上で実行されます。
フェーズ1: Shard Chain
フェーズ1では、64本のShard Chainが導入される予定です。ただし、フェーズ1は、ネットワークをスケールさせることよりも、Shard Chainでのデータの取り扱いに重きが置かれていて、いわばShard Chainの実験段階という扱いです。Beacon ChainはShard Chainのブロックをデータのかたまりとして扱うだけで、データの構造などは考慮しません。各Shardの状態は、Shard Chainのcommitteeの署名からなるクロスリンクとして、定期的にBeacon Chainに書き込まれます。Beacon Chainのブロックが確定すると、関連するShardチェーンのブロックも確定したとみなされ、Shard間でのトランザクションを処理する際にこのブロックに書き込まれた情報を信頼します。
フェーズ0同様、スマートコントラクトはPoWチェーン上で実行されます。
※ Shard Chain、Shardingについて詳しくは、本ブログの記事「Ethereumの処理能力を向上させるSharding(シャーディング)」を参考にしてください。
フェーズ2: State Execution
フェーズ1でShard Chainはデータを記録する場所でしたが、フェーズ2では、各ShardがeWASM(Ethereum flavored WebAssembly)と呼ばれる形式に基づくバーチャルマシンを持ち、スマートコントラクトを実行できるようになります。WASM(WebAssembly)とは、ポータブルでサイズとロードタイムに優れたバイナリコードの形式と、対応するアセンブリ言語などを定義したオープンスタンダードで、eWASMはEthereumのスマートコントラクトで使われるWASMを意味します。eWASMについて詳しくは、eWASMの設計概要と仕様を説明したページがGitHubにあります。
GitHub – ewasm/design: Ewasm Design Overview and Specification
フェーズ2では、eWASMと合わせてExecution Environments(EEs)と呼ばれる、開発者がShard内に構築できる仕組みも導入される予定ですが、現在はまだ研究・開発の段階にあります。
このように、フェーズ2では、フェーズ0と1で準備してきた要素がすべてつながり、PoSチェーンでスマートコントラクトの実行まで完結する環境が完成します。
Serenity実現のタイムライン
2019年前半の時点では、Serenityへの移行は、2019年12月にBeacon Chainの導入が始まり、2020年から2021年にかけてShard Chain、eWASMが順次導入される計画でした。Ethereum Foundationの共同創業者であるJoseph Lubin氏が率いる分散型アプリケーション開発スタジオConsenSysのブログに掲載されたロードマップを引用します。
画像: 2019年5月時点のSerenity実現に向けたロードマップ(ConsenSysのブログ記事より)
その後、計画がずれ込み、Serenityへの移行は2020年1月にBeacon Chainのリリースから始まると見られていましたが、2020年1月現在、移行開始時期は定かではありません。
前出のEthHubの資料Ethereum 2.0 Phasesでは、Ethereum Foundationの研究者Justin Drake氏の考えについて言及し、Beacon Chainは2020年の早い時期、Shardingの導入は全6フェーズのうち1フェーズ目を2020年、2フェーズ目を2021年にそれぞれ実行されるだろうとしています。Shardingの詳しいロードマップはGitHubで公開されていて、このロードマップによると、Shardingの導入途中でeWASMの導入が始まるなど、実際には機能は相互に関連していてリリースフェーズは完全には切り分けられないようです。
Sharding roadmap · ethereum/wiki Wiki · GitHub
いずれにせよ、Serenityの完成までには数年を要すると見てよいでしょう。
おわりに
2020年はEthereumにとってリリースから5年を迎える区切りの年で、Serenityのリリースが始まる始まりの年でもあります。計画は壮大で、これまでに計画が二転三転していることからも、完成への道のりは容易ではないことが予想されますが、Bitcoinに次ぐ時価総額を誇り、スマートコントラクトプラットフォームとしての地位を築いてきたEthereumが、今後どのようにして分散性とパフォーマンスに優れた新しいプラットフォームに変化を遂げるのか動向を見守っていきたいところです。