I'm using https://github.com/jgarzik/pyminer/blob/master/pyminer.py to test a few different hash functions. Instead, I'd like to try keccak, a few of them in some order like an "X5" and so on.
This is a toy project to try and change the proof of work in Bitcoin and recompile and test, either an old version < 0.10.0 since getwork() might be easier to test with, or the latest release - apparently bitcoin-cli can mine blocks if starting from a new genesis block and the difficulty is set so low that a CPU can mine as much as you like.
My problem is that I can't find in Bitcoin Core where the proof of work is. I've looked in pow and validation files for near a week now, but no luck so far, or I just can't see it for some reason.
I thought it might have been obvious in miner.cpp which I think is no longer used (but might be able to be enabled?), and the best I can find is CheckProofOfWork in pow.cpp.
It doesn't seem to check whether the PoW is sha256d. Does it? I must be missing something. So it looks like I can just change the miner code and submit a proof of work and if it meets the requirements, it will be accepted.
Is there a reasonably easy way to use a toy miner, change the PoW algorithm, and modify Bitcoin Core if necessary to try a different proof of work?
Edit: this is not altcoin development, it's an effort to understand Bitcoin's code in more detail. Please stop begging the question. Also please consider downvoting only questions which are truly useless instead of those you just don't like. Thanks!