Latest Results
feat(eip2780): reduce intrinsic transaction gas
Adds EIP-2780 (Reduce intrinsic transaction gas) on top of EIP-8037 /
EIP-8038. Replaces the legacy 21,000 stipend with a decomposed model:
TX_BASE_COST 12,300 (sender base + ECDSA + sender access/write)
+ to-based (per recipient kind)
- self / precompile 0
- cold EOA/contract COLD_ACCOUNT_ACCESS (sourced from eip8038)
- create CREATE_ACCESS (sourced from eip8038)
+ value-based
- zero or self-transfer 0
- create with value TRANSFER_LOG_COST
- other TRANSFER_LOG_COST + ACCOUNT_WRITE
Adds an `enable_amsterdam_eip2780` config flag (auto-enabled at AMSTERDAM,
paired with `Cfg::is_amsterdam_eip2780_enabled`) and `Eip2780TxInfo` to
carry `sender`, `to`, `value`, and `to_is_precompile` into
`GasParams::initial_tx_gas`. Validation in the handler reads the
precompile set and threads the info down. `tx_transfer_log_cost`,
`tx_account_write_cost`, and `tx_create_access_cost` GasIds are added
and populated in the AMSTERDAM block.
Implements the top-level execution charges from EIP-2780 in
`EthFrame::make_call_frame` (depth == 0):
- If recipient is EIP-7702-delegated, charge an additional
`COLD_ACCOUNT_ACCESS` of regular gas.
- If recipient is empty per EIP-161 and `tx.value > 0`, charge
`new_account_state_gas(cpsb)` of state gas. The existing
`last_frame_result` reservoir reconciliation refunds it on revert.
Existing EIP-8037 helpers in `eip8037.rs` explicitly disable EIP-2780
so the state-gas-reservoir tests stay focused. Bumps one EIP-7708 test's
gas limit to fit the new ~207k intrinsic for value transfer creating a
new account. Adds an `eip2780.rs` ee-tests module covering self-transfer,
EOA, empty-with-value, create with/without value, precompile delta, and
the legacy-fallback path. feat(eip8038): implement state-access gas cost update
Adds EIP-8038 parameters (gated at AMSTERDAM alongside EIP-7904/EIP-8037).
Per the user-supplied rule, every TBD value in the draft spec is set to
`previous_value + 1`:
WARM_ACCESS 100 -> 101
COLD_ACCOUNT_ACCESS 2,600 -> 2,601
ACCOUNT_WRITE 6,700 -> 6,701
COLD_STORAGE_ACCESS 2,100 -> 2,101
STORAGE_WRITE 2,800 -> 2,801
STORAGE_CLEAR_REFUND 4,800 -> 4,801
CREATE_ACCESS 7,000 -> 7,001
ACCESS_LIST_ADDRESS_COST 2,400 -> 2,401
ACCESS_LIST_STORAGE_KEY_COST 1,900 -> 1,901
Wires the new values through the GasParams table (account/storage access,
SSTORE charges and refunds, CREATE/CREATE2, EIP-7702 per-auth regular cost,
access-list per-item costs) and bumps the static gas table for warm-access
opcodes. EXTCODESIZE and EXTCODECOPY get an extra WARM_ACCESS baked into
their static cost per the EIP "EXT* family update" rule. Existing EIP-8037
snapshot tests refreshed; one Amsterdam access-list unit test updated. Latest Branches
+1%
mark0-cn:fix/eip2780-access-list-warmth 0%
0%
© 2026 CodSpeed Technology