user3029: As with mining, what are the bitcoin miners really solving? I read they are solving hashes, but what does that really mean. Can we see what they are solving? Can someone give an example of what a bitcoin mining machine sees to solve?

user153: Mining provides a way to reach consensus on what the transaction ledger should look like and know that nobody is cheating.
That's the non-technical definition of mining.

What exactly is Mining?

The "authority" for double spending is the blockchain.  The blockchain consists of the history of all blocks in the blockchain plus the next block of transactions.  The reward subsidy currently is 25 BTC to the party that submits the next block.  But hey ...you would like that 25 BTC (worth currently about $825) as would I as would everyone else.  So how do you make it so that I can't cheat and claim the block myself?  
Well, you put in a system that you and I have to compete.  That's what the proof of work does -- it makes it so that when I claim the reward it is easy to prove that I really did the work involved.  So for me to have a 2% chance of solving a block I need to put in 2% of of the mining work.  There's no way for me to put in less than 2% of all the work and still solve blocks at least 2% of the time (on average).
Thus as a result, when a transaction block is submitted, all the peers verify that there were no double spends, that the right amount of subsidy was claimed, and that the submitter truly expended the work necessary for that solution.  With those three rules, then there doesn't not need to be a central authority managing the process or able to control the outcome.

user909: They try to find a random nonce (a little random data) that goes into a block and makes the block have a (SHA256) hash that (in binary) starts with a certain amount of 0's. The more zeroes the more rare hash is. A good hash' outcome is not predictable, and so you have to try a lot of times to find a good nonce.
The amount of zeroes are based on how difficult it is supposed to be to find a block. In Bitcoin it adjusts to have a new block every 10 minutes (on average, given the rate at which previous blocks are found).
Interesting: because the hashes are unpredictable it doesn't matter how the nonce changes! Most of the time it's just a number counting upwards from 0!

user1878: The following is a description of the global, statistical gamble which is played every 10 or so minutes.  The interval of the game is controlled by the difficulty which says how many "hashes" are needed per interval. 
In other words, the difficulty and target define the "odds of the house" against your chance of getting a winning SHA hash.  The nonce is the "scratch off" area.  
Each hash consumes electricity, and emits heat, which requires additional cooling. 
This is what is done with each hash:
Step 1
At a high level, the miner software takes a list of active transactions, and then groups them together in something called a "block". 
Or more accurately stated: The miner software coverts all the transactions into a summary view called a  "merkle root", and hashes it, which is representative of the transactions.
Step 2
Then mining software converts this to into a binary format called a Block Header, which also references the previous blocks (also called a chain).
Field           Purpose                          Updated when...               Size (Bytes)
Version         Block version number             You upgrade the software and   4
                                                 it specifies a new version 

hashPrevBlock   256-bit hash of the previous     A new block comes in          32
                block header    
hashMerkleRoot  256-bit hash based on all        A transaction is accepted     32
                the transactions in the block       

Time            Current timestamp as seconds     Every few seconds              4
                since 1970-01-01T00:00 UTC  

Bits            Current target in compact format   The difficulty is adjusted   4

Nonce           32-bit number (starts at 0)       A hash is tried (increments)  4

Step 3:
The miner hardware changes a small portion of this block called a "nonce".
Step 4:
The block header is hashed and compared to the Target as if it were simply a large number like 10,000,000 > 7,000,000  (the real numbers are much bigger, and in hex).  The target is compressed and stored in each block in a field called bits.
An expanded target looks like this:
  Target   0000000000000083ef00000000000000000000000000000000000000000000000

And the goal is to make sure the SHA256 hash of the block is less than this value.  In the example below "83ee" is smaller than "83ef"
To simplify this concept, you can ballpark the target by counting the leading zeros (as the other answer here explains).  Here is an example:
Here is a sample block with transactions you can view on BlockChain.info. Look in the upper right hand corner of the webpage for this hash:
   Hash 0000000000000083ee9371ddff055eed7f02348e4eda36c741a2fc62c85bc5cf

