'out' withdrawal requestは実行レイヤーで処理され、プレッジャーはETHを受け取ります。保留中の」入金キューを経由してビーコンレイヤーに「移動」しますが、引き出しは異なるスキームに従います。これらはビーコン層で(CLIを介して)トリガーされ、その後Eth1ブロックに「移動」される。要求はEth1レベルで作成され、「pending」入金/出金/マージキューで処理され、ビーコンレベルで処理される。引き出しのような「出力」操作については、出力キューも処理され、結果はEth1ブロックで「決済」される。
このEIPを使えば、プレッジャーはバリデータのCLIと直接やり取りしたり、バリデータのインフラにアクセスしたりすることなく、通常のETHトランザクションを使ってバリデータを引き出したり終了したりすることができます。これにより、特に大規模なプレッジプロバイダーにとっては、プレッジ操作が大幅に簡素化されます。バリデータのインフラはほぼ完全に分離することができ、アクティブなバリデータの鍵だけを維持すればよい。これにより、独立したプレッジャーがアクティブバリデーターのアクションを待つ必要がなくなり、コミュニティステーキングモジュールのようなリドのサービスのオフチェーン部分が大幅に簡素化されます。
その結果、このEIPはプレッジ操作を「完了」させ、Eth1レイヤーに完全に移行し、インフラのセキュリティリスクを大幅に削減し、独立したプレッジイニシアティブの分散化を強化します。
EIP-6110:検証者預託のオンチェーン提供
参考文献:EIP-6110
現在、預託はシステム内のイベントを通じて達成されています。は、システムの'deposit'コントラクトのイベントを通じて達成されます(以前の記事で詳しく説明しました)。このコントラクトはETHとバリデータのクレデンシャルを受け入れ、'Deposit()'イベントを発行し、それが解析されてビーコンレイヤーで入金リクエストに変換される。このシステムにはいくつかの欠点がある。ビーコンチェーンレイヤーでeth1dataをポーリングする必要があり、これは大きな待ち時間を追加する。さらに、ビーコンレイヤーは実行レイヤーに問い合わせる必要があり、さらに複雑さが増す。これらの問題は、EIPで詳しく説明されている。これらの問題の多くを扱う必要のない、より単純なアプローチは、指定された場所のEth1ブロックに直接入金要求を含めることである。このメカニズムは、以前のEIPで説明した引き出し処理フローに似ています。
このEIPで提案されている変更は有望です。eth1data処理を完全に削除できるようになり、ポーリングや、Eth1側のイベントとビーコン層での預金の包含の間の長い遅延(現在は約12時間)の必要性がなくなります。また、預金契約のスナップショットのロジックも削除される。このEIPは、入金処理を簡素化し、前述の出金処理スキームと整合させます。
プレッジャーとバリデーターの両方にとって、これらの変更はデポジットとバリデーターの有効化の間の遅延を大幅に削減します。必要な補充も、バリデーターがカットされたときに速くなります。
このEIPについては、時代遅れのロジックを取り除き、プロセスを簡素化し、関係者全員にとってより良い結果を生み出すということ以外、これ以上言うことはありません。
EIP-7685: Generic Execution Layer Request
参考文献: EIP-7685
このEIPは、最初の3つの入出金レイヤーにあるはずでした。このEIPは最初の3つの預金/引き出し/合併関連EIPに含まれるはずでした。しかし、Eth1(実行)とビーコン(コンセンサス)のチェーンブロック(レイヤー)間で独自データを一貫して移動させる必要性が高まっていることを強調するため、ここで紹介する。このEIPは両方のレイヤーに影響し、通常のETHトランザクションによってトリガーされるリクエストの処理をより効率的にします。
Eth1ブロックの入金イベントは、処理のためにビーコンブロックに「移動」されます。
(CLIを使用して)ビーコンブロック内の引き出し要求は、処理のためにEth1ブロックに「移動」されます。
バリデータのマージが処理される必要がありますが、これもEth1->ビーコンリクエストです。
これら3つの操作は、実行層とビーコン層を切り替えるときに、さまざまなタイプのリクエストを一貫して処理する必要性を示しています。さらに、Eth1レイヤーのみを使用してこれらの操作をトリガーする機能が必要である。これは、バリデータのインフラストラクチャを誓約管理インフラストラクチャから分離することを可能にし、それによってセキュリティを向上させるためである。したがって、このようなリクエストを管理するための共通のソリューションは、実用的かつ必要である。
このEIPは、少なくとも3つの主要なシナリオ(入金、引き出し、統合)の枠組みを確立します。そのため、以前のEIPではWITHDRAWAL_REQUEST_TYPEやDEPOSIT_REQUEST_TYPEのようなフィールドが導入され、今回のコンソリデーションではCONSOLIDATION_REQUEST_TYPEのようなフィールドが追加されます。 さらに、このEIPは共通のメカニズム(参照定数:PEND_REQUEST_TYPE)も含むかもしれません。メカニズム(参照定数:PENDING_DEPOSITS_LIMIT、PENDING_PARTIAL_WITHDRAWALS_LIMIT、PENDING_CONSOLIDATIONS_LIMIT)を含むことができる。
このフレームワークの詳細な実装の詳細はまだ不明ですが、キーとなるリクエストタイプ、整合性メカニズム(例えば、リクエストのハッシュ化やマーカライズ)、ペンディングキュー処理とレート制限が含まれることは確かです。
このEIPはアーキテクチャ的に理にかなっており、Eth1が統一されたフレームワークを通してビーコンレイヤーのキー操作をトリガーできるようにします。エンドユーザーとプロジェクトにとって、これは、Eth1レイヤーでトリガーされたすべての要求が、ビーコンレイヤーでより効率的に配信され、処理されることを意味します。
EIP-2537:BLS12-381曲線操作のプリコンパイル
参考文献:EIP-2537
掘り下げたくなければ、BLS12-381のプリコンパイルは、スマートコントラクトで使用できるようになった複雑な暗号「ハッシュ」操作だと考えてください。興味のある方は、さらに掘り下げてみましょう。
BLS12-381(および対応するBN-254)のような楕円曲線上の数学的演算は、現在主に2つの目的で使用されています:
BLS12-381のような楕円曲線上の数学的演算は、現在主に2つの目的で使用されています。align: "left;">BLS署名。これらの署名を検証するために「ペアリング」と呼ばれる特別な操作が使用されます。BLS署名は複数の署名を1つに集約するため、検証者に広く使用されています。検証者は、BLS12-381曲線に基づくBLS署名に依存しています(ただし、BN254のようなペアリングをサポートする任意の曲線の実装を使用することもできます)。
ペアリングが証明の検証に使用されるzkSNARK証明の検証。さらに、Dencunハードフォークによって導入された大規模ブロックへのKZGコミットメントも、ブロックコミットメントの検証にペアを使用しています。
スマートコントラクトでBLS署名やzkSNARK証明を検証したい場合、これらの「ペア」を計算しなければならず、計算コストが非常にかかります。イーサネットはすでにBN254曲線演算のためのコンパイル済みコントラクトを持っている(EIP-196とEIP-197)。しかし、BLS12-381カーブ(現在ではより安全で広く使われていると考えられている)はまだプリコンパイルされていません。このようなプリコンパイルがない場合、スマートコントラクトでペアリングやその他の曲線操作を実装するには、ここに示すように多くの計算が必要となり、膨大な量のガス(~10^5~10^6ガス)が消費されます。
このEIPは、特にBLS12-381曲線に基づく安価なBLS署名検証において、多くの潜在的アプリケーションへの扉を開きます。これにより、さまざまな目的のために閾値スキームを実装することが可能になる。前述したように、イーサネット検証機はすでにBLS12-381に基づく署名を使用している。このEIPにより、標準的なスマートコントラクトは、集約された検証者の署名を効率的に検証できるようになった。これは、BLS署名がブロックチェーンで広く使われているように、コンセンサス証明とネットワーク資産間のブリッジングを簡素化することができる。閾値 BLS署名そのものは、投票、分散型乱数生成、マルチ署名などのための多くの効率的な閾値スキームの構築を可能にします。
より安価なzkSNARK証明認証は、ひいては多くのアプリケーションのロックを解除します。多くのzkSNARKベースのソリューションは現在、証明検証の高コストによって妨げられており、一部のプロジェクトはほとんど実用的ではありません。このEIPはそれを変える可能性を秘めている。
EIP-2935: Preserving historical block hashes in state
参考文献: EIP-2935
このEIPは、81のブロックハッシュを保存することを提案しています。EIPは、ステートレスクライアント(ロールアップなど)やスマートコントラクトに拡張履歴を提供するために、ブロックチェーンの状態に8192(~27.3時間)の履歴ブロックハッシュを保存することを提案しています。BLOCKHASHオペコードの現在の挙動を維持し、256ブロックの制限を維持する一方で、履歴ハッシュの保存と取得に特化した新しいシステム・コントラクトを導入することを提案している。このコントラクトは、ブロックが実行レベルで処理される際にset()オペレーションを実行する。そのget()メソッドは、リングバッファから希望のブロックハッシュを取得するために、誰でもアクセスすることができます。
現在、EVMで過去のブロックハッシュを参照することは可能ですが、アクセスは最新の256ブロック(~50分)に制限されています。しかし、特に(以前のブロックのデータを証明する必要がある)クロスチェーンアプリケーションや、定期的に以前のブロックハッシュにアクセスする必要があるステートレスクライアントでは、古いブロックデータへのアクセスが重要な場合があります。
このEIPは、ロールアップおよびクロスチェーンアプリケーションが、外部で収集することなくEVM内の履歴データに直接アクセスできるようにすることで、利用可能な時間枠を拡張します。その結果、これらのソリューションはより堅牢で持続可能なものになります。
EIP-7623:calldataコストの増加
参考文献: EIP-7623
calldataコストは、EVMで直接収集された履歴データにアクセスするためのものです。calldataコストは、利用可能なトランザクションペイロードのサイズを調整し、場合によっては(例えば、引数として大きな配列やバイナリバッファを渡すとき)大きなものになる可能性があります。calldataの大幅な使用は、現在のロールアップ状態を含むcalldataを通してペイロードを送信するロールアップに主に起因する。
大規模で証明可能なバイナリデータをブロックチェーンに導入することは、ロールアップにとって非常に重要であり、Dencun(Deneb-Cancun)のアップグレードでは、そのようなユースケースのための重要なイノベーションであるブロブトランザクション(blob transaction)が導入された。ブロブ取引は専用の「ブロブ」ガスコストを持っており、その本体は一時的に保存されるものの、その暗号証明(KZGコミットメント)はハッシュとともにコンセンサスレイヤーに統合される。その結果、ブロブはデータを格納するためにcalldataを使用するよりもロールアップのためのより良いソリューションを提供します。
ロールアップにデータをブロブに移行するよう促すことは、「アメとムチ」のアプローチで達成できる。ブロブガスのコスト削減は「にんじん」の役割を果たし、このEIPはcalldataのコストを増加させることで「てこ」の役割を果たし、トランザクションにおける過剰なデータ保存を抑制する。このEIPは次のEIP-7691(ブロブスループットの増加)を補完し、ブロックごとに許可されるブロブの最大数を増やします。
EIP-7691:ブロブスループットの増加
参考: EIP-7691
以前のDencunのハードフォークでは、ブロブはブロックごとに許容される最大数を増やしました。Dencunハードフォークのブロブが導入され、「ブロックあたり」のブロブの最大数と目標数の初期値は保守的な推定値でした。これは、p2pネットワークがバリデータノード間の大きなバイナリオブジェクトの伝播をどのように扱うかを予測するのが複雑なためである。以前の設定はうまく動作することが証明されており、新しい値をテストする適切なタイミングである。
以前のEIP-7623(calldataのコストを増加させた)と組み合わせることで、この調整はrollupがcalldataからblobにデータを移動することをさらに促します。最適なブロブ・パラメーターの探索は続く。
EIP-7840:ELプロファイルにブロブ・スケジューリングを追加する
参考文献:EIP-7840
このEIPは、ターゲットおよび最大「ブロックごと」ブロブカウント(前述)とbaseFeeUpdateFraction値をイーサネット実行レイヤ(EL)構成ファイルに追加することを提案します。また、クライアントがノードAPIを介してこれらの値を取得することもできます。この機能は、ブロブガスコストの見積もりなどのタスクに特に便利です。
EIP-7702: EOA アカウント コードの設定
Reference: EIP-7702
これは非常に重要な EIP です。Etherユーザーにとって大きな変化をもたらす非常に重要なEIPです。ご存知の通り、EOA(外部所有口座)はコードを持つことはできませんが、トランザクション署名(tx.origin)を提供することができます。対照的に、スマートコントラクトはバイトコードを持つが、「その」直接署名を開始することはできない。追加の自動化された検証可能なロジックを必要とするユーザーインタラクションは、現在のところ、外部コントラクトを呼び出して目的のアクションを実行することによってのみ実行できる。しかしこの場合、外部コントラクトは後続のコントラクトの msg.sender となり、「ユーザーではなくコントラクトからの呼び出し」となります。
このEIPでは、新しいSET_CODE_TX_TYPE=0x04トランザクションタイプが導入されます(以前は、古い0x1トランザクション、ベルリンとEIP-1559アップグレードの新しい0x02トランザクション、Dencunで導入された0x03 blobトランザクションがありました)。この新しいトランザクション・タイプは、EIP-1559用の新しいトランザクションの作成を可能にする。この新しいトランザクション・タイプでは、EOA口座のコードを設定できる。事実上、EOAは「自身のEOAアカウントのコンテキストで」外部コードを実行できる。外部から見ると、トランザクションの間、EOAは外部の契約からコードを「借りて」実行しているように見える。技術的には、これはEOAアドレスの「コード」ストア(このEIP以前は、EOAでは常に空でした)に特別な認証データ・タプルを追加することで実現されます。
現在、このEIPで提案されている新しい0x04トランザクションタイプは、配列を含んでいます:
authorisation_list = [[chain_idアドレス, nonce, y_parity, r, s], ...]。
各要素は、指定されたアドレスから(最後に有効だった認証エントリから)、口座がコードを使用できるようにします。このようなトランザクションを処理する際、指定されたEOAのコードは特別な0xef0100 ||アドレス値(23バイト)に設定され、アドレスは希望するコードを持つコントラクトを指し、 ||は接続を表し、0xef0100は通常のスマートコントラクトには含まれない特別なマジックバリューを表します(EIP-3541による)。このマジック値は、このEOAが通常のコントラクトとして扱われず、通常のコントラクトのように起動できないことを保証します。
このEOAがトランザクションを開始すると、指定されたアドレスがEOAのコンテキストで適切なコードを呼び出すために使用されます。このEIPの完全な実装の詳細はまだわかっていませんが、大きな違いをもたらすことは確かです。
大きな影響の1つは、EOAから直接複数のコール(マルチコール)を行う機能です。マルチコールはDeFiで進行中のトレンドであり、多くのプロトコルが強力なツールとしてこの機能を提供しています(Uniswap V4、Balancer V3、Euler V2など)。このEIPにより、EOAから直接複数のコールを開始することが可能になりました。
たとえば、この新機能はDeFiの一般的な問題である、apply() + anything()が2つの別々のトランザクションを必要とする非効率性に対処しています。このEIPは、approve(X)+deposit(X)のようなことを単一のトランザクションで行うことを可能にする一般的な「事前承認」ロジックを可能にします。
EOAに「代わって」トランザクションの実行を委任できるもう1つの利点は、スポンサーシップの概念です。スポンサーシップは、新しいユーザーがイーサに参入するのを助けるために、よく議論され、非常に切望されている機能です。
EOAに関連するプログラム可能なロジックは、セキュリティ制限の実施、支出の上限設定、KYC要件の実施など、多くの可能性を解き放ちます。
もちろん、このシフトは多くの設計上の問題も提起します。その一つは、署名に含まれるか含まれないかによって、同じ署名が複数のネットワークで有効かどうかを決定するchain_idの使用です。もう一つの複雑な問題は、オブジェクトコードのアドレスを使うか、実際のバイトコードを埋め込むかの選択である。これら2つのアプローチにはそれぞれユニークな特徴と限界がある。さらに、nonceの使用は、パーミッションが「多目的」なのか「単一目的」なのかを定義する上で重要な役割を果たす。これらの要素は、一括無効化署名や使いやすさなどの側面を含む、機能性やセキュリティの問題に影響を及ぼし、Vitalikは、さらに探求する価値のある議論(こちら)でこれらの問題を提起しました。
この変更がEtherのセキュリティメカニズムの1つであるtx.originに影響することは注目に値します。 このEIP実装の詳細が必要ですが、require(tx.origin == msg.sender)の動作が変更されるようです。このチェックは、msg.sender がコントラクトではなく EOA であることを確実にする最も信頼できる方法です。EXTCODESIZE をチェックする(コントラクトかどうかをチェックする) などの他の方法は、通常は失敗し、回避することができます(コンストラクタを呼び 出したり、トランザクションの後に定義済みのアドレスにコードを配置するなど)。これらのチェックはリエントリー攻撃やフラッシュ・レンディング攻撃を防ぐために使われるが、外部プロトコルとの統合も妨げてしまうため、理想からはほど遠い。このEIPの後、信頼性の高いrequire(tx.origin == msg.sender)チェックでさえも時代遅れになりつつあるようだ。EOA」と「contract」の区別はもはや適用されないので、プロトコルはこれらのチェックを削除して適応しなければならないでしょう。
従来のEOAとスマートコントラクトの隔たりは曖昧になり続けています。このEIPは、各アカウントが本質的に実行可能なコードであるTONのようなデザインにイーサを近づけます。プロトコルとのインタラクションがより複雑になるにつれて、エンドユーザーのエクスペリエンスを向上させるためにプログラム可能なロジックを使用することは、この進化の自然な部分です。
結論
プラハ/エレクトラ(ペクトラ)のアップグレードは2025年3月に予定されています。
最大2,048ETHの可変バリデーター有効誓約、これは誓約の分布やバリデーターのスケジュールを劇的に変化させ、大規模な誓約プロバイダーの管理を統合することで小規模な誓約の管理を簡素化します。
実行レイヤーとコンセンサスレイヤー間の相互作用を改善し、Eth1実行ブロックとビーコンチェーンブロック間のデータ交換を簡素化します。これにより、入金、アクティブ化、出金、退出が大幅に簡素化され、これらのプロセスが高速化され、コンセンサス層と実行層間のさらなる相互作用のための基礎が築かれます
新しい「ペアリングに優しい」BLS12-381プリコンパイルとzkSNARK検証を経由して、スマートコントラクトで直接安価なBLS署名をサポートします。zkSNARK 検証
ブロブ取引のしきい値を増やし、calldata コストを引き上げることで、ロールアップにブロブ取引を採用するよう促す
おわかりのように、ペクトラは、約定層だけでなく、誓約層や合意層でも、エンドユーザーのエクスペリエンスに大きな影響を与えようとしています。開発がまだ進行中であるため、現段階ではコードを通してこれらの変更のすべてを詳細に分析することはできませんが、今後の投稿でこれらのアップデートを取り上げる予定です。