From the official Ethereum Documentation:

The DAG is totally different every 30000 blocks (a 100 hour window, called an epoch) and takes a while to generate.

Is this also true for a private blockchain which has a lot less difficulty? How is the epoch period calculated?


Epoch time is hard coded into an Ethereum client. It is not derived from anything i.e., it's not affected by any parameter. This value stands for any blockchain (private or public) operating on Ethereum protocols.


The DAG use these parameters:

  "n": 4000055296 * 8 // NUM_BITS,  # Size of the dataset (4 Gigabytes); MUST BE MULTIPLE OF 65536
  "n_inc": 65536,                   # Increment in value of n per period; MUST BE MULTIPLE OF 65536
                                    # with epochtime=20000 gives 882 MB growth per year
  "cache_size": 2500,               # Size of the light client's cache (can be chosen by light
                                    # client; not part of the algo spec)
  "diff": 2**14,                    # Difficulty (adjusted during block evaluation)
  "epochtime": 100000,              # Length of an epoch in blocks (how often the dataset is updated)
  "k": 1,                           # Number of parents of a node
  "w": w,                          # Used for modular exponentiation hashing
  "accesses": 200,                  # Number of dataset accesses during hashimoto
  "P": SAFE_PRIME_512               # Safe Prime for hashing and random number generation

For the complete documentation and the algorithm:


  • I was specifically referring to the epoch period. In the parameters you mentioned, the epochtime is 100000 blocks. How was this chosen? Can I set my custom epochtime if running a private blockchain. – galahad Jul 18 '16 at 15:57

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.