That previous hash was from today and has 14 leading zeroes.  Let's compare that to what was needed 3 years ago with block 100 which has 8 leading zeros.  
   Hash 00000000a8ed5e960dccdf309f2ee2132badcc9247755c32a4b7081422d51899

Summary
So at the end of the day, all a miner does is:

Take a block header as input
Change the Nonce
Test if the Block Header hash is less than the Target.  If it is, you win.
Go to step 2  (or go to step 1 if someone else won the block)

Want to see what Bitcoin-QT does when it finds a block?... I posted it here.. The information in this post will help you understand what happened.

user132: Here is an extremely simplified sketch of the problem, but it should give a pretty good idea of what the problem is.
The data:
This is the hash of the lastest block (shortened to 30 characters): 
00000000000001adf44c7d69767585

These are the hashes of a few valid transactions waiting for inclusion (shortened).
5572eca4dd4
db7d0c0b845

And this the hash of one special transaction that you just crafted, which gives 25BTC (the current reward) to yourself:
916d849af76

Building the next block:
Now, let's use a gross approximation of what a new block might look like (the real one uses binary format). It contains the hash of the previous block and the hashes of those 3 transactions:
00000000000001adf44c7d69767585--5572eca4dd4-db7d0c0b845-916d849af76--

Now let's do mining by hand! Our goal is to complete this block with a nonce (a piece of garbage) such that the hash of the new block starts with 13 zeros (considering the previous hash, it seems that 13 zeroes is the current difficulty!).
Mining (trying to finalize this block):
Let's try with nonce=1, and compute the hash of the block (I'm using the md5 hash algorithm, but Bitcoin uses double sha256):
> echo "00000000000001adf44c7d69767585--5572eca4dd4-db7d0c0b845-916d849af76--1" | md5sum 
8b9b994dcf57f8f90194d82e234b72ac

No luck, the hash does not start with a 0… Let's try with nonce=2
> echo "00000000000001adf44c7d69767585--5572eca4dd4-db7d0c0b845-916d849af76--2" | md5sum 
5b7ce5bcc07a2822f227fcae7792fd90

No luck…
…
If we pursue until nonce=16, we get our first leading zero.
> echo "00000000000001adf44c7d69767585--5572eca4dd4-db7d0c0b845-916d849af76--16" | md5sum 
03b80c7a34b060b33dd8fbbece79cee3

For nonce=208, we get two leading zeroes!
> echo "00000000000001adf44c7d69767585--5572eca4dd4-db7d0c0b845-916d849af76--208" | md5sum 
0055e55df5758517c9bed0981b52ce4a

Continue like this… If you finally find a hash that has 13 leading zeroes… you're a winner! Other miners will now build upon your block, you've just got 25BTC.
But you'll have to be fast!
Back to step 1…
If someone manages to build a block before you do, you'll have to start again from the beginning with the new block's hash (the one of the winner).

3029: <p>As with mining, what are the bitcoin miners really solving? I read they are solving hashes, but what does that really mean. Can we see what they are solving? Can someone give an example of what a bitcoin mining machine sees to solve?</p>
 153: <p>Mining provides a way to reach consensus on what the transaction ledger should look like and know that nobody is cheating.</p>

<p>That's the non-technical definition of mining.</p>

<ul>
<li><a href="https://bitcoin.stackexchange.com/q/148/153">What exactly is Mining?</a></li>
</ul>

<p>The "authority" for double spending is the blockchain.  The blockchain consists of the history of all blocks in the blockchain plus the next block of transactions.  The reward subsidy currently is 25 BTC to the party that submits the next block.  But hey ...you would like that 25 BTC (worth currently about $825) as would I as would everyone else.  So how do you make it so that I can't cheat and claim the block myself?  </p>

<p>Well, you put in a system that you and I have to compete.  That's what the proof of work does -- it makes it so that when I claim the reward it is easy to prove that I really did the work involved.  So for me to have a 2% chance of solving a block I need to put in 2% of of the mining work.  There's no way for me to put in less than 2% of all the work and still solve blocks at least 2% of the time (on average).</p>

