From f252e7a3209cea9d40e34d72adf9f0ae37dc4b15 Mon Sep 17 00:00:00 2001 From: Micah Zoltu Date: Sat, 21 Jul 2018 13:46:30 +0800 Subject: [PATCH 1/4] Creates Remove Difficulty Bomb EIP The difficulty bomb operates under the assumption that miners decide what code economic participants are running, rather than economic participants deciding for themselves. In reality, miners will mine whatever chain is most profitable and the most profitable chain is the one that economic participants use. If 99% of miners mine a chain that no economic participants use then that chain will have no value and the miners will cease mining of it in favor of some other chain that does have economic participants. Another way to put this is that miners will follow economic participants, not the other way around. With the difficulty bomb removed, when Casper is released it will be up to economic participants to decide whether they want the features that Casper enables or not. If they do not want Casper, they are free to continue running unpatched clients and participating in the Ethereum network as it exists today. This freedom of choice is the cornerstone of DLTs and making it hard for people to make that choice (by creating an artificial pressure) does not work towards that goal of freedom of choice. If the development team is not confident that economic participants will want Casper, then they should re-evaluate their priorities rather than trying to force Casper onto users. Personal Note: I think we will see almost all economic participants in Ethereum switch to PoS/Sharding without any extra pressure beyond client defaults. --- EIPS/eip-xxxx.md | 37 +++++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100644 EIPS/eip-xxxx.md diff --git a/EIPS/eip-xxxx.md b/EIPS/eip-xxxx.md new file mode 100644 index 0000000000000..bdfe592b3d5ff --- /dev/null +++ b/EIPS/eip-xxxx.md @@ -0,0 +1,37 @@ +--- +eip: XXXX +title: Remove Difficulty Bomb +author: Micah Zoltu (@MicahZoltu) +discussions-to: https://ethereum-magicians.org/t/difficulty-bomb-removal/832 +type: Standards Track +category: Core +status: Draft +created: 2018-07-21 +--- + +## Simple Summary +The average block times are increasing due to the difficulty bomb (also known as the "_ice age_") slowly accelerating. This EIP proposes to remove the difficulty bomb with the Constantinople fork, the second part of the Metropolis fork. + +## Abstract +Starting with `CNSTNTNPL_FORK_BLKNUM` the client will calculate the difficulty without considering the current block number. + +## Motivation +The difficulty bomb operates under the assumption that miners decide what code economic participants are running, rather than economic participants deciding for themselves. In reality, miners will mine whatever chain is most profitable and the most profitable chain is the one that economic participants use. If 99% of miners mine a chain that no economic participants use then that chain will have no value and the miners will cease mining of it in favor of some other chain that does have economic participants. Another way to put this is that miners will follow economic participants, not the other way around. + +## Specification +#### Remove Difficulty with Fake Block Number +For the purposes of `calc_difficulty`, simply remove the use of `block.number`, as used in the exponential ice age component. + +## Rationale +With the difficulty bomb removed, when Casper is released it will be up to economic participants to decide whether they want the features that Casper enables or not. If they do not want Casper, they are free to continue running unpatched clients and participating in the Ethereum network as it exists today. This freedom of choice is the cornerstone of DLTs and making it hard for people to make that choice (by creating an artificial pressure) does not work towards that goal of freedom of choice. If the development team is not confident that economic participants will want Casper, then they should re-evaluate their priorities rather than trying to force Casper onto users. + +Author Personal Note: I think we will see almost all economic participants in Ethereum switch to PoS/Sharding without any extra pressure beyond client defaults. + +## 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 in the second Metropolis hard-fork, _Constantinople_. + +## Test Cases +Test cases shall be created once the specification is to be accepted by the developers or implemented by the clients. + +## Copyright +Copyright and related rights waived via [CC0](https://creativecommons.org/publicdomain/zero/1.0/). From dd5a77a037800a0ec39076eedec6da687f0630e4 Mon Sep 17 00:00:00 2001 From: Micah Zoltu Date: Sat, 21 Jul 2018 13:59:44 +0800 Subject: [PATCH 2/4] Added more clarity on how to fix the difficulty. --- EIPS/eip-xxxx.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/EIPS/eip-xxxx.md b/EIPS/eip-xxxx.md index bdfe592b3d5ff..3b74daef8360e 100644 --- a/EIPS/eip-xxxx.md +++ b/EIPS/eip-xxxx.md @@ -20,7 +20,7 @@ The difficulty bomb operates under the assumption that miners decide what code e ## Specification #### Remove Difficulty with Fake Block Number -For the purposes of `calc_difficulty`, simply remove the use of `block.number`, as used in the exponential ice age component. +For the purposes of `calc_difficulty`, change the epsilon component to `0` rather than having it be a function of block number. ## Rationale With the difficulty bomb removed, when Casper is released it will be up to economic participants to decide whether they want the features that Casper enables or not. If they do not want Casper, they are free to continue running unpatched clients and participating in the Ethereum network as it exists today. This freedom of choice is the cornerstone of DLTs and making it hard for people to make that choice (by creating an artificial pressure) does not work towards that goal of freedom of choice. If the development team is not confident that economic participants will want Casper, then they should re-evaluate their priorities rather than trying to force Casper onto users. From f3b7d1ef7ab51df43571f864e147a66ef30324f4 Mon Sep 17 00:00:00 2001 From: Micah Zoltu Date: Sat, 21 Jul 2018 14:05:13 +0800 Subject: [PATCH 3/4] Adds Yellow Paper implementation. --- EIPS/eip-xxxx.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/EIPS/eip-xxxx.md b/EIPS/eip-xxxx.md index 3b74daef8360e..d1597f2c33646 100644 --- a/EIPS/eip-xxxx.md +++ b/EIPS/eip-xxxx.md @@ -33,5 +33,8 @@ This EIP is not forward compatible and introduces backwards incompatibilities in ## Test Cases Test cases shall be created once the specification is to be accepted by the developers or implemented by the clients. +## Implementations +The yellow paper implements this change in https://github.com/ethereum/yellowpaper/pull/710 + ## Copyright Copyright and related rights waived via [CC0](https://creativecommons.org/publicdomain/zero/1.0/). From a9392345a8320a273ae5f7c6bb15b877514646f9 Mon Sep 17 00:00:00 2001 From: Micah Zoltu Date: Sat, 21 Jul 2018 14:08:01 +0800 Subject: [PATCH 4/4] Sets EIP number. --- EIPS/{eip-xxxx.md => eip-1240.md} | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) rename EIPS/{eip-xxxx.md => eip-1240.md} (99%) diff --git a/EIPS/eip-xxxx.md b/EIPS/eip-1240.md similarity index 99% rename from EIPS/eip-xxxx.md rename to EIPS/eip-1240.md index d1597f2c33646..cb8ff2fa062fd 100644 --- a/EIPS/eip-xxxx.md +++ b/EIPS/eip-1240.md @@ -1,5 +1,5 @@ --- -eip: XXXX +eip: 1240 title: Remove Difficulty Bomb author: Micah Zoltu (@MicahZoltu) discussions-to: https://ethereum-magicians.org/t/difficulty-bomb-removal/832