イーサリアム上海アップグレードの役割ともたらす利点
作者:Xiang,W3.Hitchhiker
イーサリアムの上海アップグレードについて、どのような利点があるかを簡単に整理してみましょう。
イーサリアムの最新の公開情報と上海アップグレードに関連するEIPは以下の通りです:
確定したEIP:EIP-3651,EIP-3855,EIP-3860,EIP-4895
可能性のあるEIP:EIP-3540,EIP-3670
L2拡張に関連するEIP-4488、EIP-4844は今回のアップグレードの範囲外です。
EIP-3651:ウォームCOINBASE
EIP-3651について話す前に、EIP-2929の変更を紹介する必要があります:
ターゲットがaccessedaddressesにない場合、COLDACCOUNTACCESSCOST(コールドアカウントアクセスコスト)ガスを徴収し、アドレスをaccessedaddressesに追加します。そうでない場合、WARMSTORAGEREADCOST(ウォームストレージ読み取りコスト)ガスを徴収し、ウォーム読み取りはガス消費が比較的低くなります。
現在、COINBASEへの直接支払いがますます人気を集めていますが、現在COINBASEへのアクセスコストは高いです。これは、EIP-2929で導入されたアクセスリストフレームワークの下で、COINBASEがコールドアカウントアクセスコストでガスを計算されるためです。EIP-3651以降、accessed_addressesにはCOINBASE (0x41)から返されるアドレスが含まれます。
利点:
変更後、COINBASEがERC20トークンを支払う際のガス消費が減少します。
EIP - 3855:PUSH0命令
EIP-3855は、新しい命令(0x5f)を導入し、定数値0をスタックにプッシュします。黄皮書のPUSH命令セットでは、現在PUSH1-PUSH32しかなく、1バイトから32バイトをスタックにプッシュする役割を果たしています。
既存の命令では、0値をスタックにプッシュするにはPUSH1 0を実行する必要があり、ランタイムでは3ガスを消費し、さらに200ガス(2バイトのストレージコスト)を消費する必要があります。
PUSH0命令があれば、この追加の200ガスを消費する必要がなくなります。
利点:
現在、約11%のPUSH操作は単に0をプッシュするだけであるため、このEIPが実行されると一定量のガスを節約でき、イーサリアムの既存のTPSを少し向上させることができます。
EIP-3860:初期コードの制限と計算
現在、initcodeの最大サイズはMAXCODESIZE: 24576(EIP-170)であり、新しいinitcodeの最大サイズは(MAXINITCODESIZE = 2 * MAXCODESIZE = 49152)です。これは、コントラクトのサイズを2倍に拡張できることを意味し、コントラクト開発者はより豊富な機能を展開できます。(コントラクトコードが大きすぎると展開に失敗する可能性があります。PS:L2プロジェクトも一部変更され、より高いコントラクトサイズの上限をサポートしています)
さらに、32バイトごとのinitcodeチャンクに2ガスの費用を導入し、jumpdest分析のコストを示します。コントラクト作成中、クライアントは実行前にinitcodeに対してjumpdest分析を実行する必要があります。実行作業はinitcodeのサイズに線形関係があります。
これは、initcodeの各バイトに0.0625ガスのコストが追加され、コントラクト展開のガスコストがわずかに上昇することを意味します。
利点:
コントラクト展開のガス費用はわずかに上昇しますが、コントラクトサイズは2倍に拡張でき、コントラクト開発者はより豊富な機能コードを書くことができます。
EIP-4895:ビーコーチェーンの引き出し
主な内容は、ビーコーチェーンからEVMへの引き出しの主要なプロセスを確定することです。展開が完了すると、イーサリアムビーコーチェーンのステーキング引き出し機能が有効になります。
利点:
イーサリアムビーコーチェーンのステーキング引き出し機能が有効になります。
EIP-3540:EVMオブジェクトフォーマット (EOF) v1
このEIPは大きな変更を伴い、必ずしも上海アップグレードに含まれるわけではありません。
このEIPで説明されているフォーマットは、シンプルで拡張可能なフォーマットを導入し、検証を導入しました。コントラクトコードとデータの分離を実現しました。
新しいEVMオブジェクトフォーマットは:magic, version, (sectionkind, sectionsize)+, 0, \
利点:
バージョン管理は、将来的に新機能の導入や廃止を実現するのに役立ちます(例えば、アカウント抽象の導入など);
コントラクトコードとデータの分離はL2の検証(op)に有益で、L2検証者のガスコストを削減します;
コントラクトコードとデータの分離は、オンチェーンデータ分析ツールの作業をより便利にします。
EIP-3670:EOF ---コード検証
このEIPは必ずしも上海アップグレードに含まれるわけではなく、EIP-3540と連携してコントラクト作成時にコード検証を導入します。未定義の命令を持つコントラクトを拒否します。
利点:
コントラクト作成時にコード検証を導入できます。