<p>Thus as a result, when a transaction block is submitted, all the peers verify that there were no double spends, that the right amount of subsidy was claimed, and that the submitter truly expended the work necessary for that solution.  With those three rules, then there doesn't not need to be a central authority managing the process or able to control the outcome.</p>
 909: <p>They try to find a random nonce (a little random data) that goes into a block and makes the block have a (SHA256) hash that (in binary) starts with a certain amount of 0's. The more zeroes the more rare hash is. A good hash' outcome is not predictable, and so you have to try a lot of times to find a good nonce.</p>

<p>The amount of zeroes are based on how difficult it is supposed to be to find a block. In Bitcoin it adjusts to have a new block every 10 minutes (on average, given the rate at which previous blocks are found).</p>

<p>Interesting: because the hashes are unpredictable it doesn't matter how the nonce changes! Most of the time it's just a number counting upwards from 0!</p>
 1878: <p>The following is a description of the global, statistical gamble which is played every 10 or so minutes.  The interval of the game is controlled by the <a href="https://bitcoinwisdom.com/bitcoin/difficulty" rel="noreferrer">difficulty</a> which says how many "hashes" are needed per interval. </p>

<p>In other words, the <code>difficulty</code> and <code>target</code> define the "odds of the house" against your chance of getting a winning SHA hash.  The <code>nonce</code> is the "scratch off" area.  </p>

<p>Each hash consumes electricity, and emits heat, which requires additional cooling. </p>

<p>This is what is done with each hash:</p>

<p><strong>Step 1</strong></p>

<p>At a high level, the miner software takes a list of active transactions, and then groups them together in something called a "block". </p>

<p><em>Or more accurately stated:</em> The miner software coverts all the transactions into a summary view called a  "merkle root", and hashes it, which is representative of the transactions.</p>

<p><strong>Step 2</strong></p>

<p>Then mining software converts this to into a binary format called a <a href="https://en.bitcoin.it/wiki/Block_hashing_algorithm" rel="noreferrer">Block Header</a>, which also references the previous blocks (also called a chain).</p>

<pre><code>Field           Purpose                          Updated when...               Size (Bytes)
Version         Block version number             You upgrade the software and   4
                                                 it specifies a new version 

hashPrevBlock   256-bit hash of the previous     A new block comes in          32
                block header    
hashMerkleRoot  256-bit hash based on all        A transaction is accepted     32
                the transactions in the block       

Time            Current timestamp as seconds     Every few seconds              4
                since 1970-01-01T00:00 UTC  

Bits            Current target in compact format   The difficulty is adjusted   4

Nonce           32-bit number (starts at 0)       A hash is tried (increments)  4
</code></pre>

<p><strong>Step 3:</strong></p>

<p>The miner hardware changes a small portion of this block called a "nonce".</p>

<p><strong>Step 4:</strong></p>

<p>The block header <a href="https://www.youtube.com/watch?v=S9JGmA5_unY" rel="noreferrer">is hashed</a> and <a href="https://en.bitcoin.it/wiki/Target" rel="noreferrer">compared to the Target</a> as if it were simply a large number like 10,000,000 > 7,000,000  (the real numbers are much bigger, and in hex).  The target is compressed and stored in each block in a field called bits.</p>

<p>An expanded target looks like this:</p>

<pre><code>  Target   0000000000000083ef00000000000000000000000000000000000000000000000
</code></pre>

<p>And the goal is to make sure the <a href="https://www.youtube.com/watch?v=S9JGmA5_unY" rel="noreferrer">SHA256 hash</a> of the block is <em>less than</em> this value.  In the example below "<code>83ee</code>" is smaller than "<code>83ef</code>"</p>

<p>To simplify this concept, you can ballpark the target by counting the leading zeros (as the other answer here explains).  Here is an example:</p>

<p><a href="http://blockchain.info/block-index/353394/0000000000000083ee9371ddff055eed7f02348e4eda36c741a2fc62c85bc5cf" rel="noreferrer">Here is a sample block with transactions you can view on BlockChain.info.</a> Look in the upper right hand corner of the webpage for this hash:</p>

