BTC
ETH
HTX
SOL
BNB
View Market
简中
繁中
English
日本語
한국어
ภาษาไทย
Tiếng Việt

EIP-3529: ガス戻りを減らす

ECN以太坊中国
特邀专栏作者
この記事は約3498文字で、全文を読むには約5分かかります
ロンドンのアップグレードされた EIP-3529 がガスリターンを変更することで EVM を最適化する方法
AI要約
ロンドンのアップグレードされた EIP-3529 がガスリターンを変更することで EVM を最適化する方法

ソース | eips.ethereum.org

最初のレベルのタイトル

簡単な概要

理由

理由

SSTORE と SELFDESTRUCT のガス リターンは、もともとアプリケーション開発者がアプリケーションを作成する際に「良好な状態の衛生状態」を実践し、不要になったストレージ スロットとコントラクトをクリーンアップすることを奨励するために導入されました。しかし、この技術によってもたらされる効率は予想よりもはるかに低く、ガスの戻りによっていくつかの予期せぬ有害な結果が生じることが判明しました。

➤ ガスが戻ると GASToken が表示されます。 GasToken は、ガス空間を低料金フェーズから高料金フェーズに移動するのに適していますが、ネットワークにとっても悪影響を及ぼし、特に状態サイズの膨張 (状態スロットがガスを蓄積するための「バッテリー」として効果的に使用されるため) と非効率的な目詰まりを悪化させます。ブロックチェーンガスの使用量。

最初のレベルのタイトル

パラメータ

パラメータ

block.number >= FORK_BLOCK のブロックの場合、次の変更が必要です。

1. SELFDESTRUCT の戻り値を削除

2. SSTORE_CLEARS_SCHEDULE (EIP-2200 で定義) を SSTORE_RESET_GAS + ACCESS_LIST_STORAGE_KEY_COST (EIP-2929 + EIP-2930 を組み合わせた場合の 4,800 ガス) に置き換えます。

最初のレベルのタイトル

原理説明

EIP-2200 では、リベートの 3 つのケースが導入されています。

1. 元の値がゼロでなく、新しい値がゼロの場合、SSTORE_CLEARS_SCHEDULE のガス量 (現在 15,000) を返金計算ツールに追加します。

2. 元の値がゼロ、現在の値がゼロ以外、新しい値がゼロの場合、SSTORE_SET_GAS - SLOAD_GAS (現在 19,900) のガス量を返金計算ツールに追加します。

3. 元の値がゼロ以外で、現在の値が別のゼロ以外の値で、新しい値が元の値と等しい場合、SSTORE_RESET_GAS - SLOAD_GAS (現在 4,900) のガスを戻り値の計算に追加します。

これら 3 つのケースでは、(1) のみがガストークンをアクティブにし、ブロックが実行時にブロック ガス制限を超えるガスを消費できるようにします。 (2) にはこの機能がありません。19,900 ガスの払い戻しを受けるには、同じストレージ スロットが事前にゼロからゼロ以外に変更されている必要があり、それには 20,000 ガスの費用がかかります。あるスロットからガスを取得して、それを別のスロットの編集に使用できないということは、ガス トークンとして使用できないことを意味します。さらに、払い戻しを得るには、返されたガスによってブロック処理におけるクライアントの作業負荷が増加しないように、ストレージの書き込みと拡張を回復する必要があります。 (3) も同様です。4,900 ガスのリベートは、同じスロットが以前に 5,000 ガスを消費した場合にのみ付与されます。

この EIP は最初のケースを処理します。同様の「ペアリング」引数を使用して、ガストークンが利用できない条件 (たとえば、入力したスロットより多くのガスをスロットに取得できない) を決定し、それぞれを変換して、マップされた同じストレージ スロットの以前の使用量を返します。同じ取引。ストレージ スロットの元の値が 0 以外の場合、0 に変更されると、次の 2 つの可能性が考えられます。

1. メモリ スロットがゼロに設定されたのはこれが初めてかもしれません。この場合、ストレージ スロットの最初の読み取りと編集のために、今回は SSTORE_RESET_GAS + ACCESS_LIST_STORAGE_KEY_COST の最小限のオーバーヘッドを組み合わせることができます。

2. これは、メモリ スロットが 2 回目にゼロに設定された場合、またはメモリ スロットがゼロに設定された後に発生する場合があります。この場合、このイベントを、最後に値がゼロから他の値に変更された時刻と組み合わせることができ、SSTORE_CLEARS_SCHEDULE のガスが戻り値から削除されました。

2 番目以降のケースでは、そのガスサイズのリターンが同じサイズのクリアなリターンと一致するため、SSTORE_CLEARS_SCHEDULE の値が何であるかは関係ありません。これにより、最初のケースのみが残ります。ストレージ スロットで消費されるガスの合計量が正であることを確認するには、SSTORE_CLEARS_SCHEDULE <= SSTORE_RESET_GAS + ACCESS_LIST_STORAGE_KEY_COST が必要です。したがって、この EIP は、SSTORE_CLEARS_SCHEDULE をこれら 2 つのオーバーヘッドの合計に単純に削減します。

