ゼロから追いつくEthereum2.0

こんにちは。Fintertechストラテジーグループの恩田です。

Fintertechでは不定期に社内勉強会を行っています。本記事では、Ethereum2.0概況と題し発表した内容をまとめたいと思います。

本記事の内容

・(過去)Ethereumのリリース変遷
・(現在)Ethereumが抱える課題
・(未来)Ethereum2.0

特に(未来)Ethereum2.0については、以下の内容を掘り下げます。

・ロードマップ、ゴール
・Ethereum1.xに寄り道(Istanbul)
・アーキテクチャ(Beacon Chain、Shardingなど)
・Validatorになることを考える

(過去)Ethereumのリリース変遷

用語の整理も含め、これまでのEthereumのリリース変遷をまとめます。

Olympic testnet(2015/05)
        テストネットとしてローンチ
Frontier(2015/07)
        開発者向けネットとしてローンチ
Homestead(2016/03)
        スマートコントラクト、トークン発行が可能に。
        The DAO事件があったのもこの頃。
Metropolis phase 1: Byzantium(2017/10)
        難易度調整アルゴリズムの安定化
        コントラクト実行の停止が可能に。
         zk-SNARKsなども実装された。
Metropolis phase 2: Constantinople(2019/02)
        difficulty bombの延長などが行われた。

ここまでが過去の話で、今後控えているリリースは以下となります。

Istanbul(2019/10)
        ProgPoWの導入
Serenity: Ethereum2.0(2019以降)
        PoS化、Sharding、eWASM

(現在)Ethereumが抱える課題

一番大きな課題はトランザクションの処理性能だと考えています。現行EthereumではPoWによってブロックを承認しますが、平均して15TPS程度の処理能力です。この処理能力はVISAの2,000TPSに比べ低いものとなっています。実際2017年末には、CryptoKittiesが流行したことで送金詰まりが発生しました。このときには、1日あたり約14,000ユーザーが利用していたそうですが、1つのdAppsが流行るだけで、より重要な送金もできなくなってしまうような基盤はWorld Computerを目指すEthereumの姿ではないでしょう。
直近でも6/4にGas消費量が過去最高値を更新したり、Ethereumのトランザクション数が増加しているといったニュースも散見されるようになってきました。


後者の記事には、1日あたり100万トランザクションとあるので、現状でも11.6TPSを処理することが求められます。瞬間的にスパイクすることも考慮すると現状の処理性能では早晩限界を迎えてもおかしくない水準といえます。

(未来)Ethereum2.0

ロードマップ、ゴール

The Roadmap to Serenity - ConsenSys Mediaより)

Ethereum1.xに寄り道(Istanbul)

Ethereum2.0の話に入る前に、2019年10月に控えているIstanbulについて述べます。Istanbulで導入されるEIPのうち一番注目されているのはProgPoWでしょう。これはProgrammatic PoWの略称で、ASIC耐性を高める目的で導入されます。具体的な内容としては、50ブロックごとにPoWアルゴリズムをランダムに変えるというものです。

現行のEthashにおいて、ASICの採掘効率はGPUの2倍程度と言われています(ちなみにBitcoinでのASIC効率は500倍程度)。Bitcoinに比べれば、ASIC効率はそれほど高いものではありませんが、Linzhiのようにさらに高効率なASICも開発されています。こういった背景もあり、ランダムにPoWアルゴリズムを変えることで、ASICに有利な状況を低減させるリリースが予定されています。

Ethereum2.0のゴール

いよいよEthereum2.0に入っていきます。Ethereum2.0のゴールは以下のように定められています。

Decentralization(分散性)
        ラップトップPCでもトランザクションの検証をできるようにする
        (ネットワークへ参加するハードルを下げる)
Resilience(弾性)
        多くのノードがオフラインになっても、稼働し続ける
        (ネットワークパーティションを介して実現)
Security(安全性)
        暗号や設計技術を裏付けとする
        多数のValidatorが参加することでネットワークのセキュリティを保つ