<pre><code>   Hash 0000000000000083ee9371ddff055eed7f02348e4eda36c741a2fc62c85bc5cf
</code></pre>

<p>That previous hash was from today and has 14 leading zeroes.  Let's compare that to what was needed 3 years ago with <a href="http://blockchain.info/block-index/100" rel="noreferrer">block 100</a> which has 8 leading zeros.  </p>

<pre><code>   Hash 00000000a8ed5e960dccdf309f2ee2132badcc9247755c32a4b7081422d51899
</code></pre>

<p><strong>Summary</strong></p>

<p>So at the end of the day, all a miner does is:</p>

<ol>
<li>Take a block header as input</li>
<li>Change the Nonce</li>
<li>Test if the Block Header <a href="https://www.youtube.com/watch?v=S9JGmA5_unY" rel="noreferrer">hash</a> is less than the Target.  If it is, you win.</li>
<li>Go to step 2  (or go to step 1 if someone else won the block)</li>
</ol>

<p>Want to see what Bitcoin-QT does when it finds a block?... <a href="https://bitcoin.stackexchange.com/a/5782/1878">I posted it here.</a>. The information in this post will help you understand what happened.</p>
 132: <p>Here is an <em>extremely</em> simplified sketch of the problem, but it should give a pretty good idea of what the problem is.</p>

<p><strong>The data:</strong></p>

<p>This is the hash of the lastest block (shortened to 30 characters): </p>

<pre><code>00000000000001adf44c7d69767585
</code></pre>

<p>These are the hashes of a few valid transactions waiting for inclusion (shortened).</p>

<pre><code>5572eca4dd4
db7d0c0b845
</code></pre>

<p>And this the hash of one special transaction that you just crafted, which gives 25BTC (the current reward) to yourself:</p>

<pre><code>916d849af76
</code></pre>

<p><strong>Building the next block:</strong></p>

<p>Now, let's use a gross approximation of what a new block might look like (the real one uses binary format). It contains the hash of the previous block and the hashes of those 3 transactions:</p>

<pre><code>00000000000001adf44c7d69767585--5572eca4dd4-db7d0c0b845-916d849af76--
</code></pre>

<p>Now let's do mining by hand! Our goal is to complete this block with a nonce (a piece of garbage) such that the hash of the new block starts with 13 zeros (considering the previous hash, it seems that 13 zeroes is the current difficulty!).</p>

<p><strong>Mining (trying to finalize this block):</strong></p>

<p>Let's try with nonce=1, and compute the hash of the block (I'm using the md5 hash algorithm, but Bitcoin uses double sha256):</p>

<pre><code>&gt; echo "00000000000001adf44c7d69767585--5572eca4dd4-db7d0c0b845-916d849af76--1" | md5sum 
8b9b994dcf57f8f90194d82e234b72ac
</code></pre>

<p>No luck, the hash does not start with a 0… Let's try with nonce=2</p>

<pre><code>&gt; echo "00000000000001adf44c7d69767585--5572eca4dd4-db7d0c0b845-916d849af76--2" | md5sum 
5b7ce5bcc07a2822f227fcae7792fd90
</code></pre>

<p>No luck…</p>

<p>…</p>

<p>If we pursue until nonce=16, we get our first leading zero.</p>

<pre><code>&gt; echo "00000000000001adf44c7d69767585--5572eca4dd4-db7d0c0b845-916d849af76--16" | md5sum 
03b80c7a34b060b33dd8fbbece79cee3
</code></pre>

<p>For nonce=208, we get two leading zeroes!</p>

<pre><code>&gt; echo "00000000000001adf44c7d69767585--5572eca4dd4-db7d0c0b845-916d849af76--208" | md5sum 
0055e55df5758517c9bed0981b52ce4a
</code></pre>

<p>Continue like this… If you finally find a hash that has 13 leading zeroes… you're a winner! Other miners will now build upon your block, you've just got 25BTC.</p>

<p>But you'll have to be fast!</p>

<p><strong>Back to step 1…</strong></p>

<p>If someone manages to build a block before you do, you'll have to start again from the beginning with the new block's hash (the one of the winner).</p>
