Native Rollup, Based Rollup そして Ethereum の未来について Lin Oshitani(Nethermind)
Native Rollup, Based Rollup そして Ethereum の未来について Lin Oshitani(Nethermind)
EIPを書いた話 Lin Oshitani(Nethermind)
決定的 Proposer スケジューリング 13日前 Justin Drake (EF) との共著
アウトライン ー EIPとはなにか ー EIP-7917の技術的内容 ー EIPの舞台裏
EIPとはなにか Ethereumの新しい機能やプロセスに関する提案を規定する標準規格
EIP-7917の技術的内容
決定的 Proposer スケジューリング
ブロックチェーンとは 1. 当選 Proposer Validators 2. 生成 Block 4.実行・検証 3.公開 =Transactionの列
ブロックチェーンとは Proposer Block P1 P2 P3 B1 B2 B3
スケーラビリティ問題 1. 当選 Proposer Validators 2. 生成 Block 4.実行・検証 3.公開 Scale しない! =Transactionの列
Rollup とは Validators L1 Blockの中に L2 Blockを埋め込む L1 Block 4.実行・検証 3.公開 L2 Block L1 Validator は L1 Block の青い部分だけ実行・検証する。 赤い L2 Block の部分は公開されていることの確認はするが、 実行・検証は別のレイヤ(L2)に任せる
Rollup とは 誰がどうやって生成する? L1 Block L2 Block
Centralized Sequencers tx tx Users tx Centralized Sequencer L2 Block Proposer L2 の tx L1 Block L2 Block
Centralized Sequencers tx Centralized Sequencer preconf L2 Block Users Proposer Centralized Seuqencer は Preconfirmation を提供できる! L1 Block L2 Block
Preconfirmation とは tx_C Users Centralized Sequencer preconf 約束どおりの位置 に入っている 時間が経過 tx_C は tx_A と tx_B の後の三番目に入れる という約束 Centralized Sequencer Proposer L1 Block tx_A, tx_B, tx_C, ...
Centralized Sequencers tx Centralized Sequencer preconf L2 Block Users Proposer Centralized Sequencer は便利。 PreconfsでいいUXを提供できる。 しかし、Centralized!! では、どうやってDecentralizedにする? L1 Block L2 Block
Centralized Sequencers tx Centralized Sequencer preconf L2 Block Users Proposer こいつを取り除いてみよう L1 Block L2 Block
Based Rollups tx Users Proposer L1 Proposer に L2 Block の生成もしてもらう L1 Block L2 Block
Based Rollups tx Users Proposer しかし、遅い! L1のブロック生成時間を 待たなければならない。 どうやってはやくする? L1 Block L2 Block
Based Preconfirmations tx Users Preconf Proposer L1 Proposer に Preconf を返してもらおう L1 Block L2 Block
Based Preconfirmations tx Users Preconf Proposer Proposer が明示的に Preconfer になる ことを選択(Opt-in) する必要がある。 L1 Block L2 Block
Based Preconfirmations 次のOpt-inしたProposer(= Preconfer)に tx を送って Preconf をもらう tx preconf P1 (non-preconfer) 現在時刻 B1 P2 (non-preconfer) P3 (preconfer)
Based Preconfirmations tx preconf P1 (non-preconfer) P2 (non-preconfer) B1 B2 P3 (preconfer) B3 Preconf した通りに作った L2 Block を自分のL1 Blockに 入れる
Based Preconfirmations Based Preconfirmation において、 Proposer のスケジュールを 知ることは重要! tx preconf P1 (non-preconfer) P2 (non-preconfer) B1 B2 P3 (preconfer) B3
Proposer スケジュール 通常、32〜64ブロック先までの Proposerスケジュールが分かる。 このお陰でBased Preconfirmation は可能 P1 P2 P3 P31 P32 時間 現在
Proposer スケジュール しかし、特定の条件のもと Proposerスケジュールが変わることがある!!! 結果、Based Preconfirmationが難しくなる P3’ P1 P2 P3 P31 P32 時間 現在
決定的 Proposer スケジューリング
これを追加した。 Proposer スケジュールを予め計算・決定しておき、Stateに保存しておく P1 P2 P3 P31 P32 時間 現在
詳しい仕様はこんな感じで書かれる
EIPの舞台裏
経緯 3月19日: Based preconfirmation 周りの公開会議で プロポーザーのスケジューリング問題を共有。 3月21日: Justin Drake からDMがあり、 この問題を解決するためにEIPを書かないかと打診。 3月23日: 仕様を書く。 3月24日: EIPを書き、Ethereum Magicians にポスト。
次のステップ Client 開発チームを説得して、次の Fusaka Fork での採用を目指す。 各チームは「このEIPを支持する」というドキュメントを発表するので、 なるべく多くのチームに入れてもらえるように啓蒙活動をする。
次のステップ All Core Devs Call で最終決定 出典:『新世紀エヴァンゲリオン』第弐拾壱話「ネルフ、誕生」
Ethereum の仕様はコード
Ethereum の仕様は実行・テスト可能なコード - 仕様を説明するテキストとコードが入り混じったドキュメントを書く。 - ドキュメントはPythonファイルに変換される。 - そのPythonファイルに対してテストを書く。 - テストはテストケースを出力し、そのテストケースはClientチームに配布される。 仕様 テキスト コード テキスト コード 変換 テスト コード テスト コード 出力 テストケース
EFのResearcherもバリバリコードを書く
感想 難しい点: ー多くのClientチームがあり、その説得が大変。 ーリリースの周期が長い。 良い点: ー民主的。「独裁者」がいない。 ー裾野が広い分散的なコミュニティー ー30兆円以上が乗ったインターネットコンピュータ の実装に参加できる。
Nethermind は日本でのパートナー企業を随時募集中! 発表者のX: