さて、Devcon5も終わり、かなりのアップデートとかがありました。そこらへんについてまとめていきます。
こちらの情報は少し古くなっていますが(特に各フェーズでの実際の実装内容)、とりあえず目を通していただいた前提で書いていきます。
こちらのリンク集はかなり参考になるかと思います。
https://notes.ethereum.org/@serenity/handbook
Ethereum 2.0って何?(おさらい)
Ethereum 2.0はEthereumの超大掛かりなアップデートのことです。通常のHFとかではやらない(やれない)レベルのものを実装するものです。大掛かりなのでいくつかの段階に分けて実装していきます。
Ethereum 2.0では、メインとしてはShardingとProof of Stake(Casper FFG)コンセンサスへの移行ですが、細かいとことはフェーズごとにも変わりますし、また研究開発中のところもあるので各フェーズごとに分けて話していきます。
用語集
- Beacon Chain:Shard ChainやValidatorの統括役。
- Shard Chain:Sharding実装の際に立ち上がるチェーン。最初は全部で64個。定期的にBeacon Chainにアンカリングされる&シャッフルされる。
- Crosslink:Shard ChainのStateの概要をBeacon Chainに保存するもの。詳しくはPhase 1の説明にて
- Slot:BlockProposerがブロックを提案する期間。いわゆるブロックタイムに近い概念だが、ブロックがない場合がある。ブロック待ち期間。
- Epoch:32Slot = 1Epoch。(約3分)ValidatorのシャッフルやBlock Producer/Committeeの再抽選などなどが行われる。
- Validator:32ETHをDepositすることで作成できる。
- Committee:Beacon ChainやShard Chainのブロックの有効性を証明するために作られるランダムなValidatorたちの集まり。(各Committeeごとに128台以上のValidatorがいる)
フェーズ
Ethereumには現在取り組んでいるフェーズとして主に3つのフェーズがあります。(これ以降にも一応設定などはあるのですが、あまり今論じられてないので省略。早くてもPhase 2まで完了するのは2021年中頃までかかるかと思います。)
- Phase 0
- Phase 1
- Phase 2
それぞれ見ていきましょう。
Phase 0
Ethereum 2.0の最初のフェーズです。これまで我々が使ってきたチェーンであるPoWのEthereum 1.0チェーンとは別に、新しくBeacon Chainというものを作ります。これは、この次のフェーズで、Shard Chainの統括役となるチェーンです。
この段階ではShardingは実装されていません。特にコントラクトコードを実行できるわけでもありません。またBeacon ETH(BETH)を送受信したりすることはできません。(取引所とかで売却とかも原則できないです)
このフェーズでは、PoWのEthereum 1.0チェーンのファイナライズ(チェーンの状態を後から覆せない状態にすること)を行うチェーンとして機能します。
Deposit Contract
さて、このBeacon Chainでは、32ETHを登録すればValidatorになることができます。(なので巷で32ETH買っとけみたいな言説があるわけです)と言ってもETHを無から生み出せるわけではありません。Ethereum 1.0からEthereum2.0に持ってくる必要があります。その際に使われるのがDeposit Contractです。これはEthereum 1.0チェーンにて実装されます。
基本的にETHからBeacon ETH(BETH)にするのは一方通行であり逆はないです。
(もしEthererum 2.0に何かあれば、緊急引き出し等ができるなどの今後のアップデートによって引き出せるようになることはあるかもしれないですが、期待はしないほうがいいです)
こちら、Deposit Contract自体は2020年1月にローンチし、必要額が集まったら走り出します。このEthereum 2.0のBeacon Chainが走り出すのにはこちらのチェーンに524288ETH以上のDeposit(16,384台のActive Validator)が必要です。もともと200万ちょいだったのがこちらがきちんとあつ集まりかというのも一つ論点となっています。(First Penguinになるインセンティブがほぼないため。)
ステーキング報酬
ステーキング報酬額の仕組みは複雑で、以下の要素によって決まります
純粋な報酬額
- Active Validatorの数(ステーキングされているBETHの額)
- Networkに参加しているValidatorのオンライン率
必要な経費
- サーバー代
- 情報に追いつく(きちんとアップデートするなど)/きちんとセキュアに構築するコスト
だいたい年利で6~13%の幅があります。具体的な表等はこちらをご覧ください!
ペナルティーとスラッシュ
Clarification—"penalty" and "slashing" are not synonyms in Eth2. A penalty is a negative reward (e.g. for going offline). A slashing is a large penalty (≥1/32 of balance at stake) and a forceful exit for validators that provably committed a malicious action (e.g. double vote).
— Justin Ðrake (@drakefjustin) July 15, 2019
オフラインになった際、ペナルティーとしてETHを少しずつ没収されます。最大で18日オフラインの場合60.8%もの資金が没収されます。といってもこんなに没収されるのはNetworkのOnline率が2/3を下回った際にオフラインになった時に行われるのであり、ネットワークのオンライン率が高いのであればペナルティーはそこまで高くないです。
通常のサーバー運営でしたらそんなに打撃を受けることはないでしょう。
もう一つスラッシュというものがあります。スラッシュは二重署名、つまり同時に同じブロック高に対して違う内容のものを二つ以上提示した際に起こります。これはValidatorを強制終了させます。こんなこと普段は起こりませんが、メインのValidatorとバックアップ用のValidatorが同時にオンラインになっていたりすると起こります。
Phase 1
ここのフェーズではついにShardingが実装されます。スマートコントラクトの実行環境等はないですが、BETHの送受信が可能になります。メインとしてはここのフェーズはそれのみです。スマートコントラクトの実行環境の整備/Ethereum 1.0から2.0への移行が完了する予定となるのはPhase 2です。
さて、この Shardingはどのような実装になりそうなのでしょうか?詳しくみていきましょう。
Shardingの仕様について
Shardingの概念については、「チェーンを分けて、並列処理するもの」というものですが、実際はこちらの図のようになります。
先ほど上に貼っていたものです。Beacon Chainが統括役となりShard Chainがそれぞれ相互通信して繋がります。
さて、こちらのShardingですが、Devcon5前後に見直す提案がなされました。(まだこれが通ったわけではないです。多分ブロックサイズはこの半分くらいに見直しが入るのではないかと予想してます。)
- Shard Chainの数を1024から64へと減らします。
- Shard Chainのスロットブロックサイズを 128kbをターゲットサイズへと拡張します。(ちなみにブロックタイムは3秒)Maxは512kbですが、これを生成するにはまた別の手続きが必要となるので、通常時は使われないでしょう。
- ブロック同士が直接Crosslinkする。
元々の
現在の仕様
10/6時点での使用はちなみにこちらです。
まだSpecについては固まっていない状況です。
Phase 2
さて、ここのフェーズではスマートコントラクトの実行環境が搭載されます。
- Stateless Execution Environment
あたりがメインとして話されています。分量が多いので順番に話していきます。
Wikiとしてはここがおすすめです。色々と関連リンクが載っています。
https://hackmd.io/UzysWse1Th240HELswKqVA
Stateless Execution Environment
ざっくりいうと、いろんなShardごとに違う実行環境を備えたものをつくろう!というものです。eWASMコンパイラーがあればどんな実行環境もできるというもの。
ETH1の実行環境を作り(EVM built in WASM)、Stateをどこかのタイミングでスナップショットしてそのまま移すということが考えられているようです。
その他考えられていること
- Super Light sync (Beam Syncとか)
- Fee Market Modelの変更(EIP1559)
- Account Abstruction
- Cross-Shard composability
- Casper CBC
etc...
ここら辺があるのですが私の気力が限界なので、ここまでにさせていただきます。下の参考文献やそこから辿れるリンクはかなり有用かと思いますのでそちらも是非〜
参考文献
https://docs.ethhub.io/ethereum-roadmap/ethereum-2.0/eth-2.0-phases/
https://notes.ethereum.org/KbEyHiaSRQW_KS7dDK0OFw
https://docs.google.com/presentation/d/1_C_79ilyX0BsyMnSY84M3DoItPU9hBNxnvUEWOOLN7k/edit#slide=id.p1
https://ethresear.ch/t/cross-shard-defi-composability/6268
https://medium.com/@william.j.villanueva/a-journey-through-phase-2-of-ethereum-2-0-c7a2397a36cb
https://hackmd.io/UzysWse1Th240HELswKqVA