Simplicity(シンプルさ)
        効率性を犠牲にしてでも、複雑さを最小化
Longevity(持続性)
         量子耐性、コンポーネントの可換性による持続性を実現

Ethereum 2.0 ロードマップ

上述とは別にEthereum2.0のロードマップが以下のように公開されています。

Phase 0: PoS beacon chain without shards
Phase 1: Basic sharding without EVM
Phase 2: EVM state transition function
Phase 3: Light client state protocol
Phase 4: Cross-shard transactions: see here and more.
Phase 5: Tight coupling with main chain security: here and more.
Phase 6: Super-quadratic or exponential sharding

上記のようなロードマップを実現するためのアーキテクチャが以下です。

What you can do for Ethereum 2.0 a.k.a. sharding Q2 2018より)

これらアーキテクチャについて深掘りしていきます。

Beacon Chain

2019年にローンチ予定のPoSをマネージメントする役割を担うチェーンです(図中の赤いブロック)。Casper FFGによるSettlementが行われ、Finalityを得ることができます。実際のデータ(取引記録、アカウント情報、スマートコントラクトなど)を持つのがShard Chainなのに対し、Beacon ChainはFinalityを与えます。Ethereum2.0の屋台骨です。移行段階では、Ethereum1.xのPoWチェーンの横で動くようです。

2つのCasper

まずCasperというのは、PoS実装のことです。その中でもCasper FFGとCasper CBCの2種類が存在します。

Casper FFG(Friendly Finality Gadget)
Vitalikの提案仕様で、PoW/PoSハイブリッドでブロック承認を行います。具体的には、PoWでブロック生成を行い、一定ブロックごとにチェックポイントを設けます。このチェックポイントに対して、Validatorが投票、PoSによる承認が行われます。

提案されたブロックを他ノードが検証し、正しければValidatorは報酬をもらい、間違っていた場合はSlasher(罰金)が課せられるインセンティブ設計になっています。

ブロックの承認が完全に完了し、Finalityを得るためには2/3以上のonline Validatorが必要です。しかし、投票が分散してしまった場合、正常なValidatorによる投票が2/3に届かない可能性があります。これを解決するため、正常なValidatorによる投票が2/3になるまで、Slashされたstakeをburnし続けます。結果、正常なValidatorによる投票の割合がどんどん増加し、いずれは正常なValidatorの割合が2/3以上になり、Finalityを得るという流れのようです。

Casper FFGはConstantinopleで実装予定でしたが、Serenityまで延長されました。この延長された実装がCasper V2でShasperとも呼ばれています。

Casper CBC(Correct by Construction)
Vlad Zamfirの提案仕様で、こちらはPoSのみでブロック承認を行います。
Serenity後にアップデートされる予定です。

Shard Chains

2020年にローンチ予定の実際のデータ(取引記録、アカウント情報、スマートコントラクトなど)や計算能力を持つチェーンです(図中の青と薄緑のブロック)。計算処理をShardごとに分割し、スケーラビリティの劇的な改善を達成します。

Ethereumのトランザクションは、World ComputerのStateを変更するものとして捉えることができます。ネットワーク上のノードは、トランザクションを検証し、ネットワークのセキュリティを維持します。過去のトランザクションも検証できるようHistoryを持ちます。Shardingでは、ノード群を分割し、トランザクションの検証を並列化、検証を効率化します。Shardは1024個に分けられる予定です。

ブロックチェーンのトリレンマは、トランザクション性能・セキュリティ・分散性を同時に達成するのが難しいというものですが、Shardingはセキュリティの優先度を下げるものです。しかし、この影響を最小化したいという要求も当然にあります。そのためにはShardを適切に分割する必要があり、その分割の基準が、StateとHistoryを単位とした分割だと考えています。
そのため、トランザクションの効力はそのshard内でのみ有効ですし、分割したshardごとに有効な状態(State)とトランザクション履歴(History)を持つことになります。

またブロックの生成は、Validatorによって行われます。このValidatorはランダムに選ばれますが、どのようにランダムに選出するのかについても大きな議論の対象となっています。まだ調査できていませんが、VRF(Verifiable Random Functions)もおもしろそうなトピックですね。
各Shardで提案されたブロックは2/3以上の署名があれば、Beacon Chainに公開できます。このブロックをShardを跨いで、Ethereum全体で同期するためにBeacon Chainと同期する必要があります。この相互接続に重要な役割を担うのが、次節で述べるCross-Linkです。

Cross-Link

前述の通り、Cross-Linkは各ShardとBeacon Chainを同期する役割を担います。前提としてFinalityはBeacon Chainで得ると考えるとわかりやすいです。各Shard内で承認されたブロックをCross-linkでBeacon Chainの未承認ブロックに紐づけておきます。各ShardとBeacon Chainはそれぞれ独立してブロックが承認されていくので、先ほど紐づけた未承認ブロック(Beacon Chain)もいずれブロックが承認され、Finalityを得ます。Beacon ChainでFinalityを得たことを以て、Cross-linkで紐付いたshard側のブロックもFinalityを得る仕組みです。このことからもBeacon ChainがEthereum2.0の中でも大きな役割を担っていることがわかります。

eWASM

2020~2021年にローンチが予定されています(図中の最下部)。現行EthereumはEVMがOPCODEを解釈し、実行します。この実行環境EVMをeWASMにするフェーズです。

バイトコードがOPCODEからwasmへ変更されることで、開発者体験の向上が期待されます。wasmはW3Cで標準化されているWeb Assemblyという仕様です。もともとはWebでもCやC++並みの実行速度を実現するという目的で、asm.jsから派生した仕様です。さらに標準化が進み、GoやRustからもwasmを出力できるようになります。スマートコントラクトを実装するのにSolidityを頑張って覚えてなくてもよくなるので開発者の流入が期待できます。個人的にもSolidityはCryptoZombiesをやった程度なので、GoやRustで書けるのは魅力的に映ります。(しかしJavaScripの実行環境はブラウザさえあれば動作するという話、個人的には、現代版「30億のデバイスで走るJava」という気持ちにもなりますね笑)
また、プロトコル標準化によってネットワークセキュリティの向上も期待されています。

Validatorになることを考える

ブロックを承認する役割を持つValidatorは、PoWチェーンから32ETHをデポジットしたノードの中から選ばれます。32ETHを超える量を集めても意味がないようなので、ノードの分散化が期待できます。とはいえ、大量のETH保有者は複数ノードを立てることが予想されるので実質的な運営者が偏る可能性もあるでしょう。

Validatorが選ばれる期間は、epochという単位で区切られており、1epoch = 64 slotで分けられています。1 slotは6秒なので、約6分ごとにValidatorが選出される仕組みです。

上記前提のもとValidatorになったとして、どの程度の報酬がもらえるのでしょうか。報酬は以下のように提案されています。

eth2.0-specsより)

どの程度に落ち着くのかはわかりませんが、以下のような貸付サービスを利用し、ETHを貸付けて得られる収益よりも大きくなければValidatorとして参加する魅力がないと判断されるでしょう。Validatorが少なくなることはネットワークのセキュリティの低下に繋がるため、貸付サービスの利率は、報酬を決定する一つの基準になると考えています。これに加えてノードの運用費用とトランザクション手数料も勘案し、収益性が見込めるのであれば参入というのが合理的な判断だと思います。

LoanScanより(2019/7/5時点))

最後に

異なるShard間でデータのやり取りやEthereum1.xの資産やコードをどのようにEthereum2.0に移行するのかなど、調べれば調べるほど疑問が湧いてきます。技術的な視点からも興味が尽きないEthereumですが、Open Financeの盛り上がりや時価総額の大きさ(執筆時点で3兆円を超える)といった金融の観点からも要注目です。

今年の10月にEthereum界隈で最大のイベントDevconが大阪で予定されてます。今回は名前を覚えるだけでも大変なEthereumの開発状況とスケジュールを整理させていただきました。興味ある皆さんのお役に少しでも立てたら幸いです。