During a long blockchain update, there are messages such as "Evicting DAG for epoch X in favor of DAG for epoch X+3."

My understanding is that a DAG is not required until actually mining, so the only DAG required should be for the current epoch, no?

(FYI - blockchain has been updating for 2 days - currently up to #577208 )

1 Answer 1


I'm assuming you're on develop :)

That DAG is not the big mining DAG, but a tiny (1MB) one used for verifying blocks. We did an optimization that handles these verification caches better, and maintains 3 instead of only 1 as previously. The log you are seeing is when all three goes stale and the oldest is replaced with a new one. It's just a debug log, that accidentally got too large a log level. There's a pending PR in ethash https://github.com/ethereum/ethash/pull/82 that will lower the log back down.

Nothing to worry about.

  • Confirmed - on develop. Is the behaviour of this miniDAG affected in any way by the --autoDAG or other runtime flags? I think the log level is fine, but the message should indicate that this DAG is different (smaller) than the PoW DAG, and that it is necessary for verification. Most useful response to a technical question I've ever received from the Internet.
    – Arclight
    Mar 8, 2016 at 14:39
  • The upstream fixed was merged into ethash and it's now a pending PR to get it included in geth too. github.com/ethereum/go-ethereum/pull/2310. If all tests pass I'll merge it in a few mins :) Mar 8, 2016 at 14:49
  • 1
    Merged. You can pull a fresh develop now to see if everything's ok now :). And btw, no flags are related to these behaviors. These are only internal optimizations. Mar 8, 2016 at 14:56

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

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