mirror of
https://github.com/kaspanet/kaspad.git
synced 2025-03-30 15:08:33 +00:00

* Copy over boilerplate and begin implementing TestDAA. * Implement a fairly reliable method of hashing at a certain hashrate. * Convert the DAA test to an application. * Start kaspad and make sure that hashrate throttling works with that as well. * Finish implementing testConstantHashRate. * Tidied up a bit. * Convert TestDAA back into a go test. * Reorganize TestDAA to be more like a traditional test. * Add sudden hashrate drop/jump tests. * Simplify targetHashNanosecondsFunction. * Improve progress logs. * Add more tests. * Remove the no-longer relevant `hashes` part of targetHashNanosecondsFunction. * Implement a constant hashrate increase test. * Implement a constant hashrate decrease test. * Give the correct run duration to the constant hashrate decrease test. * Add cooldowns to exponential functions. * Add run.sh to the DAA test. * Add a README. * Add `daa` to run-slow.sh. * Make go lint happy. * Fix the README's title. * Keep running tests even if one of them failed on high block rate deviation. * Fix hashrate peak/valley tests. * Preallocate arrays for hash and mining durations. * Add more statistics to the "mined block" log. * Make sure runDAATest stops when it's suppposed to. * Add a newline after "5 minute cooldown." * Fix variable names. * Rename totalElapsedTime to tatalElapsedDuration. * In measureMachineHashNanoseconds, generate a random nonce only once. * In runDAATest, add "DAA" to the start/finish log. * Remove --logdir from kaspadRunCommand. * In runDAATest, enlarge the nonce range to the entirety of uint64. * Explain what targetHashNanosecondsFunction is. * Move RunKaspadForTesting into common. * Rename runForDuration to loopForDuration. * Make go lint happy. * Extract fetchBlockForMining to a separate function. * Extract waitUntilTargetHashDurationHadElapsed to a separate function. * Extract pushHashDuration and pushMiningDuration to separate functions. * Extract logMinedBlockStatsAndUpdateStatFields to a separate function. * Extract submitMinedBlock to a separate function. * Extract tryNonceForMiningAndIncrementNonce to a separate function. * Add comments. * Use a rolling average instead of appending to an array for performance/accuracy. * Change a word in a comment. * Explain why we wait for five minutes at the end of the exponential increase/decrease tests. Co-authored-by: Svarog <feanorr@gmail.com>