What is Bitcoin Mining? - We Use Coins Bitcoin Experts Can Help

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 for profit is very competitive and volatility in the Bitcoin price makes it difficult to realize monetary gains without also speculating on the price. Mining makes sense if you plan to do it for fun, to learn or to support the security of Bitcoin and do not care if you make a profit. If you have access to large amounts of cheap electricity and the ability to manage a large installation and business, you can mine 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.

What is Bitcoin mining?

Bitcoin mining is a lot like a giant lottery where you compete with your mining hardware with everyone on the network to earn bitcoins. Faster Bitcoin mining hardware is able to attempt more tries per second to win this lottery while the Bitcoin network itself adjusts roughly every two weeks to keep the rate of finding a winning block hash to every ten minutes. In the big picture, Bitcoin mining secures transactions that are recorded in Bitcon's public ledger, the block chain. By conducting a random lottery where electricity and specialized equipment are the price of admission, the cost to disrupt the Bitcoin network scales with the amount of hashing power that is being spent by all mining participants.

Technical Background

During mining, your Bitcoin mining hardware runs a cryptographic hashing function (two rounds of SHA256) on what is called a block header. For each new hash that is tried, 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 something like this:

93ef6f358fbb998c60802496863052290d4c63735b7fe5bdaac821de96a53a9a

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.) To ensure that blocks are found roughly every ten minutes, 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.:

0787a6fd6e0782f7f8058fbef45f5c17fe89086ad4e78a1520d06505acb4522f

If we lower the target to

0100000000000000000000000000000000000000000000000000000000000000

we now need two zeros in the beginning to be under it:

00db27957bd0ba06a5af9e6c81226d74312a7028cf9a08fa125e49f15cae4979

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 Nakamoto had to do generating the first block. To be fair, back then mining hardware and algorithms were a lot slower and less optimized.

To keep blocks coming roughly every 10 minutes, the difficulty is adjusted using a shared formula 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.

Bitcoin Mining Hardware

CPU

In the beginning, mining with a CPU was the only way to mine bitcoins and was done using the original Satoshi client. In the quest to further secure the network and earn more bitcoins, miners innovated on many fronts and for years now, CPU mining has been relatively futile. You might mine for decades using your laptop without earning a single coin.

GPU

About a year and a half after the network started, it was discovered that high end graphics cards were much more efficient at bitcoin mining and the landscape changed. CPU bitcoin mining gave way to the GPU (Graphical Processing Unit). The massively parallel nature of some GPUs allowed for a 50x to 100x increase in bitcoin mining power while using far less power per unit of work.

While any modern GPU can be used to mine, the AMD line of GPU 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 choice at the time.

FPGA

As with the CPU to GPU transition, the bitcoin mining world progressed up the technology food chain to the Field Programmable Gate Array. With the successful launch of the Butterfly Labs FPGA 'Single', the bitcoin mining hardware landscape gave way to specially manufactured hardware dedicated to mining bitcoins.

While the FPGAs didn't enjoy a 50x - 100x increase in mining speed as was seen with the transition from CPUs to GPUs, they provided a benefit through power efficiency and ease of use. A typical 600 MH/s graphics card consumed upwards of 400w of power, whereas a typical FPGA mining device would provide a hashrate of 826 MH/s at 80w of power.

That 5x improvement allowed the first large bitcoin mining farms to be constructed at an operational profit. The bitcoin mining industry was born.

ASIC

The bitcoin mining world is now solidly in 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 cannot 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.

Unlike all the previous generations of hardware preceding ASIC, ASIC may be the "end of the line" when it comes to disruptive mining 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 to 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 efficient 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 efficient the mining device, the more profitable it is.

Bitcoin Mining Software

There are two basic ways to mine: On your own or as part of a Bitcoin mining pool. Almost all miners choose to mine in a pool because it smooths out the luck inherent in the Bitcoin mining process. Before you join a pool, make sure you have a bitcoin wallet so you have a place to store your bitcoins. Next you will need to join a mining pool and set your miner(s) to connect to that pool. With pool mining, the profit from each block any pool member generates is divided up among the members of the pool according to the amount of hashes they contributed.

This gives the pool members a more frequent, steady payout (this is called reducing your variance), but your payout(s) can be decreased by whatever fee the pool might charge. 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 if you're using a zero fee pool in the long-term.

Thanks

Blitzboom and the guys from #bitcoin-dev for their help with writing the guide!