Skip to content
Merged
Changes from 3 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
39 changes: 39 additions & 0 deletions EIPS/eip-2384.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
---
eip: 2384
title: Difficulty Bomb Delay
author: Eric Conner (@econoar)
type: Standards Track
category: Core
status: Draft
created: 2019-11-20
---

## Simple Summary
The average block times are increasing due to the difficulty bomb (also known as the "_ice age_") and slowly accelerating. This EIP proposes to delay the difficulty bomb for another 4,000,000 blocks (~611 days).

## Abstract
Starting with `???_FORK_BLKNUM` the client will calculate the difficulty based on a fake block number suggesting the client that the difficulty bomb is adjusting around 9 million blocks later than previously specified with the Homestead fork.

## Motivation
The difficulty bomb has been activated and block times are on the rise from 13.1s to 14.4s. This will start to accelerate soon and we will see 20s block times in December 2019 and 30s block times around February 2020. This will slowly start to make the chain bloated and more costly to use. It's best to delay the difficulty bomb again to around the time of expected launch of the Eth2 finality gadget.

## Specification
#### Relax Difficulty with Fake Block Number
For the purposes of `calc_difficulty`, simply replace the use of `block.number`, as used in the exponential ice age component, with the formula:

fake_block_number = max(0, block.number - 9_000_000) if block.number >= ???_FORK_BLKNUM else block.number

## Rationale
This will delay the ice age by 52 million seconds (approximately 611 days), so the chain would be back at 20 second block times around July 2021. It's important to note this pushes the ice age 4,000,000 blocks from ~block 8,800,000 NOT from when this EIP is activated in a fork.

## Backwards Compatibility
This EIP is not forward compatible and introduces backwards incompatibilities in the difficulty calculation. Therefore, it should be included in a scheduled hardfork at a certain block number. It's suggested to include this EIP shortly after the Istanbul fork.

## Test Cases
Test cases shall be created once the specification is to be accepted by the developers or implemented by the clients.

## Implementation
The implementation in it's logic does not differ from [EIP-649](https://github.com/ethereum/EIPs/blob/master/EIPS/eip-649.md) or [EIP-1234](https://github.com/ethereum/EIPs/blob/master/EIPS/eip-1234.md); an implementation for Parity-Ethereum is available in [parity-ethereum#9187](https://github.com/paritytech/parity-ethereum/pull/9187).

## Copyright
Copyright and related rights waived via [CC0](https://creativecommons.org/publicdomain/zero/1.0/).