EIP-2780 Resource-based transaction base gas breakdown (Resource-Based Intrinsic Transaction Gas)
Scheduled for Inclusion · Fees & gas · EIP status Last Call · created 2020-07-11
Breaks down the 21,000 base gas that every transaction pays equally into items based on the resources actually used. An ETH transfer to an existing account stays at 21,000, and a transaction that creates a new account pays an additional state growth cost.
Why it is needed
Today every transaction pays the same 21,000 base gas regardless of what it does. A zero-value transaction to an existing account and a transaction that creates a new account while sending funds pay the same amount. This is so even though the latter touches one more account, writes a new balance, emits a log, and increases the state that the blockchain must keep permanently. A single fixed constant is priced high for the simplest path and low for the path that uses genuinely long-lived resources. This proposal splits that constant into named items such as signature verification, account access, balance write, and new account creation, so that each transaction pays for what it actually does. Pricing the costs in the same units used elsewhere in the gas system also has the advantage that when the price of an individual item changes later, the change is reflected automatically without recalculating a separate constant.
What changes
Today
- Every transaction pays the 21,000 base gas regardless of its content
- A transfer that creates a new account and permanently grows the state has no additional cost
- EIP-7702 authorizations charge the worst-case cost up front and refund it later
After EIP-2780
- Prices are set per item, such as signature verification, account access, and balance write. An ETH transfer to an existing EOA stays at 21,000
- A transfer that creates a new account pays an additional 183,600 state gas
- Authorization costs are charged at execution time, only for the work that actually occurred
Who is affected
- Users: An ETH transfer to an existing account stays at 21,000. Self-transfers (12,000) and zero-value transactions (15,000) become cheaper, and a transfer that creates a new account pays an additional 183,600 state gas.
- Wallet & app developers: All gas estimation and fee logic that assumes a fixed 21,000 must be updated. In particular, it must account for the state gas of transactions that create a new account.
- Client teams: Clients must implement two-stage charging with intrinsic gas and runtime gas, a pre-execution step, and LIFO state gas refunds.
- Validators and block builders: Validity is determined by intrinsic gas alone, which does not depend on state, so inclusion can be decided without executing the transaction.
In depth
New constants and referenced constants
This EIP defines two new values. TX_BASE_COST (12,000) is the sender cost and bundles ECDSA recovery, sender account access and write, and inclusion of the transaction bytes in the block. TX_VALUE_COST (6,000) bundles the recipient balance write and the EIP-7708 transfer log. The rest are referenced from other EIPs. From EIP-8038 it takes COLD_ACCOUNT_ACCESS (3,000), WARM_ACCESS (100), ACCOUNT_WRITE (9,000), and CREATE_ACCESS (12,000). From EIP-8037 it takes EXECUTION_PER_AUTH_BASE_COST (7,816), the state gas for a new account leaf STATE_BYTES_PER_NEW_ACCOUNT × CPSB (183,600), and the state gas for the 23-byte delegation indicator STATE_BYTES_PER_AUTH_BASE × CPSB (35,190). Both state gas products change together with CPSB.
Intrinsic gas rules
tx.sender is charged TX_BASE_COST as execution gas. tx.to is handled by type. A self-transfer (tx.sender == tx.to) costs nothing, None (contract creation) is charged CREATE_ACCESS, and anything else is charged COLD_ACCOUNT_ACCESS. tx.value costs nothing if it is 0, if the transaction is a self-transfer, or if it is a contract creation (the recipient balance write of a creation transaction is already included in CREATE_ACCESS). Otherwise TX_VALUE_COST is charged. Each EIP-7702 authorization is charged EXECUTION_PER_AUTH_BASE_COST (7,816). Access to the recipient and to the authority inside an authorization is always priced at the cold rate, even if it was already warmed by the access list. This is so that intrinsic gas can be computed without reading state. Calldata and access list charges are unchanged.
Runtime gas and the pre-execution phase
Once the intrinsic gas check passes, state-dependent costs are charged in a pre-execution phase before entering the first EVM frame. First, gas is split into gas_left and state_gas_reservoir according to EIP-8037, and the counters are initialized. Next, EIP-7702 authorizations are processed, the recipient is added to the EIP-7928 block-level access list, and the remaining account creation and access costs are applied. If gas runs short in this phase, the transaction does not become invalid. It is included in the block, the nonce is incremented, and the gas consumed is paid, but all state changes from pre-execution, including delegations, are reverted. By contrast, if gas runs short after entering the first frame, delegations applied during pre-execution are kept as per the EIP-7702 rules, and their state gas also remains consumed. If the initcode of a contract creation transaction reverts or aborts with an exception, the state gas charged at runtime is refunded in the LIFO order of EIP-8037. The portion drawn from gas_left returns to gas_left, and the rest returns to state_gas_reservoir.
EIP-7702 authorization processing costs
Charged at most once per authority for each valid authorization. If the authority account does not exist, STATE_BYTES_PER_NEW_ACCOUNT × CPSB (183,600) state gas is charged for the new account leaf, and if this is the first write to that authority within the transaction, ACCOUNT_WRITE (9,000) execution gas is charged. However, the charge is skipped if the authority is tx.sender (covered by TX_BASE_COST), if an earlier valid authorization already wrote it, or if it is the tx.to of a transaction carrying value (covered by TX_VALUE_COST). If a non-zero delegation target is set, there was no delegation indicator at the start of the transaction, and no earlier authorization set one, STATE_BYTES_PER_AUTH_BASE × CPSB (35,190) state gas is charged. Clearing the indicator is not refunded, and an indicator that existed at the start is not charged again if it is cleared and set again. This approach replaces the existing up-front PER_EMPTY_ACCOUNT_COST charge and its refund.
Costs for representative cases
An ETH transfer to an existing EOA costs 21,000 execution gas, the same as today. A self-transfer costs 12,000, and a zero-value transaction to an existing EOA or an empty account costs 15,000. An ETH transfer that creates a new account costs 21,000 execution gas plus 183,600 state gas. A contract creation transaction has an intrinsic gas of 24,000 regardless of whether it carries value, and pays 183,600 state gas at runtime only if there was no contract at the deployment address. A transfer to a 7702 delegated account adds the access that reads the delegation target code (cold 3,000, warm 100) at runtime, so on a cold basis it costs 24,000 + execution. On every path that moves value to a different cold account, the sum of the decomposed costs is at least the existing 21,000, and transactions that grow state pay additional state gas, so no cheap path appears that increases per-block resource consumption.
Measurement-based pricing
The prices were derived from client execution times measured with the same method as EIP-8038. Using the EEST benchmark test_ether_transfers_onchain_receivers, blocks were built while varying the recipient type (self, existing EOA, shared or unique code contract, 7702 delegated account) and the presence of value, and were run repeatedly on six clients: Besu, Erigon, Ethrex, Geth, Nethermind, and Reth. Block execution time was estimated as the time of a single transaction using non-negative least squares (NNLS) regression, then converted to gas at 75 Mgas/s. Data was collected from September 25 to October 12, 2026. As a result, TX_BASE_COST of 12,000 and TX_VALUE_COST of 6,000 were selected, giving 15,000 for a zero-value transfer and 21,000 for a value transfer. The selected values are not the exact maximum across all clients and cases, but a pricing target based on measurement.
Backward compatibility
This EIP is not backwards compatible. It is a consensus-level gas repricing, so it can only be activated in a network upgrade. Wallets, RPCs, and gas estimators that assume the fixed 21,000 base must all be updated, and in particular must account for the state gas attached to transactions that create new accounts. The EIP-7623 calldata cost floor also changes so that it sits on top of the per-transaction decomposed base instead of the fixed 21,000.
Progress and call decisions
The source status is Last Call, with a deadline of 2026-11-01. Here is the progress from the core developer calls. It was discussed at ACDE #240 on 07.02, but no decision was made. At ACDT #86 on 07.06, it was confirmed that after the freeze only standalone changes to parameters, such as the gas costs of EIP-8038 and 2780, are allowed, and structural changes are blocked. This means constant values may be tuned but the design will not change. At ACDT #89 on 07.27, EIP-2780 was included in Devnet 8 without objection (SFI). At ACDE #243 on 08.13, the gas repricing numbers were finalized, no spec changes are needed, and the Glamsterdam 200M gas limit was confirmed. This means clients do not need to change their code.