What is Bitcoin Mining?
Video courtesy of www.bitcoinmining.com
Before we begin...
Before you read further, please understand that most bitcoin users don't mine! Bitcoin mining is a business and very competitive one. Mining only makes sense if you plan to do it for fun and thus don't care if you make a profit, or if you can do it very efficiently and for a profit.
If you want to get Bitcoins based on a fixed amount of mining power, but you don't want to run the actual hardware yourself, you can purchase a mining contract .
Technical Background more »
During mining, your computer runs a cryptographic hashing function (two rounds of SHA256) on what is called a block header. For each new hash, the mining software will use a different number as the random element of the block header, this number is called the nonce. Depending on the nonce and what else is in the block the hashing function will yield a hash which looks like this:
You can look at this hash as a really long number. (It's a hexadecimal number, meaning the letters A-F are the digits 10-15.) Now to make mining difficult, there is what's called a difficulty target. To create a valid block your miner has to find a hash that is below the difficulty target. So if for example the difficulty target is 1000000000000000000000000000000000000000000000000000000000000000, any number that starts with a zero would be below the target, e.g.:
If we lower the target to 0100000000000000000000000000000000000000000000000000000000000000, we now need two zeros in the beginning to be under it:
Because the target is such an unwieldy number with tons of digits, people generally use a simpler number to express the current target. This number is called the mining difficulty. The mining difficulty expresses how much harder the current block is to generate compared to the first block. So a difficulty of 70000 means to generate the current block you have to do 70000 times more work than Satoshi had to do generating the first block. Though be fair though, back then mining was a lot slower and less optimized.
The difficulty changes every 2016 blocks. The network tries to change it such that 2016 blocks at the current global network processing power take about 14 days. That's why, when the network power rises, the difficulty rises as well.
In the beginning, mining with a CPU was the only way to mine bitcoins. This eventually gave way to mining on graphics cards (GPU) due to the fact that the massively parrallel nature of some GPUs allowed for a 50x to 100x increase in minging power while using less power usage per megahash compared to a CPU.
While any modern GPU can be used to mine, the AMD line of GPUs architecture turned out to be far superior to the nVidia architecture for mining bitcoins and the ATI Radeon HD 5870 turned out to be the most cost effective at the time.
For an extensive list of graphics cards and their performance in Bitcoin mining, see the Bitcoin Wiki: Mining hardware comparison
As with the CPU to GPU transition, the bitcoin mining world has progressed to using Field Programmable Gate Arrays (FPGA) as the primary mining hardware platform. While FPGAs do not enjoy a 50x - 100x increase in mining speed as was seen with the transition from CPUs to GPUs, they provide a benefit through power efficiency. A typical 600 MH/s graphics card will consume upwards of 400w of power, whereas a typical FPGA mining device will provide a hashrate of 826 MH/s at 80w of power, a 5x improvement in power efficiency. Power efficiency can make or break the profitiability of mining, so it was an important step to move from GPUs to FPGAs for many people.
The bitcoin mining world is now moving into the Application Specific Integrated Circuit (ASIC) era. An ASIC is a chip designed specifically to do one thing and one thing only. Unlike FPGAs an ASIC can not be repurposed to perform other tasks. An ASIC designed to mine bitcoins can only mine bitcoins and will only ever mine bitcoins. The inflexibility of an ASIC is offset by the fact that it offers a 100x increase in hashing power while reducing power consumption compared to all the previous technologies. For example an entry level mining device from Butterfly Labs provides 60 GH/s (1 Gigahash is 1000 Megahash. 1 GH/s = 1000 MH/s) while consuming 60w of power. Compared to the GPU era, this is a 100x increase in hashrate while reducing power consumption by a factor of 7.
Unlike all the previous generations of hardware preceding ASIC, ASIC is the "end of the line" when it comes to disruptive technology. CPUs were replaced by GPUs which were in turn replaced by FPGAs which were replaced by ASICs. There is nothing to replace ASICs now or even in the immediate future. There will be stepwise refinement of the ASIC products and increases in efficiency, but nothing will offer the 50x - 100x increase in hashing power or 7x reduction in power usage that moves from previous technologies offered. This makes power consumption on an ASIC device the single most important factor of any ASIC product, as the expected useful lifetime of an ASIC mining device is longer than the entire history of bitcoin mining. It is conceivable that an ASIC device purchased today would still be mining in two years if the device is power effecient enough and the cost of electricity does not exceed it's output. Mining profitability is also dictated by the exchange rate, but under all circumstances the more power effecient the mining device, the more profitable it is.
There are two basic ways to mine: On your own or as part of a pool. If you're mining on your own you need to start by setting up your Bitcoin client and set it up for JSON-RPC (see: Running Bitcoin). The other option is to join a mining pool. There are several pools to choose from. With a pool, the profit from any block a member generates is divided up among the members of the pool. The benefit of joining a pool is that you will receive a more frequent, steady payout (this is called reducing your variance), but your payout(s) will be less. Ultimately, you will earn the same either way. Solo mining will give you large, infrequent payouts and pooled mining will give you small, frequent payouts, but both add up to the same amount.
Once you have your client set up or you have registered with a pool, the next step is to set up the actual miner. The most popular GPU/FPGA/ASIC miner at the moment is CGminer or a derivative designed specifically for FPGA and ASICs, BFGMiner.
If you want a quick taste of mining without installing any software, try Bitcoin Plus, a browser-based CPU Bitcoin miner. As a CPU miner it's not cost-efficient for serious mining, but it does illustrate the principle of pooled mining very well.
Blitzboom and the guys from #bitcoin-dev for their help with writing the guide!