EIP-8037 州ガス規則によりイーサリアム dApp に請求の書き換えが強制される
11月6日の控訴では、通知ではメインネットのアクティベーションが設定されていないまま、解決が待たれるまで遅延が続くとしている。
その影響は、中継者が回収するトランザクションコストが少なすぎることから、特定の種類の障害の後にウォレットの認証が再利用可能になることにまで及びます。そのため、アプリケーションの修復可能性は、開発者がアップグレードの変更を検討する際に必要な証拠の一部になります。
グラムステルダムの EIP-8037 は、永続的なブロックチェーン データの作成コストを引き上げ、その状態の成長を実行とは別に測定するもので、EIP-8038 は、既存の状態へのアクセスと書き込みの価格を再設定します。
目的は、イーサリアム ノードが保持する必要があるデータを制御しながら、より高いスループットをサポートすることです。
8 つの不変フレームワークは、固定予算と準備金をカバーする 3 つの価格仮定と、ガス返品、障害処理、請求、および委任を含む 5 つの会計上の仮定を分離します。
ガス会計が支払いと財布の安全性を変える
中継者は他の人のためにトランザクションを実行するために料金を支払い、作業の前後にガスを測定することでその費用を回収する可能性があります。フレームワークの INV-5 エントリは、提案された会計処理がどのようにその計算を混乱させる可能性があるかを説明しています。
EIP-8037 では、ガス制限が 16,777,216 を超えた場合、トランザクションは最初に別の州ガス貯留層に資金を提供します。状態の作成では、最初にそのプールから抽出され、次に実行ガスが抽出されます。ソリディティの gasleft() 読み取り値には貯水池が含まれないため、2 つの読み取り値を差し引くと、中継者が実際に支払うコストが見逃される可能性があります。
後の読み取り値が前の読み取り値を超える場合、チェックされた減算が元に戻り、操作がブロックされます。チェックされていない減算は、周囲の算術チェックと支払いチェックによっては、大きな数値にラップされ、過剰な払い戻しが発生する可能性があります。
一方、目に見えない貯蓄支出により、ユーザーは過少料金を請求され、オペレーターが不足分をカバーする可能性があります。
請求ガイダンスでは、新しいルールに基づく見積もりを使用して、ユーザーが署名する料金に同意することを提案しています。計量が依然として必要な場合は、減算を固定し、署名された最大値で支払いを制限することで料金が制限されますが、貯留層から資金提供されるコストは測定範囲外のままです。
オープン仕様提案 PR #12581 は、ガス測定値の増加を防止します。そうすれば減算の問題は解決しますが、リザーバーの請求の盲点は残るでしょう。
INV-8 は、アカウントが委任された契約コードを承認する EIP-7702 委任を検査します。提案されているルールでは、実行前にガスが不十分な場合、トランザクションがブロックに含まれたままになる一方で、トランザクションの委任や承認関連の更新がアカウントのシーケンス番号 (nonce) にロールバックされる可能性があります。
公開された承認は、承認アカウントの nonce を含む有効性チェックをまだ満たしており、再利用できます。委任されたコントラクトに、最初の呼び出し元が所有者を選択できる初期化子も含まれている場合、攻撃者は 1 つのトランザクションで承認を適用し、所有権を初期化する可能性があります。
認可フロントランニングはパブリック メモリプールにすでに存在していましたが、ここではマイニングされたトランザクションが失敗すると、プライベート送信後でも再利用可能な認可が公開される可能性があります。
最上位の実行フレームの前にすでに適用されている委任は、後のフレームが失敗した場合でもそのまま残ります。受信に失敗した場合は、アカウントの結果のコードとノンスをさらに確認する必要があります。
推奨されるウォレットの安全対策には、初期化をアカウントの署名または自己呼び出しにバインドすることや、公開された承認を無効にすることが含まれます。最悪の場合の認証コストを前払いすることもプロトコル変更として提案されていますが、まだ採用されていません。
修復オプションによりアップグレードが決定されます
提案されたスケジュールでは、冷蔵倉庫スロットの作成には合計 110,020 ガスの費用がかかりますが、大阪では 22,100 ガスかかります。提案されている合計のうち、12,100 が執行ガス、97,920 が州ガスであり、後者にどの残高を資金供給するかは貯留層によって決定されます。
ChainSecurity の 10 月 13 日の調査では、変更されたコストと返還されたガスによって、契約が資金不足の事業を永久に失敗として記録し終える可能性があることが示されています。そのレコードによって再試行パスが削除されると、有効な操作を繰り返すことができなくなる可能性があります。
予算の再検証、失敗の伝播、および再試行の維持は、そのリスクのさまざまな部分に対処します。
リポジトリは、影響を受けるプロジェクトに対して、設定、アップグレード、または移行によって問題が解決できるかどうか、およびおおよそいつ解決できるかを尋ねます。これらの回答は、開発者がアプリケーションがどの程度の互換性作業を吸収できるか、仕様変更により損傷を防止できる箇所を評価するのに役立ちます。
何が壊れ、どのように修復するかについての具体的なレポートは、次の仕様の議論に役立ちます。
