ECIP 1043: Fixed DAG limit restriction Source

AuthorCody Burns, Wolf Spraul
TypeStandards Track
Superseded by 1099

ECIP-1043 – Fixed DAG limit restriction


The purpose of this ECIP is to set a limit on the maximum size of the DAG and no longer increase it on an epoch schedule.


The original intent of the DAG was to provide ASIC resistance to the mining protocol in order to prevent centralization of mining distributions and thereby provide for an objectively fair distribution of tokens. As evident by ASICs being developed that are capable of matching current GPU miners while being more energy efficient, the DAG has succeeded in leveling the playing field between GPU incumbents and ASIC challengers, avoiding ASIC takeover and domination, and leading to a competitive and large mining ecosystem. However, further increases of the DAG size, while technically possible, may have negative impact on long term security and may act as an anti-competitive bug preventing further investment in mining development.

While prior concerns around 2 GB and 3 GB boundaries have not materialized ECIP-? Limit DAG growth #6, there is renewed concern around the 4 GB boundary, which will be reached in late 2020. Forcing GPUs into obsolescence does not provide an increase in security. To the contrary, smaller DAG sizes allow more GPUs the ability to mine while providing a lowered initial entry cost to hobbyist miners.

A 5 year vision of the mining landscape would see a transition from general purpose GPU mining to a broader market of application specific hardware being built by current and supported by a diverse group of manufactures similar to the current GPU market.


if(blkNumber > 10,000,000) { DAG growth = 0; cache growth = 0 }

Note that in order to not alter the characteristics of the Ethash Proof-of-Work entirely, the epoch is still incremented every 30,000 blocks, and the contents of the DAG and cache change with every epoch. The only modification is to stop the increase of DAG size and cache size.

Specification Alternatives

  • A: do not activate ECIP but continue to collect data and prepare code
  • B: (current spec) stop growth at block 10,000,000 (DAG is about 3.6GB then)
  • C: reverse growth at block 10,000,000, stop decline at block x
  • D: set to 2.9 GB at block x
  • E: set to 1.5 GB at block x

Two variables directly control the dag size growth cacheSize and datasetSize

  • cacheSize is the size of the ethash verification cache that belongs to a certain block number. The cache size grows linearly, however, we always take the highest prime below the linearly growing threshold in order to reduce the risk of accidental regularities leading to cyclic behavior

  • DatasetSize is the size of the ethash mining dataset that belongs to a certain block number. The dataset size grows linearly, however, we always take the highest prime below the linearly growing threshold in order to reduce the risk of accidental regularities leading to cyclic behavior.

These values are calculated as blockNumber / epochLength. To set the dag growth to a number smaller than what would occur through the normal calculation. A Magic Dag Epoch block is of 64 replaces blockNumber / epochLength as the epoch number after the fork block and when the dag is calculated in the future this epoch is always used. Dag generation is uneffected and will compute at epoch 64 pepeturally. Epoch 64 was selected because it included block 1,920,000 where the mining community rallied to help ETC form and survive.

//run prior to calculating cacheSize or dataSize 

 if (blocknumber > ECIP1043Transition) {
		epoch := 64
	} else {
		epoch := int(block / epochLength)

Risks Consideration

  • This ECIP is not forward compatible and introduces backwards incompatibilities in the DAG file generation, block verification, and block mining. Therefore, it should be included in a scheduled hardfork at a certain block number.
  • This is a long term PRO applicaton specific hardware proposal. If sufficient interest is not generated by manufactures in the mining field, there is risk of domination by one or more manufactures. (market risk)
  • This ECIP moves the goalposts of a game that has already started. It may set a precedent of social intervention and reduce objectivity of the physical layer. Owners of 6 GB and more memory GPUs may not see the profitability jump they may have expected around November 2020. Owners of 4 GB GPUs or Bitmain E3 may see unexpected additional profitability. If DAG is decreased below 3 GB or below 2 GB, owners of older GPUs may unexpectedly have a chance to participate again.
  • This ECIP impairs the immutability of the hashing algorithm, potentially leading to a reassessment of the current 1.0 value in Yazanator’s immutability map (to 0.9 maybe?) and Szabo score.
  • The units of Ethash before and after activation may be deemed not fully comparable and thus impair a fair chance for follow-the-longest-chain to play out.
  • This ECIP may not attract sufficiently broad support from client software, mining stacks (Claymore), pools, Bitmain (E3 software upgrade).
  • It may be unclear how to gather sentiment around a change that affects investments into the physical layer currently valued at 21 mio USD, or how to assess and handle contentious or friendly forks emerging from this ECIP.
  • This ECIP may require coordination with ETH given that ETH is considering both a change to ProgPoW and a change to PoS in the near future. It may be hard to assess sentiment whether it’s better for ETC to lead with stability or to lead with progression.

Quantifying ETC Mining Investment

Network values for ETC (2019-10-19):

  • mining profitability 0.0123 USD/MH/Day
  • calculated network hashrate 9.5TH/s

Ignoring sunk cost, we calculate how much it would cost to provide today’s network hashrate at today’s profitability, if investors want to recoup the cost of machines within 180 days.

  • 0.0123 USD/MH/day = 12,300 USD/TH/day
  • 12,300 USD * 180 days = 2,214,000 USD/TH
  • 2,214,000 USD/TH * 9.5 TH = 21,033,000 USD

We can value today’s ETC mining investment at about 21 mio USD.

Quantifying DAG Size

  • 1 epoch = 30,000 blocks (about 5 days)
  • DAG increase: 8MB / epoch, about 579 MB / year
Date DAG Size Note
2016-09-28 1.6 GB Predecessor of ECIP 1043 started
2017-08-31 2 GB  
2018-04-16 2.4 GB ECIP 1043 started
2019-04-01 3 GB  
2019-10-20 3.3 GB Now
2020-10-30 4 GB Might affect 20%-40% of network hashrate
2023-12-31 6 GB  
2027-03-01 8 GB  
2031-11-30 11 GB  
2040 16 GB  
2065 32 GB  



The following clients implemented ECIP

  • [] Geth-ETC
  • [] Parity
  • [] Mantis

Copyright and related rights waived via CC0.