DCIPs/EIPS/eip-2780.md

117 lines
6.4 KiB
Markdown
Raw Normal View History

---
eip: 2780
title: Reduce intrinsic transaction gas
author: Matt Garnett (@lightclient), Uri Klarman (@uriklarman)
discussions-to: https://ethereum-magicians.org/t/eip-2780-reduce-intrinsic-cost-of-transactions/4413
status: Withdrawn
type: Standards Track
category: Core
created: 2020-07-11
---
## Abstract
Reduce the intrinsic cost of a transaction from `21,000` to `7,000` gas.
## Motivation
The current `21,000` gas intrinsic cost of a transaction makes sending ETH very costly, often times prohibitively costly for small amounts (tens of USD).
While broad changes to the gas price and first price auction are being considerted in other EIPs (like EIP-1559),
substantially reducing the cost of sending ETH and enabling higher volumes of such transactions would be a net positive if done in a safe manner,
and without imposing negative externalities, as outlined below.
## Specification
After `block.number >= FORK_BLOCK`, enforce an intrinsic gas cost of `7,000`.
## Rationale
The proliferation of calls to DeFi smart-contracts had substantially increased the cost of making transactions,
since such calls are usually both time sensitive and involve large sums of money.
While the utilization of the chain's capacity by the most valuable transactions is by design,
the high cost of sending transactionsz is limiting Ethereum's the use-cases,
create a terribel user experience,
decreases the actual value created (and captured) by ETH,
and pushes users to seek alternatives in other, less-congested chains.
Note on Layer-2: It is true that the high cost might push users to try using L2 solutions,
however forcing users to utilize L2 by allowing the UX of using L1 to deteriorate is a losing strategy (see BTC / Lightning),
and the safety of many L2 solutions hinges on the ability to use L1 if needed.
If L2 are to gain significant traction they must achieve it by providing superior properties (e.g., finality, cost, UX),
not by imposing artificial restrictions to encourage it.
Reducing the intrinsic cost of a transaction from `21,000` to `7,000` gas will make sending transactions cheaper,
is easily achievable, and does not incur technical debt.
However, such a change should only be made after it is determined that it does not impose non-negligble externalities, specifically:
* Increases uncle-rate.
* Increases the pace at which the state-size of Ethereum grows.
* Enhance gas-manipulation technices (gas-token).
## Backwards Compatibility
This EIP is backward compatible as well as compatible with other approaches pursued in other EIPs.
## Test Cases
While the benefits of reducing transactions' intrinsic cost are appearant,
such a change should be applied if it impose no negative externalities,
or if such effects are negligible.
#### Increased Uncle Rate
Historically, periods of high transaction counts has correlated with
higher-than-average uncle blocks being mined. It must be determined that the
new intrinsic cost `7,000` will not adversely affect uncle rate.
A testnet applying this change should be deployed to test the effect of this change on uncle rate.
details TBD.
## Implementation
TBD
## Security Considerations
#### Increased State Size Growth
The growth of Ethereum's state size continues to raise concerns among members of the community.
However, an analysis of Ethereum accounts shows that their effect on stat size is negligible.
Looking at the first half of 2020, the number of accounts on the Ethereum chain had grown from 84,127,955 to 103,485,373 - an increase of 19,357,418. Since the *creation* of each new account adds 20 bytes to the chain state, these new accounts had added ~369 MB to the state.
At the same time, the chain had grown from ~117 GB to ~147 GB - an increase of 30 GB.
The creation of new accounts had therefore accounted for only a very small percentage (1.2%) of the chains growth.
Even under the very aggressive assumption that reducing the intrinsic cost of transactions from `21,000` to `7,000` gas would translate to x3 more new accounts being created, if this change was implemented on 1/1/2020, the state size would have only been 0.49% larger than it is today (see below)
While the sate-size remains an open issue which needs solving - reducing the intrinsic cost of transactions would hardly affect the rate at which the state-size grows, and would significantly improve the chains usability.
#### Enhancing Gas-Manipulation (gas-token)
Gas Token (https://gastoken.io/) is an Ethereum smart-contracts which leverages the storage refund mechanism by storing data (V.1) or creating accounts (V.2) using a low gas price, and then free (V.1) or self-destruct (V.2) them in a later transaction which utilizes a higher gas price. This mechanism is only economical when the high gas price redeeming the tokens is more than twice as high as the low gas price used to mint them.
Gas Tokens do not actually increase the state-size lon-term, as they release all the data they store in order to benefit from their gas boost.
However, they do manipulate the gas price auction.
There had been concerns that reducing the intrinsic cost of transactions from `21,000` to `7,000` would boost the savings achiieved using gas tokens, however these concerns are unfounded.
Due to some overhead of using the smart contract, minting and freeing a single gas-token is uneconomical, but the effect of the overhead diminishes the more tokens are minted and freed.
This is also the reason why their efficiency is hardly affected by the intrinsic cost of transactions - the gas token is designed to spread the transaction cost among many tokens.
The creators of gas tokens outline the maximal potential savings when minting very large number of tokens (up to x2.97 for V.1, and up to 3.49 for V.2). These numbers are *unaffected* by the proposed change. In a more realistic scenario where 100 gas tokens are minted, the proposed change increases the saving multiplier by a minuscule amount, generally smaller than the increase achieved by minting 200 tokens instead of 100.
The table below captures the effect of this proposal on the savings multiplier in a
| Version | free_gas_price / mint_gas_price | old savings multiplier | new savings multiplier | saving multiplier of 200 tokens |
|---|---|---|---|---|
| V.1 | 10 | 2.075 | 2.077 | 2.1 |
| V.1 | 100 | 2.780 | 2.781 | 2.819 |
| V.2 | 10 | 2.243 | 2.275 | 2.261 |
| V.2 | 100 | 3.251 | 3.315 | 3.316 |
## Copyright
Copyright and related rights waived via [CC0](../LICENSE.md).