feat(tests): EIP-2780 warm/cold-aware top-frame delegation#3045
feat(tests): EIP-2780 warm/cold-aware top-frame delegation#3045chfast wants to merge 12 commits into
Conversation
…thereum#2972) Co-authored-by: Sam Wilson <57262657+SamWilsn@users.noreply.github.com> Co-authored-by: Mario Vega <11726710+marioevz@users.noreply.github.com>
…reum#3019) Co-authored-by: marioevz <marioevz@gmail.com>
* feat(spec, specs): EIP-7997 - Spec and basic tests * feat(spec-specs): EIP 7997 - More tests * bugfix(specs): Add logic to add 0x12 as a special contract outside the precompile range * feat(tests): 7997 - add a check at the transition, adds tests for prewarming, CALLCODE, and giving it a balance via SELFDESTRUCT * fix: address PR feedback * feat(spec): Use Arachnid create2 contract * feat(specs, spec-test): Remove unneeded code * feat(spec-tests): Remove unneeded tests * feat(test-specs): Add sstore metadata for gas pricing * fix(test-specs): Remove sstore metadata * feat(test-specs): Add Arachnid contract to system contracts * feat(test-specs): Add a BAL test, large initcode test, and an ef prefix test * fix(test-specs): remove unneeded pre_alloc_mutable decorators * Add Amsterdam config to test_execute_eth_config * fix: Uses storage.store_next and mark valid_from EIP7997 instead of Amsterdam * fix: don't hardcode gas values, call_opcode parametrization * fix: Remove Factory predeploy from system contracts * fix: Remove explicit set of gas_limit * lint * Whitespace
…reum#2842) * feat: implement eip 8246 * tests: enhance eip 8246 coverage * refactor: resolve failing selfdestruct scenario * chore: fix linting issue * fix(specs): Remove all references to burn logs * fix(tests): Fix remaining tests * chore: rename function --------- Co-authored-by: marioevz <marioevz@gmail.com>
Assert that an EIP-7702 delegation target already made warm via the access list is resolved at the WARM_ACCESS rate at the top transaction frame, per the EIP-2780 Interactions note (the EIP-2929 accessed_addresses model). EIP-2780 is internally inconsistent here: its normative top-level gas-cost bullet and reference-cases table charge an unconditional COLD_ACCOUNT_ACCESS, whereas the Interactions note specifies warm/cold-aware accounting. This probe pins the Interactions-note reading; test_warmth_invariants.py pins the unconditional-cold one. Marked xfail(strict=True): the implementation currently charges cold unconditionally, so the probe is CI-green today and a strict XPASS forces the marker's removal once the spec is disambiguated in favor of warm/cold-aware accounting and EELS adopts it.
|
The scenario is already covered in this test. If we decide to update the spec and the implementation, could we just adapt that test? |
Yes, we can. |
|
Just converting to draft as this targets |
|
Following ACDT should this be closed as we are going with ethereum/EIPs#11844 over ethereum/EIPs#11778? |
Maybe we should keep the test with modified expectations? Or is this already covered somewhere else? |
SGTM! |
4bc0fc6 to
d0338f5
Compare
🗒️ Description
Assert that an EIP-7702 delegation target already made warm via the access list is resolved at the WARM_ACCESS rate at the top transaction frame, per the EIP-2780 Interactions note (the EIP-2929 accessed_addresses model).
EIP-2780 is internally inconsistent here: its normative top-level gas-cost bullet and reference-cases table charge an unconditional COLD_ACCOUNT_ACCESS, whereas the Interactions note specifies warm/cold-aware accounting. This probe pins the Interactions-note reading; test_warmth_invariants.py pins the unconditional-cold one.
Marked xfail(strict=True): the implementation currently charges cold unconditionally, so the probe is CI-green today and a strict XPASS forces the marker's removal once the spec is disambiguated in favor of warm/cold-aware accounting and EELS adopts it.
Here's the relevant discussion on Eth R&D for context.
🔗 Related Issues or PRs
N/A.
✅ Checklist
just statictype(scope):.