Ergo's EIP 37, a tweak to its mining difficulty adjustment algorithm
The Ergo foundation has been working on a proposal, EIP 37, which would make its mining difficulty to stabilize. The need for such a change became apparent due to huge mining difficulty fluctuations observed recently. During the just concluded Ethereum merge, there was a large inflow of mining hashrate to Ergo for several epochs.
IEP 37 proposes to make 3 main adjustments 👇
We propose to make current difficulty readjustment more reactive and smoother by shortening epoch length, amplifying weight of the last epoch and put some limits on difficulty change as follows.
- Changing epoch length from 16 blocks to 128 blocks
- Calculate predictive difficulty according to 8 epochs, 128 blocks each, and classic difficulty as done in Bitcoin (averaged)
- Set mining difficulty change per epoch at <= 50%
A pull request to implement and activate this proposal has already been submitted on GitHub. Members of the Ergo community have been invited to review the PR.
Simulation test results
Assuming block generation time = difficulty * c / price
, the team behind EIP 37, run simulation tests.
Thus we made playground simulating random price walking in uptrend or downtrend. In a simulation, a blockchain is being mined by rational hashpower only. Hashrate is looking at current price and diffuculty. We assume that price and difficulty are changed at the same time, and then hashrate is moving in or out, which is affecting average block generation time t. We may assume then that t = d * c / p, so average block generation time t is proportinal to difficulty d and inversely proportional to price p. Fixing t (which is set to target block generation time, so 2 minutes), d and p at the beginning of the experiment, we can evaluate c. Then on each step we are randomly changing p and, according to difficulty from the previous epoch, we can get average block generation time for the new epoch. To have a trend in price, we are changing p by adding (or subtracting) a random value with fixed average, and also adding a random fluctuation.
TE: Total error - This represents a sum of differences between observed block generation time and target (120 s). The less total error, the better.
MD: Maximum delay
DAA: Difficulty Adjustment Algorithm
Price growth | Fluctuation | Bitcoin DAA | Current DAA | Proposed DAA |
---|---|---|---|---|
up to 5% | 10% | TE: 158841 MD: 133 | TE: 189403 MA: 151 | TE: 163893 MD: 141 |
0 | 25% | TE: 393770 MD: 161 | TE: 528003 MD: 224 | TE: 429667 MD: 193 |
Average of 2% | - | TE: 30409 MD: 120s maximum | TE: 19111 MD: 120s maximum | TE: 20691 MD: 120s maximum |
Average of 10% | - | TE: 143161 MD: 120s maximum | TE: 92861 MD: 120s maximum | TE: 105741 MD: 120s maximum |
Additional simulation tests were conducted under unique conditions:
Condition | Bitcoin DAA | Current DAA | Proposed DAA |
---|---|---|---|
3 epochs price going up, 3 epochs down, 25% max change | TE: 380139 MD: 160 | TE: 464081 MD: 221 | TE: 387880 MD: 185 |
Coin hopping - first epoch up to 50% of total hashrate jumping on, next epoch jumping off | TE: 770422 MD: 192 | TE: 586972 MD: 210 | TE: 670691 MD: 182 |
EIP 37 voting process
Miners are requested to take up their governance role and vote for or against the proposal. For the proposal to pass, at least 90% of Ergo miners have to vote in favor of the update. Just like before, voting will remain 1024 blocks.
The Ergo Foundation doesn't and will not participate in the vote, as they are a neutral party. Ergo developers set the voting options and the miners vote.
Voting configuration
Miners can use Ergo Protocol Reference Clients 4.0.100 to vote manually. Use 4.0.101 or 4.0.103 to auto-vote respectively.
While using version 4.0.100, a miner ought to set their config as follows:
1ergo {
2...
3 voting {
4 6 = 2400 #vote for EIP-37
5 }
6}
Alternatively, by updating their node to version 4.0.101, a miner doesn't need to change their config for voting. The upgrade itself suffices as a vote in favor of EIP 37.
Reference client 4.0.103 allows miners to vote for EIP-37 activation even if first block in a voting epoch is not proposing it. Miners should remove voting (ergo { voting ...)
section completely from the config if they wish to auto-vote for EIP-37, lest the voting section overrides the default one!
Mining pools and solo miners are requested to update their nodes to reflect the way they wish to vote. Individuals who are pool mining should direct their hashpower to a pool that reflects the way they wish to vote. This table list shows how mining pools are voting.
The ergo Foundation twitter account tweeted on September 30th:
⚠️ Attention all #Ergo node operators!
In preparation for EIP-37, please update your node to version 4.0.100 or later ~ @ergoplatformorg
In layman's terms this means:
Ergo is going to fork for new difficulty adjustment algorithm/EIP-37. If you're running node versions other than 4.0.1xx your node will fork from the main chain when this occurs, so please update to stay in sync with correct chain! ~ TypoDaPsycho1
Mining pools' EIP 37 voting direction
Ergo Mining pools | EIP 37 Vote |
---|---|
2miners.com | Yes |
nanopool.org | Yes |
herominers.com | Yes |
flypool.org | Yes |
2miners.com[SOLO] | Yes |
richpool.pro | Yes |
woolypooly.com | Yes |
jniupool.com | Contacted |
getblok.io+ SP | Yes |
solopool.org[SOLO] | Yes |
f2pool.com | Yes |
666pool.com | Yes |
ergominers.com | Yes |
dxpool.net | Contacted |
enigmapool.com | Yes |
jjpool.fr | Yes |
cruxpool.com | Contacted |
kryptex.com | Yes |
koberit.com | Yes |
ergomole.com | Yes |
leafpool.com | Yes |
e4pool.com | Yes |
cool2mine.com | Yes |
prohashing.com | Yes |
k1pool.com[SOLO] | Yes |
miningcrypto.live[SOLO] | Yes |
whalesburg.com | Yes |
k1pool.com | Yes |
fairhash.org | Yes |
rkdn.app | Yes |
moneroocean.stream | Yes |
ixbase.info | unknown |
ethcore.ru | Yes |
ergomole.com[SOLO] | Yes |
baikalmine.com | unknown |
mineergo.com | Yes |
skypool.org | Yes |
osuvox.com | unknown |
retrominers.org | Contacted |
indominer.org | unknown |
raptorhash.com | unknown |
miningcrypto.live | Yes |
unminable | Yes |
93.118.181.15:85 | Yes |
ZET | Contacted |
The voting period will span the time between blocks 843,776 and 942,081.
For EIP 37 activation, 232 or more votes for activation are required in the last 256 blocks.
First published on Sep 27, 2022
Ergo