著者: Xiang、W3.ヒッチハイカー
イーサリアム上海のアップグレードについて、どのようなメリットがあるのか簡単に整理してみましょう。
イーサリアムからの最新の公開ニュースを参照すると、上海アップグレードに関連する EIP は次のとおりです。
含まれる EIP を確認します: EIP-3651、EIP-3855、EIP-3860、EIP-4895
含まれる可能性のある EIP: EIP-3540、EIP-3670
ただし、L2 拡張に関連する EIP-4488 および EIP-4844 は、このアップグレードの範囲には含まれません。
EIP-3651: ウォームコインベース
EIP-3651 について言えば、まず EIP-2929 に変更を導入する必要があります。
ターゲットが accessed_addresses にない場合は、COLD_ACCOUNT_ACCESS_COST (コールド アカウント アクセス コスト) のガスをチャージし、そのアドレスを accessed_addresses に追加します。それ以外の場合、WARM_STORAGE_READ_COST (ウォーム ストレージ読み取りコスト) ガスがチャージされ、ウォーム読み取りガスの消費量は比較的少なくなります。
現在、COINBASE の直接支払いはますます人気が高まっていますが、現在の COINBASE へのアクセス料金は比較的高価です。これは、EIP-2929 によって導入されたアクセス リスト フレームワークの下で、COINBASE がコールド アカウント アクセスに応じてガスを計算するためです。 EIP-3651 では、その後、accessed_addresses には COINBASE によって返されたアドレス (0x41) が含まれます。
利点:
変更後、COINBASE は ERC20 トークンを支払う際のガス消費量を削減します。
EIP - 3855: PUSH0 命令
EIP-3855 では、定数値 0 をスタックにプッシュする新しい命令 (0x5f) が導入されています。イエロー ブックの PUSH の命令セットには、現在 PUSH1 ~ PUSH32 のみがあり、これは 1 バイトをスタックにプッシュし、32 をプッシュするために使用されます。バイトをスタックに追加します。
既存の命令実装は、 PUSH1 0 を実行することで 0 の値をスタックにプッシュします。これには、実行時に 3 ガスがかかり、さらに 200 ガス (2 バイトのストレージ コスト) がかかります。
PUSH0 命令を使用すると、この追加の 200 ガスを消費する必要はありません。
利点:
現在、PUSH オペレーションの約 11% は 0 をプッシュするだけであるため、この EIP は実行後に一定量のガスを節約でき、イーサリアムの既存の TPS をわずかに改善することもできます。
EIP-3860: 初期化コードを制限および計算する
現在の最大 initcode は MAX_CODE_SIZE: 24576 (EIP-170) で、新しい initcode の最大値は (MAX_INITCODE_SIZE = 2 * MAX_CODE_SIZE = 49152) です。これは、コントラクト サイズを 2 倍にすることができ、コントラクト開発者はより豊富な機能をデプロイできることを意味します。 (過剰なコントラクト コードはデプロイメントの失敗につながります。PS: L2 プロジェクトも、より高いコントラクト サイズ制限をサポートするために部分的に変更されました)
さらに、jumpdest 分析のコストを表すために、32 バイトの initcode チャンクごとに 2 ガスの料金が導入されます。コントラクトの作成中、クライアントは実行前に initcode に対してジャンプデスト分析を実行する必要があるためです。実行作業は、initcode のサイズに比例してスケールします。
これは、initcode には 1 バイトあたり 0.0625 ガスのコストがかかり、契約デプロイメントのガスコストがわずかに増加することを意味します。
利点:
コントラクト展開のガス料金はわずかに増加しますが、コントラクト サイズを 2 倍にすることができるため、コントラクト開発者はより豊富な機能コードを作成できます。
EIP-4895: ビーコン チェーンの撤回
主な内容は、ビーコン チェーンから EVM に資金を引き出す主なプロセスを決定することです。展開が完了すると、イーサリアム ビーコン チェーンのプレッジ引き出し機能が有効になります。
利点:
イーサリアム ビーコン チェーンのプレッジ引き出し機能を有効にします。
EIP-3540: EVM オブジェクト フォーマット (EOF) v1
この EIP には大きな変更が含まれており、必ずしも上海アップグレードに含まれるとは限りません。
この EIP で説明されている形式は、シンプルで拡張可能な形式を導入し、検証を導入します。 契約コードとデータの分離が実現されます。
新しい EVM オブジェクトの形式は次のとおりです: magic、version、(section_kind、section_size)+、0、
利点:
バージョン管理により、将来の新機能 (アカウント抽象化の導入など) の導入または廃止が容易になります。
契約コードとデータの分離は、L2 検証 (op) にとって有益であり、L2 バリデーターのガスコストを削減します。
コントラクトコードとデータを分離することで、オンチェーンデータ分析ツールの使用も容易になります。
EIP-3670: EOF — コード検証
この EIP は上海アップグレードに必ずしも含まれているわけではなく、EIP-3540 契約の作成時にコード検証が導入されます。未定義のディレクティブを含むコントラクトを拒否します。
利点:
契約作成時にコード検証を導入可能