この EIP のもう 1 つの理由は、読み取られていないデータ (通常は「役に立たない」データ) の消去には純利益はありませんが、読み取られたデータ (通常は「有用な」データ) の消去を継続すると純利益が得られることです。

下位互換性

現在、戻り値はトランザクションの実行後にのみ適用されるため、実行中の特定の利用可能な呼び出しフレームには影響しません。したがって、これらをクリアしてもコードの実行は中断されませんが、一部のアプリケーションは経済的に実行できなくなります。

ガストークンは無価値になります。現在の DeFi アービトラージ ボットは、コードを書き換えて役に立たなくなったガス ストレージ メカニズムへの呼び出しをクリーンアップすることで、既存のガス トークン スキームまたはカスタム スキームを使用してオンチェーンのオーバーヘッドを削減することがよくあります。

ただし、 new =original = 0 != current でリターンを完全に維持し、他の非ゼロ -> ゼロのケースでいくらかのリターンを維持することにより、より良いガス オーバーヘッド処理を受ける (それに値する) 一部の主要なユースケースは引き続き有益であることが保証されます。たとえば、ゼロ -> 非ゼロ -> ゼロのストレージ構成モードでは、約 100 ガスのみが消費されます。これらのパターンには、次の 2 つの重要なインスタンスが含まれます。

➤ アンチリエントラントロック(通常はサブコールが開始される前に 0 から 1 に変更され、サブコールが終了すると 0 に戻ります)

➤ ERC20 の承認と送信(トークン転送が承認されると、"認証値"副題

クリア ストレージ インセンティブへの影響

削除リベートに関する以前の EIP (EIP-3298 および EIP-3403) に対する批判は、これらの EIP が値をゼロに設定するインセンティブを完全に削除し、実質的にユーザーがスロットを (たとえ望んでいたとしても) 完全にクリアしないように奨励していることです)。たとえ彼らがそのスロットを再び使いたいと思う可能性は最小限です。

たとえば、ERC20 トークンを 1 ユニット持っていて、残高全体を譲渡または売却したい場合は、0.999999 ユニットだけを譲渡し、残りを保持することができます。将来このトークンをさらに同じアカウントに再投入したい場合は、SSTORE に 22,100 (20,000) ではなく、5,000 ガス (読み取りに 2,100 + 非ゼロから非ゼロ設定に 2,900) を支払うだけで済みます。ゼロからゼロ以外の値までの設定)。現在、このガス部分はストレージのクリアに対する 15,000 ガスの払い戻しによって相殺されるため、このストレージ スロットを再度使用することが 15000 / 17100 = 87.7% 以上の確実性がある場合は、そうするインセンティブが得られます。 EIP 3298 または EIP 3403 の設定では、オフセット インセンティブの部分が存在しないため、ストレージ スロットを再度使用する可能性が 0 より大きい場合は、ゼロ以外の値に設定することをお勧めします。

残りの 4,800 ガス リベートについて、スロットを再度使用する可能性が 4800 / 17100 = 28.1% よりも大きいと感じた場合、そのスロットをゼロ以外に維持するインセンティブが得られます。これは完璧ではありませんが、おそらく平均的な人が残高全体を消去した後に同じアドレスで同じトークンを取り戻す確率よりも高いでしょう。

最初のレベルのタイトル

副題

EIP-2929 のガスオーバーヘッド

副題

還元率削減後

最初のレベルのタイトル

セキュリティに関する考慮事項

戻り値はトランザクション実行には表示されないため、トランザクション実行ロジックには影響しません。

ECN の翻訳作業は、中国のイーサリアム コミュニティに高品質の情報と学習リソースを提供することを目的としています。記事の著作権は原著者に帰属し、転載する場合は原文の出典と ETH 中国の Web サイトを表示する必要があります。長期にわたって再版する場合は、eth@ecn.co に連絡して許可を取得してください。

元のリンク:https://eips.ethereum.org/EIPS/eip-3529

ECN の翻訳作業は、中国のイーサリアム コミュニティに高品質の情報と学習リソースを提供することを目的としています。記事の著作権は原著者に帰属し、転載する場合は原文の出典と ETH 中国の Web サイトを表示する必要があります。長期にわたって再版する場合は、eth@ecn.co に連絡して許可を取得してください。

公式アカウント: ETHチャイニーズステーション

ウェブサイト: ethereum.cn

ETH
Odaily公式コミュニティへの参加を歓迎します
購読グループ:
https://t.me/Odaily_News
チャットグループ:
https://t.me/Odaily_GoldenApe
公式アカウント:
https://twitter.com/OdailyChina