* Fix stability test mining (allow submission of non DAA blocks too)
* Comments for go fmt
* Use SubmitBlockAlsoIfNonDAA for all tests
Co-authored-by: Elichai Turkel <elichai.turkel@gmail.com>
* Implement a MinerState to cache the matrix and friends
* Modify the miner and related code to use the new MinerCache
* Change MinerState to State
* Make go lint happy
Co-authored-by: Ori Newman <orinewman1@gmail.com>
Co-authored-by: Kaspa Profiler <>
* Send pruning point anticone in topological order
Fix a UTXO pagination bug
Lengthen the stabilization time for the last DAA test
* Extend "sudden hash rate drop" test length to 45 minutes
Co-authored-by: Kaspa Profiler <>
* 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>