Create Proof class
hide Proof::GetNextChallenge()
CheckMinWork(uint, uint, int64) -> Proof::CheckMinChallenge(Proof&)
Remove nNonce variable and parameter
Remove testnet's special case from miner.cpp
Remove hash parameter from ScanHash
Move hashmeter inside ScanHash
miner.cpp::ScanHash() -> Proof::GenerateSolution()
nNonce = 0 -> ResetSolution()
proof.nNonce >= 0xffff0000 -> proof.OutOfRangeSolution()
Replace proof.nNonce >= 0xffff000 with an iteration counter
Small miner optimization