X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=contrib%2Fchash%2Fchash.php;h=0e60d0fbbf183432ed64fff3605ff395c9f7d913;hb=fe43c3ca36e4281c54ddad5646d21f6858d79bc8;hp=a1e91c28c568cc741185092e906a2af57598c1fb;hpb=b4683952aea678cf8e45d95989176073961de136;p=core.git diff --git a/contrib/chash/chash.php b/contrib/chash/chash.php index a1e91c28..0e60d0fb 100644 --- a/contrib/chash/chash.php +++ b/contrib/chash/chash.php @@ -1,6 +1,15 @@ = $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) { + // Display message + print ('FLUSHING: ' . count($foundHashes) . ' total found.' . PHP_EOL); + + // Write check-point + file_put_contents(CHECK_POINT, base64_encode($nonce) . ':' . $modulaHash . ':' . base64_encode(serialize($foundHashes))); + + $timeFlush = microtime(TRUE); + } // 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); + + + // 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] ?>