-
Notifications
You must be signed in to change notification settings - Fork 5.4k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Hard fork proposal to address the Ice age #2387
Merged
Merged
Changes from all commits
Commits
Show all changes
10 commits
Select commit
Hold shift + click to select a range
47eb0a5
Hard fork proposal to address the Ice age
MadeofTin 926eeb9
Included EIP number and discussion-to
MadeofTin 52e9c8e
Updated File Name With Correct EIP Number
MadeofTin a45445e
Updated block activated to 9.2 Million
MadeofTin 862402e
Clarified language as per suggested
MadeofTin 006cfff
Updates Formatting and Includes Discussion-To a Magicians Thread
MadeofTin 2365168
Added Copyright Statement
MadeofTin 427b090
Added Requires and Updated link to 2384
MadeofTin 724d193
Update eip-2387.md
MadeofTin f70abe4
Added more to intentions of the Ice Age
MadeofTin File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,67 @@ | ||
--- | ||
eip: 2387 | ||
title: "Hardfork Meta: Mountain Glacier" | ||
author: James Hancock (@madeoftin) | ||
discussions-to: https://ethereum-magicians.org/t/hard-fork-to-address-the-ice-age-eip-2387 | ||
type: Meta | ||
status: Draft | ||
created: 2019-11-22 | ||
requires: 1679, 2384 | ||
--- | ||
|
||
## Abstract | ||
|
||
This meta-EIP specifies the changes included in the Ethereum hard fork named Mountain Glacier. This hard fork addresses the impending Ice Age on Ethereum Mainnet and includes a commitment to solving the problems with the ice age more permanently. | ||
|
||
## Motivation | ||
|
||
Ethereum achieves a consistent block time due to its' difficulty retargeting algorithm. If a block-time is higher than 20 seconds, it reduces the difficulty, and if a block time is lower than 10 seconds, it increases the difficulty. This mechanism reaches typically an equilibrium of around 13-14 seconds. Included within this mechanism is something we refer to as the Difficulty Bomb or the Ice Age. It artificially adds to the difficulty in such a way that the retargeting mechanism, at some point, can not adapt to the increase, and we see increased block times throughout the network. The ice age increments every 100,000 blocks. It at first is barely noticeable, but once it is visible, there is a drastic effect on block-times in the network. | ||
|
||
The primary problem with the Ice Age is that it is included in the complex mechanism that targets block times, which is an entirely separate in purpose. What is worse is due to being intwined with that algorithm, it is very difficult to simulate or predict its effect on the network. To predict the impact of the ice age, you must both make assumptions about the difficulty of main-net in the future, and predict the effect of changes in difficulty to the impact on the ice age and thus block-times. | ||
|
||
This fork will push back the Iceage as far as far as is reasonable and will give us time to update the Iceage to no longer have these design problems. There are two solutions to consider with-in that time frame. | ||
|
||
- Update the mechanism so that behavior is predictable. | ||
- Remove the Iceage entirely | ||
|
||
## Specification | ||
|
||
- Codename: Mountain Glacier | ||
|
||
### Activation | ||
- `Block >= 9,200,000` on the Ethereum mainnet | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Should be |
||
- `Block >= tbd` on the Ropsten testnet | ||
- `Block >= tbd` on the Kovan testnet | ||
- `Block >= tbd` on the Rinkeby testnet | ||
- `Block >= tbd` on the Görli testnet | ||
|
||
### Included EIPs | ||
- [EIP-2384](https://eips.ethereum.org/EIPS/eip-2384): Istanbul/Berlin Difficulty Bomb Delay | ||
|
||
## Rationale | ||
|
||
I want to address the rationale for the intention of the Iceage and the implementation of the Iceage separately. | ||
|
||
**The original intentions of the ice age include:** | ||
|
||
- At the time of upgrades, inhibit unintentional growth of the resulting branching forks leading up to Eth 2.0. * | ||
- Encourage a prompt upgrade schedule for the path to Eth 2.0. * | ||
- Forces the community to come back into agreement repeatedly...and it gives whatever portion of the community that wants to a chance to fork off | ||
- Is a check for the Core Devs in the case that a decision is made to freeze the code base of clients without the blessing of the community. | ||
|
||
*Note: Neither of these effects the Freedom to Fork. They are meant to encourage core-devs and the community to upgrade along with the network and prevent the case where sleeper forks remain dormant only later to be resurrected. The requirement for an active fork is to change a client in a way to respond to the ice age. This is in fact what Ethereum Classic as done. | ||
|
||
This is not meant to be exhaustive, but the ideas above capture much of what has been written on the original intentions and process of creating the fork. Any additions to this list that need to be made, I am happy to include. Regardless, to effectively implement an updated design for the ice age, all of the intentions need to be revisited and clarified as part of any updates. This clarification will give a clear expectation for the community and core developers moving forward. | ||
|
||
**The implementation** | ||
|
||
The existing implementation of the ice age, while it does work in practice, is unnecessarily complex to model and confusing to communicate to the community. Any updates to the design should be: | ||
|
||
- Easy to model the effect on the network | ||
- Easy to predict when it occurs | ||
|
||
This fork would give us time to address the community to understand their priorities better as far as the intentions of the Ice Age, and give time for proposals for better mechanisms to achieve those goals. | ||
|
||
## Copyright | ||
|
||
Copyright and related rights waived via [CC0](https://creativecommons.org/publicdomain/zero/1.0/). |
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Suggest "Muir Glacier" (see here) which has retreated significantly. Or any other similar glacier 😉
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Or perhaps a characters name from the movie Ice Age? 😂