From 47eb0a500d9b2ad81556a07e17f4b790a2412c8d Mon Sep 17 00:00:00 2001 From: James Hancock Date: Fri, 22 Nov 2019 11:22:56 -0800 Subject: [PATCH 01/10] Hard fork proposal to address the Ice age --- EIPS/eip-ice-age-fork.md | 61 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 61 insertions(+) create mode 100644 EIPS/eip-ice-age-fork.md diff --git a/EIPS/eip-ice-age-fork.md b/EIPS/eip-ice-age-fork.md new file mode 100644 index 00000000000000..fb0c652dd779ee --- /dev/null +++ b/EIPS/eip-ice-age-fork.md @@ -0,0 +1,61 @@ +--- +eip: tbd +title: "Hardfork Meta: Mountain Glacier" +author: James Hancock (@madeoftin) +discussions-to: tbd +type: Meta +status: Draft +created: 2019/11/22 +requires: 1679 +--- + +## 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 Main-net 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 possible 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: Glacier Mountain + +### Activation + - `Block >= 9,199,999` on the Ethereum mainnet + - `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 + - [EIP-2384](https://github.com/ethereum/EIPs/pull/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 intention of the ice age includes:** + + - 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. + +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 two ideas above capture much of what has been written on the process. 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. From 926eeb911a6acabda93ec0840237185d01d8d27d Mon Sep 17 00:00:00 2001 From: James Hancock Date: Fri, 22 Nov 2019 11:28:06 -0800 Subject: [PATCH 02/10] Included EIP number and discussion-to --- EIPS/eip-ice-age-fork.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/EIPS/eip-ice-age-fork.md b/EIPS/eip-ice-age-fork.md index fb0c652dd779ee..748c2462a4ecf5 100644 --- a/EIPS/eip-ice-age-fork.md +++ b/EIPS/eip-ice-age-fork.md @@ -1,8 +1,8 @@ --- -eip: tbd +eip: 2387 title: "Hardfork Meta: Mountain Glacier" author: James Hancock (@madeoftin) -discussions-to: tbd +discussions-to: https://github.com/ethereum/EIPs/pull/2387 type: Meta status: Draft created: 2019/11/22 From 52e9c8ec66ee79c2c715d59a0c4b3da0c5514993 Mon Sep 17 00:00:00 2001 From: James Hancock Date: Fri, 22 Nov 2019 11:36:54 -0800 Subject: [PATCH 03/10] Updated File Name With Correct EIP Number --- EIPS/{eip-ice-age-fork.md => eip-2387.md} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename EIPS/{eip-ice-age-fork.md => eip-2387.md} (100%) diff --git a/EIPS/eip-ice-age-fork.md b/EIPS/eip-2387.md similarity index 100% rename from EIPS/eip-ice-age-fork.md rename to EIPS/eip-2387.md From a45445e69bc724aa2ba0b568b47da9aac9321062 Mon Sep 17 00:00:00 2001 From: James Hancock Date: Fri, 22 Nov 2019 11:41:17 -0800 Subject: [PATCH 04/10] Updated block activated to 9.2 Million --- EIPS/eip-2387.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/EIPS/eip-2387.md b/EIPS/eip-2387.md index 748c2462a4ecf5..e277527c9bdf8e 100644 --- a/EIPS/eip-2387.md +++ b/EIPS/eip-2387.md @@ -29,7 +29,7 @@ This fork will push back the Iceage as far as possible and will give us time to - Codename: Glacier Mountain ### Activation - - `Block >= 9,199,999` on the Ethereum mainnet + - `Block >= 9,200,000` on the Ethereum mainnet - `Block >= tbd` on the Ropsten testnet - `Block >= tbd` on the Kovan testnet - `Block >= tbd` on the Rinkeby testnet From 862402e27ffbf92c0ba0f83492a960a958ff78f2 Mon Sep 17 00:00:00 2001 From: James Hancock Date: Fri, 22 Nov 2019 11:43:30 -0800 Subject: [PATCH 05/10] Clarified language as per suggested --- EIPS/eip-2387.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/EIPS/eip-2387.md b/EIPS/eip-2387.md index e277527c9bdf8e..852f4d7c2c8861 100644 --- a/EIPS/eip-2387.md +++ b/EIPS/eip-2387.md @@ -11,7 +11,7 @@ requires: 1679 ## 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 Main-net and includes a commitment to solving the problems with the ice age more permanently. +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 @@ -19,14 +19,14 @@ Ethereum achieves a consistent block time due to its' difficulty retargeting alg 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 possible 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. +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: Glacier Mountain +- Codename: Mountain Glacier ### Activation - `Block >= 9,200,000` on the Ethereum mainnet From 006cfffde060bb162b562cf5b9a68b4986a74f41 Mon Sep 17 00:00:00 2001 From: James Hancock Date: Fri, 22 Nov 2019 12:31:00 -0800 Subject: [PATCH 06/10] Updates Formatting and Includes Discussion-To a Magicians Thread --- EIPS/eip-2387.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/EIPS/eip-2387.md b/EIPS/eip-2387.md index 852f4d7c2c8861..b6da11b0226a24 100644 --- a/EIPS/eip-2387.md +++ b/EIPS/eip-2387.md @@ -2,10 +2,10 @@ eip: 2387 title: "Hardfork Meta: Mountain Glacier" author: James Hancock (@madeoftin) -discussions-to: https://github.com/ethereum/EIPs/pull/2387 +discussions-to: https://ethereum-magicians.org/t/hard-fork-to-address-the-ice-age-eip-2387 type: Meta status: Draft -created: 2019/11/22 +created: 2019-11-22 requires: 1679 --- @@ -35,7 +35,7 @@ This fork will push back the Iceage as far as far as is reasonable and will give - `Block >= tbd` on the Rinkeby testnet - `Block >= tbd` on the Görli testnet -### Included EIPs EIP-2384 +### Included EIPs - [EIP-2384](https://github.com/ethereum/EIPs/pull/2384): Istanbul/Berlin Difficulty Bomb Delay ## Rationale From 2365168e045d80686e9f39c4df80b17ec65cc3e1 Mon Sep 17 00:00:00 2001 From: James Hancock Date: Fri, 22 Nov 2019 12:32:11 -0800 Subject: [PATCH 07/10] Added Copyright Statement --- EIPS/eip-2387.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/EIPS/eip-2387.md b/EIPS/eip-2387.md index b6da11b0226a24..b03e43748444cb 100644 --- a/EIPS/eip-2387.md +++ b/EIPS/eip-2387.md @@ -59,3 +59,7 @@ The existing implementation of the ice age, while it does work in practice, is u - 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/). From 427b09045b1e426ed767284c33a0594a571510b0 Mon Sep 17 00:00:00 2001 From: James Hancock Date: Fri, 22 Nov 2019 12:37:23 -0800 Subject: [PATCH 08/10] Added Requires and Updated link to 2384 --- EIPS/eip-2387.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/EIPS/eip-2387.md b/EIPS/eip-2387.md index b03e43748444cb..ec6a7bd4905421 100644 --- a/EIPS/eip-2387.md +++ b/EIPS/eip-2387.md @@ -6,7 +6,7 @@ discussions-to: https://ethereum-magicians.org/t/hard-fork-to-address-the-ice-ag type: Meta status: Draft created: 2019-11-22 -requires: 1679 +requires: 1679 2384 --- ## Abstract @@ -36,7 +36,7 @@ This fork will push back the Iceage as far as far as is reasonable and will give - `Block >= tbd` on the Görli testnet ### Included EIPs - - [EIP-2384](https://github.com/ethereum/EIPs/pull/2384): Istanbul/Berlin Difficulty Bomb Delay + - [EIP-2384](https://eips.ethereum.org/EIPS/eip-2384): Istanbul/Berlin Difficulty Bomb Delay ## Rationale From 724d193205c8d6e647c62ef758d4ab6c441df24e Mon Sep 17 00:00:00 2001 From: James Hancock Date: Fri, 22 Nov 2019 12:42:43 -0800 Subject: [PATCH 09/10] Update eip-2387.md --- EIPS/eip-2387.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/EIPS/eip-2387.md b/EIPS/eip-2387.md index ec6a7bd4905421..f500c88037e764 100644 --- a/EIPS/eip-2387.md +++ b/EIPS/eip-2387.md @@ -6,7 +6,7 @@ discussions-to: https://ethereum-magicians.org/t/hard-fork-to-address-the-ice-ag type: Meta status: Draft created: 2019-11-22 -requires: 1679 2384 +requires: 1679, 2384 --- ## Abstract From f70abe45439bb5211cbc78339af56587e51e4156 Mon Sep 17 00:00:00 2001 From: James Hancock Date: Fri, 22 Nov 2019 17:44:10 -0800 Subject: [PATCH 10/10] Added more to intentions of the Ice Age --- EIPS/eip-2387.md | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/EIPS/eip-2387.md b/EIPS/eip-2387.md index f500c88037e764..410c6e45d1b770 100644 --- a/EIPS/eip-2387.md +++ b/EIPS/eip-2387.md @@ -42,14 +42,16 @@ This fork will push back the Iceage as far as far as is reasonable and will give I want to address the rationale for the intention of the Iceage and the implementation of the Iceage separately. -**The original intention of the ice age includes:** +**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. + - 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. +*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 two ideas above capture much of what has been written on the process. 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. +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**