Tangerine Whistle hard fork
Mainnet 2016-10-18
Gas costs of opcodes that were being abused for DoS attacks were raised.
What changed
- Users
- The attack that had been slowing the network stopped, and transaction processing became stable again. In autumn 2016, an attacker repeatedly called cheaply priced instructions within a single transaction, making nodes take a long time to process one block, and transaction confirmations were delayed in the meantime. This fork raised the gas costs of those instructions, so the same attack cost far more in fees. Fees for ordinary transfers or token transfers barely changed, and users had nothing extra to do.
- Wallet & app developers
- The gas costs rose sharply for instructions that read another account's balance or code inside a contract, instructions that read storage, and instructions that call other contracts. Contracts that use these operations heavily in loops needed more gas for the same work, and functions with tightly set gas limits could fail. The rules also changed so that a call can no longer forward all remaining gas and must keep some in reserve, so code with hard-coded call gas values needed to be checked.
- Node operators
- This is the side that benefited most directly. During the attack, instructions that read heavily from disk were run repeatedly at a low price, so validating a single block took far longer than usual and many nodes fell behind in syncing. After the fork, instruction costs were aligned closer to the real processing burden, and block processing time returned to normal. As a hard fork, clients had to be upgraded to the new version before the designated block height, and nodes that did not upgrade stayed on the old chain.
Key EIPs
- EIP-150 Gas cost increase for IO-intensive operations