I've downloaded the Etash source code and did some test on the PoW algorithm.
In MinerAux.h, if the current.seedHash != newSeedHash, the DAG file needs to be regenerated. And the newSeedHash was set by the rpc-client method getEthashWork (in EthashClient.cpp).
I am confused by the method getEthashWork. I have some questions below:
- How to compute the three parameters “hash without seal, seed hash, target boundary"?
- When will the seed hash be different from current one?
- Which conditions will lead to the seed hash changing?