Skip to content

tests-bal@v7.0.0

Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 11 May 13:58

This 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 from 1174 to 1530 (fixed value).
  • EIP-8037 state byte parameters updated:
    • STATE_BYTES_PER_NEW_ACCOUNT from 112 to 120,
    • STATE_BYTES_PER_STORAGE_SET from 32 to 64,
    • STATE_BYTES_PER_AUTH_BASE stays at 23.
  • SYSTEM_CALL_GAS_LIMIT raised from 30M to 30M + 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 0 SSTORE refund isolation, and EIP-7702 intrinsic state gas refund bugs from bal-devnet-6 are 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 * CPSB for contract creation txs
  • (STATE_BYTES_PER_NEW_ACCOUNT + STATE_BYTES_PER_AUTH_BASE) * CPSB for 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