X-Git-Url: https://git.mxchange.org/?p=core.git;a=blobdiff_plain;f=contrib%2Fchash%2Fchash.php;h=1bc7f147e5b7c68fb9ac13231c47bd1b9aa47ce1;hp=5bd2893debf4e293d75e02ee62f50b5fc31e7e11;hb=269780b35747a02770a68f9e70171c0f3b4b6a0b;hpb=8cda323d7322dba4365d201f95089e0a4019e71f diff --git a/contrib/chash/chash.php b/contrib/chash/chash.php index 5bd2893d..1bc7f147 100644 --- a/contrib/chash/chash.php +++ b/contrib/chash/chash.php @@ -1,6 +1,18 @@ = $sumModula) { + // Calculate new nonce + $nonce = calculateNonce($nonce); + + // And hash again + $nonceHash = doubleHashString($modulaHash . $nonce); + + // Calculate sums + $sumNonce = calculateSumFromHash($nonceHash); + + // Time spend in loop + $testTime = abs(microtime(TRUE) - $timeDisplay); + + // Calculate hashrate/sec + $hashrate = 1 / $testTime * $iterSecond * 2; + + // Only every second + if ($testTime >= 1) { + // Display hash rate + print ('hashrate=' . $hashrate . ' hashes/sec,iterSecond=' . $iterSecond . ' iterations/sec' . PHP_EOL); + + // Reset timer + $timeDisplay = microtime(TRUE); + $iterSecond = 0; + } // END - if + + // Time spend from last flush + $testTime = abs(microtime(TRUE) - $timeFlush); + + // Only once per 10 seconds + if ($testTime >= 10) { + // Flush check-point file + flushCheckPointFile($nonce, $modulaHash, $foundHashes); + } // END - if + + // Next round + $iter++; + $iterSecond++; + //print ('nonce=' . $nonce . ',iter=' . $iter . PHP_EOL); + //print ('nonceHash=' . $nonceHash . PHP_EOL); + //print ('sumNonce=' . $sumNonce . PHP_EOL); + //print ('sumModula=' . $sumModula . PHP_EOL); + } // END - while + + // If the iteration is zero, then no hash is found + if ($iter == 0) { + // Bad hash found + $timeBadHashes += abs(microtime(TRUE) - $timeHash); + + // And next round + //print('BAD:nonce=' . $nonce . PHP_EOL); + + // Nothing found, so calculate new nonce + $nonce = calculateNonce($nonce); + continue; + } // END - if + + // Add amount of hashes per block (double-hash) + $hashesPerBlock += $iter * 2 + 2; + + // Push found hash + array_push($foundHashes, array( + 'modula_hash' => $modulaHash, + 'genesis_hash' => $genesisHash, + 'nonce' => $nonce, + 'iter' => $iter, + 'hashes_block' => $hashesPerBlock, + 'nonce_hash' => $nonceHash + )); + + // Found hash: + print ('FOUND: nonceHash=' . $nonceHash . ',nonce=' . $nonce . ',iter=' . $iter . PHP_EOL); + + // Flush check-point file after new hash is found + flushCheckPointFile($nonce, $nonceHash, $foundHashes); + + // Use nonceHash as next modula hash + $modulaHash = $nonceHash; + } // END - while + + // Time taken for one block + $timeBlock = abs(microtime(TRUE) - $timeBlock); + + // Calculate reward + $reward = abs($timeBlock - $timeBadHashes) / $hashrate * $hashesPerBlock / BLOCK_SIZE * 1000; + print ('timeBlock=' . $timeBlock . ',timeBadHashes=' . $timeBadHashes . ',hashesPerBlock=' . $hashesPerBlock .',reward=' . $reward . PHP_EOL); + + // Block completed + $totalHashes += $hashesPerBlock; + $totalBlocks++; + $hashesPerBlock = 0; + $foundHashes = array(); + + // Calculate new nonce + $nonce = calculateNonce($nonce); + + // Add reward to total + $totalReward += $reward; + + // Calculate average block value + $blockValue = $totalReward / $totalBlocks * $totalHashes / (BLOCK_SIZE * $totalBlocks); + + // Calculate reward per hour (= 3600 seconds) + $rewardPerHour = $totalReward / abs(microtime(TRUE) - START_TIME) * 3600; + + print ('totalReward=' . $totalReward . ',blockValue=' . $blockValue . ',rewardPerHour=' . $rewardPerHour . PHP_EOL); +} // END - while + // [EOF] ?>