Other than the source code, I have not been able to find any mention of how exactly bitcoin generates a sha256 hash? It seems like some simple "How things work" documentation might really help with adoption and understanding? I do know that it is written in the source, but I am awful at reading C++ code?
For instance, I am not even sure exactly what is being hashed? Is it the concatenation of the last winning hash message and a randomly generated message? What are the lengths of each of these messages (I would assume 256)?
Is it like this:
sha256(<256 bit original message> + <256 bit generated message)) ? Then check if it has the correct number of leading zero's?