tests-bal@v7.0.0
Pre-releaseThis release targets bal-devnet-7, following up from bal-devnet-6 during the Soldøgn interop. It aims to resolve the final set of spec changes for EIP-8037 aligning with EIPs#11573, EIPs#11616, EIPs#11611, EIPs#11606 & #2804:
- EIP-8037
cost_per_state_byte: raised from1174to1530(fixed value). - EIP-8037 state byte parameters updated:
STATE_BYTES_PER_NEW_ACCOUNTfrom 112 to 120,STATE_BYTES_PER_STORAGE_SETfrom 32 to 64,STATE_BYTES_PER_AUTH_BASEstays at 23.
SYSTEM_CALL_GAS_LIMITraised from30Mto30M + STATE_BYTES_PER_STORAGE_SET * CPSB * SYSTEM_MAX_SSTORES_PER_CALL, where the extra gas added to the 30M is set as the state gas reservoir for system contract calls.SYSTEM_MAX_SSTORES_PER_CALL = 16.- Tx create halt/revert intrinsic state gas refunds, create address collision regular gas burn,
0 to x to 0SSTORE refund isolation, and EIP-7702 intrinsic state gas refund bugs frombal-devnet-6are all fixed in this release.
Note: this release is mirrored on execution-spec-tests, so no infra update is required for now.
Future Considerations
Intrinsic state gas is the state dimension portion charged at the start of transaction validation. These charges may be restructured in the next devnet with the inclusion of EIP-2780, likely shifting the intrinsic regular/state gas split:
STATE_BYTES_PER_NEW_ACCOUNT * CPSBfor contract creation txs(STATE_BYTES_PER_NEW_ACCOUNT + STATE_BYTES_PER_AUTH_BASE) * CPSBfor EIP-7702 authorizations
This will be the last bal- prefixed devnet release. Future devnet releases will be prefixed with glamsterdam-.
EIP-8037 Spec Related Changes
Parameter Updates
Spec + tests (#2827): Update COST_PER_STATE_BYTE from 1174 to 1530, STATE_BYTES_PER_NEW_ACCOUNT from 112 to 120, STATE_BYTES_PER_STORAGE_SET from 32 to 64. Tests across the suite are updated to account for these increases.
Increase the System Call Gas Limit
Spec + test framework (commit 7b3e8016): Bumps the system transaction gas limit to 30M + STATE_BYTES_PER_STORAGE_SET * CPSB * SYSTEM_MAX_SSTORES_PER_CALL. The extra portion goes into state_gas_reservoir, so state gas growth alone cannot OOG a system call. This is more for future proofing, if we ever increase the state gas costs or cost per state byte alongside block gas limit bumps.
Top Level Halt State Gas Refunds
Spec + tests (#2815): On a top level exceptional halt, refund the full state_gas_used including any portion that spilled into gas_left (the regular/shared gas pool) back to the reservoir.
EIP-7702 Refunds
Spec + tests (#2816): Include the EIP-7702 authorization state gas refund in block.state_gas_used so block level 2D gas accounting is consistent with the per tx gas accounting.
Tx Create Halt/Revert Intrinsic Refunds
Spec + tests (#2823): Tx-level CREATE failures (revert/halt) didn't refund the intrinsic NEW_ACCOUNT * CPSB state gas charge back to the reservoir. Now it is refunded.
Isolated 0 to x to 0 Refunds
Spec + tests (#2823): The 0 to x to 0 state gas charge was propagated as a refund when the same-frame revert should have refunded it back to the reservoir. Now it's isolated.
Create Address Collision Burned Regular Gas
Spec + tests (#2823): Create address collisions burned regular gas that wasn't counted in block regular gas. Now it's counted.
Tx Created Contracts Destroyed In Same Tx
Spec + tests (#2828): If a creation txs initcode SELFDESTRUCTs the new contract in the same tx, refund the intrinsic NEW_ACCOUNT * CPSB state gas so the tx doesn't over charge for an account that never persists.
EIP List
| EIP | Title | Status |
|---|---|---|
| EIP-7708 | ETH transfers emit a log | |
| EIP-7778 | Block Gas Accounting without Refunds | |
| EIP-7843 | SLOTNUM opcode |
|
| EIP-7928 | Block-Level Access Lists | |
| EIP-7954 | Increase Maximum Contract Size | |
| EIP-7976 | Increase Calldata Floor Cost (64/64) | |
| EIP-7981 | Increase Access List Cost | |
| EIP-8024 | Backward compatible SWAPN, DUPN, EXCHANGE |
|
| EIP-8037 | State Creation Gas Cost Increase ❗ | ⬆️ |
Key: ⬆️ updated since bal-devnet-6