If I had time I would read the source code, but could someone tell me a human readable version of it?
In shortest / simplest, just to illustrate the principle (may not be 100% accurate).
- Take the hash of the last block
- Build a block made of transactions which you collect from the network, while verifying that they're valid. You also include a coinbase transaction to yourself, called block reward. Other miners will include theirs.
- Keep hashing (1. + 2.) until you find a hash satisfying a criteria (usually looking for a hash which has to be larger than the target).
- If you find it first, publish it to the network and claim the reward. Use the new hash and goto 1.
- If someone beat you to it, take his winning hash and goto 1.
This process ensures that we can't change the past of our blockchain without having to redo all the cumulative work done by the miners.
Pooled mining works a bit different, where you submit hashes which satisfy an easier criteria than in 3. as a proof you're mining. For each one submitted, you will get a share of any block found by the pool (even if it's coming from you).
Obviously, the goal of any mining software is to perform as much as possible hashes / s with a given hardware.
Assumption: proof of work mining software for bitcoin / cryptocurrencies
Abbreviated version: The software runs a computer program also known as the proof of work algorithm. You tell the software how to connect to the network (mining pool / wallet / p2pool) so that it knows which computer program variables (transactions, difficulty level, blockchain height, etc) to use and where to submit the work once complete. This happens over and over again in a process known as mining. Each successful proof of work submission and acceptance is known as mining a block.