TL;DR
July 30, 2015
- Ethereum launches with a block gas limit of 5000
August 7, 2015
- Increase⬆ to 21000 on August 7
- Increase⬆ to 3,141,592 over next 24 hours
March 4, 2016
- Increase⬆ to 4,712,388
Sept 22-24 2016
- Decrease⬇ limit to 1,000,000 in response to Network (DDoS) attacks
- Increases⬆ limit to 1,500,000 later that day
October 14/15, 2016
- Decrease⬇ limit to 500,000 as hard fork is prepared to fix the calls that are underpriced
October 23, 2016
- Increased⬆ to 2,000,000 after hard fork and stability
November 24/25, 2016
- Increase⬆ to 3,300,000
December 4/5/6, 2016
- Increase⬆ to 4,000,000 as a final recovery move back prior-attack days
May 31-June 5, 2017 - June 30, 2017
- Increase⬆ to 4,712,388 and then further to ⬆ to 6,720,000
December 10, 2017
- Increase⬆ to 8,000,000
September 14-20, 2019
- Increase⬆ to 10,000,000 (+25%)
June 19/20-July 24, 2020
- Increase to ⬆ to 12,000,000 and then further increases⬆ to 12,500,000
April 19/20/21, 2021
- Increased⬆ to 15,000,000
Part 1: A Peaceful Beginning
"Ethereum has a block size limit due to the block gas limit enforced by the consensus protocol. The block gas limit is dynamically adjusted by miners. In each block, miners can increase or decrease the block size by a maximum of the previous block size divided by 1024. This is defined in equations 45 to 47 in the formal Ethereum protocol specification and implemented by all Ethereum clients. Effectively this means that a majority of miners must agree for the block size cap to change." and "If a blockchain network is at capacity, with all blocks filled with transaction, then all the tx senders found utility in sending their txs with their particular fees." - Gustav Simonsson
Key Events
July 30, 2015
- Ethereum launches with a gas limit of 5000
- No transactions can be sent as sending requires a minimum of 21000 gas)
- Vitalik: https://www.reddit.com/r/ethereum/comments/3f6f1r/reminder_the_block_gas_limit_is_currently_5000_so/
August 7, 2015 - March 2016
- This process was referred to as the "thawing" of the chain upon launch
- On August 7, the limit is lifted, allowing the actual block size limit to hit⬆ 21000 on August 7, 8 days after initial mainnet launch: https://etherscan.io/blocks?m=0xbb7b8287f3f0a933474a79eae42cbca977791171&p=481
- Over the next day, the block gas limit increases⬆ to 3,141,592, the number chosen in the beginning. 3,141,592 is maintained through March 2016
- 3,141,592 is "PI Million" aka a "Nothing up my sleeve number" aka something cryptographers find amusing (😂)
- https://etherscan.io/blocks?m=0xbb7b8287f3f0a933474a79eae42cbca977791171&p=455
- PR for geth/miner: gas limit strategy, target 3141592 & def gas price 50 Shannon #1578:
March 4, 2016
- Increased⬆ to 4,712,388
- (1.5 times PI million)
- The minimum gas price to relay a transaction is lowered from 50 gwei to 20 gwei:
Part 2: The DAO Hack
Mid-2016
While not directly related to gas block limits, it's a key piece of history. Interestingly, the max block gas limit played a role in the soft fork that never was.
It also will lead us into the next chapter as this soft fork was determined to have a DOS vulnerability, thus limiting the choice from soft, hard, or neither to just fork or no fork.
June 17, 2016
- The DAO is hacked
June 24, 2016
- The choice to hard or soft fork in response to the hack
- "Miners supporting the DAO soft-fork can do so by starting Geth 1.4.8 with --dao-soft-fork. This will cause the block gas limits to be lowered towards Pi million until the deciding block 1800000 (approx. 6 days from now) is reached. If the gas limit of this block is below or equal 4M, the soft-fork goes into effect and (all updating) miners will start blocking DAO transactions that release funds. Miners not supporting the DAO soft-fork can run Geth normally without any extra arguments needed. They will try to keep the block gas limits at the current 4.7 million. If the gas limit of the decisive block will be above 4M, the soft-fork is denied and (all updating) miners will accept DAO transactions that release funds."
June 28, 2016
- JK LOL DON'T SOFT FORK THERE'S A DOS ATTACK VECTOR
July 20, 2016
- Hard fork executed:
July 23, 2016
- Ethereum Classic emerges due to listing by Poloniex:
July 29, 2016
- Replay attacks against exchanges emerge: https://gist.github.com/taoeffect/c910ebb16d9f6d248e9f1f3c6e10b1b8
September 2, 2016
- Geth 1.5 released. Includes a big under-the-hood overhaul of transaction priorities, dropping of old txs, and putting a limit on the maximum number of tx a queue can have.
Part 3: The Network Attacks
Late-2016
- While everyone is waking up and preparing for the first day of Devcon II in Shanghai, key EF folks and engineers had already been startled awake and were attempting to determine wtf is going on. They repurposed the press room as a war room due to connectivity. Also, just, lol.
Sept 18 2016
- Jeff (master of geth): Pushes patch to geth in response to sustained attacks that caused geth to crash
Sept 22-24 2016
- Jeff (master of geth): We're still under attack. There are noticeable discrepancies between Parity and Geth, though not a consensus issue just a late-to-the-party issue. "It is highly recommended to switch to Parity mining. Use these settings: --cache-size-db 1024 --gas-floor-target 1000000 --gasprice 50000000000"
- This in turn decreases⬇ limit to 1,000,000
- Later that same day, Vitalik gives updated instructions that make more tweaks, including increases⬆ limit to 1,500,000
October 14/15, 2016
- Hard fork is prepared to fix the calls that are underpriced
- The network attacks re-emerge
- Miners further encouraged to decrease⬇ limit to 500,000
- Oct 13, 2016, Martin Swende: "While the recent patches have led to an overall increased resiliency in the client implementations, the attacks have also demonstrated that a lower-level change to the EVM pricing model is needed."
- October 14, 2016: Attacker is preparing new assault on the network- miners should lower block gas limit to 500k https://www.reddit.com/r/ethereum/comments/57fx7y/attacker_is_preparing_new_assault_on_the_network/
- October 18, 2016:
- October 20, 2016: More attacking. "Previously, we were able to cache the entire accounts state in memory (it was about 180MB). Due to the state bloat attack, we now only cache recently referenced nodes, and the attacker is taking advantage of that to force geth to do a lot of reads - on the very accounts he created in the previous attack." https://www.reddit.com/r/ethereum/comments/589l6b/lol_i_think_its_another_attack_contract_burns/
October 23, 2016
- Limits are increased⬆ to 2,000,000 after recovering from network attacks
- https://www.reddit.com/r/ethereum/comments/58aelh/attention_miners_recommending_miners_lower_the/
October 31, 2016
- Uncles and stuff from Daddy V:
November 24/25, 2016
- Increased⬆ to 3,300,000
- More recovery from network attacks
December 4/5/6, 2016
- Increased⬆ to 4,000,000 as a final recovery move back prior-attack days
- https://www.reddit.com/r/ethereum/comments/5gjao0/block_gas_limit_is_finally_rising_up_to_36m_thank/
Part 3: ICO Mania
2017
March 19, 2017
- Vlad comments on lowering the block rewards for miners:
May 8, 2017
- Peter: Geth removes arbitrary gas price of 20 gwei and sets default of 18 gwei and other stuff to alleviate network congestion. Fun fact: "Side note: the PR reduces the default gas price from 20 Shannon to 18 Shannon. This is actually a noop since our miner code had a weird snippet that set its accepted gas limit to 90% of what the user specified. :| I removed that."
May 31-June 5, 2017 - June 30, 2017
- Increased⬆ to 4,712,388 and then further to ⬆ to 6,720,000
- May 31, 2017, Edgard posts, Hudson comments: https://www.reddit.com/r/ethereum/comments/6ehp60/recommendations_to_miners_to_change_gas_limit_and/ The one Hudson led
- June 8, 2017, Vitalik: https://www.reddit.com/r/ethereum/comments/6g6tww/there_are_hundreds_or_even_thousands_of_pending/dinzrgq/
- June 21, 2017: Infura:
- June 27, 2017: Hudson:
December 10-14, 2017
- November 28, 2017: Cryptokitties launches!
- December 3, 2017: TechCrunch
- December 3, 2017: CryptoKitties hits 13% of all gas used: https://www.reddit.com/r/ethereum/comments/7h9mjr/at_the_moment_cryptokitties_is_the_busiest_smart/
- December 3, 2017: CryptoKitties attempt to pull out and unburden the network:
- Dec 5, 2017: Folk talking about increasing, Etherchain (largest miner) says no thank you to increase: https://www.reddit.com/r/ethereum/comments/7hmlm4/can_we_please_increase_the_gas_limit/dqsnf3q/
December 10, 2017
- Increases⬆ to 8,000,000
- Gas on the rise: https://old.reddit.com/r/ethereum/comments/7istyu/block_gas_limit_on_the_rise/
January 2018
- As network and cats reach a total fever pitch, Nick Johnson adjusts gas price math to prevent a long-standing issue with gas price calculations: "geth recommends a gas price that is greater than that required for 50% of transactions in recent blocks. This can lead to gas price inflation as people take this figure and add a margin to it, resulting in a positive feedback loop." This issue was first noted but not fully realized in June 2017 due to volatility of gas prices. It was especially experienced by overworked exchanges bulk-sending transactions after an ICO where they would feedback-loop themselves.
- The solution then was to "wait it out" (wait for gas prices to fall when ICO was over). CryptoKitties was so sustained the issues we had all been encountering for so long came to a head numerous times over in the exchange workgroup. All tensions were high, and Nick ended up pushing up this PR.
Interlude (2018 & 2019)
No changes to block gas limit
- Bear market sinks in, everyone goes and hibernates
- Graphs and analysis from 2015-2018:
September 14-20, 2019
- Increases⬆ to 10,000,000 (+25%)
- This is partially due to Tether's movement to using the Ethereum blockchain
- Also, thanks to Tether's weirdness, geth's gas (limit) estimation would return a lower value than necessary. The fix is dropped here:
- And geth patches a hole that would allow people like us to do a lot of token balance lookups in a little amount of space via eth_call. Normal RPCs to getBalance would require a separate lookup for each token, but not if you use a contract running on-chain to give them all for you in one call via eth_call. The issue is less about allowing any of the calls and more the fact it allowed an UNLIMITED number of them which would crash folk's nodes. 😅
Part 4: DeFi Summer, Farmers, Yields
June 19/20-July 24, 2020
- Increases to ⬆ to 12,000,000 and then further increases⬆ to 12,500,000
- June 19, 2020 (2nd largest miner at the time):
- I suspect this is explained by what Vitalik said in 2017 as well. Vitalik: https://www.reddit.com/r/ethereum/comments/6g6tww/there_are_hundreds_or_even_thousands_of_pending/dinzrgq/
Part 5: Inefficiencies and Profits Intensify
Background
"We additionally show that high fees paid for priority transaction ordering poses a systemic risk to consensus-layer security. We explain that such fees are just one form of a general phenomenon in DEXes and beyond---what we call miner extractable value (MEV)---that poses concrete, measurable, consensus-layer security risks. We show empirically that MEV poses a realistic threat to Ethereum today. Our work highlights the large, complex risks created by transaction-ordering dependencies in smart contracts and the ways in which traditional forms of financial-market exploitation are adapting to and penetrating blockchain economies."
June 30, 2020
- This PR changes the sorting of pool transactions with the same gas price. Previously transactions were sorted randomly (due to the way go maps work). Now they are sorted by the time that they were added to the mempool in ascending order. This is supposed to remove the incentive for spamming transactions to backrun a tx (#21350). Potential cons of this solution: This provides stronger incentives for miner collusion than the current solution
Aug 28, 2020
- The dark forest is first revealed to a much wider audience than Phil and other's research was originally
Flashbots Arrive
- "Miner extractable value (MEV) is a measure devised to study consensus security by modeling the profit a miner (or validator, sequencer, or other privileged protocol actor) can make through their ability to arbitrarily include, exclude, or re-order transactions from the blocks they produce. MEV includes both ‘conventional’ profits from transaction fees and block rewards, and ‘unconventional’ profits from transaction reordering, transaction insertion, and transaction censorship within the block a miner is producing. The term MEV can be misleading as one would assume it is miners who are extracting this value. In reality, the MEV present on Ethereum today is predominantly captured by DeFi traders through structural arbitrage trading strategies; miners indirectly profit from these traders’ transaction fees."
Why now? What changed?
- Steadily increasing contract interactions (ie. there are more complex transactions on Ethereum than before which increases the absolute amount of MEV up for grabs.)
- Token market cap exceeding ETH market cap (ie. MEV revenue in ERC-20 tokens is starting to compete with regular transaction fees paid in ETH.)
- Transaction fees exceeding block rewards (ie. transaction fees have reached unprecedented levels partly due to traders pushing the gas prices up when competing for trading opportunities. It is a clue that MEV-related revenue may surpass block reward for miners.)
- Adoption of generalized frontrunners (ie. an indicator of increased sophistication in MEV extraction.)
- Adoption of permissioned mempools (ie. another indicator of such sophistication)
- If you can't beat 'em, join 'em! (transparently!)
February 22, 2021
- Quantifying MEV: Introducing MEV-Explore v0:
April 19/20/21, 2021
- Limit is increased⬆ to 15,000,000 after sustained gas prices, making Ethereum unusable for retail trades and normal transactions (a normal send could be as much as $5)
- April 15, 2021, Vitalik: https://www.reddit.com/r/ethereum/comments/mrl5wg/a_quick_explanation_of_what_the_point_of_the_eip/guohkyh/
- April 20, 2021, Peter (Geth Master):
- Gas prices plummet from 1000 GWEI peaks, 500 GWEI "normal" to 20 GWEI normal in days. 🤔
May 2021 and Beyond
- TBD :)
Further References & Resources
- What is Gas
- Why are Ethereum gas prices so high?!
- How to know what gas price to use
- Gas Economics
- Ethereum Average Gas Price Chart
- Is there a limit for transaction size?