There has been a lot of noise recently about Bitcoins especially given the way the “markets” (http://bitcoincharts.com/markets/) have reacted over the last few months. The value of a Bitcoin (BTC) is shown on the right in USD:
I am not going to get into the detail here as there are plenty of other articles out there both on how Bitcoins work and also on Bitcoin Mining. A good starting point for further research is here: https://en.bitcoin.it/wiki/Main_Page
One key to the Bitcoin currency is the limited and predictable rate at which coins are added to the system. This control is achieved by tying the generation of one block of Bitcoins to the solving of a computationally difficult problem: solve the problem, get a block of Bitcoins. Generating (solving) a block results in a reward which is currently 50 Bitcoins (BTC).
The distributed Bitcoin network adjusts the difficulty of this problem after every 2016 blocks of Bitcoins are generated. The difficulty is adjusted so that on average, 6 blocks are generated every hour by users around the world. The incentive to devoting your computer’s power and time to solving the difficult computational problem is that the user whose computer solves the problem (e.g. block get accepted by the network) gets awarded that block and the 50 BTC reward.
Mining Bitcoins is equivalent to finding a number that hashes (using SHA-256) to a value that is less than a particular 256-bit target. The target is a 256-bit number (extremely large) that all Bitcoin clients share. The SHA-256 hash of a block’s header must be lower than or equal to the current target for the block to be accepted by the network. The lower the target, the more difficult it is to generate a block.
Adjusting that target value is how the distributed Bitcoin network adjusts the difficulty of block generation. Moving the target lower makes for a more difficult computational problem: it will take more random tries to find a value whose hash is less than the target.
Each hash basically gives you a random number between 0 and the maximum value of a 256-bit number (which is huge). If your hash is below the target, then you win. If not, you increment the nonce (completely changing the hash) and try again.
Every 210,000 blocks, the Bitcoin reward per block is cut in half. Right now, the payout is 50 BTC per block. Sometime soon, the payout will halve to 25 BTC per block:
Because nodes have no obligation to include transactions in the blocks they generate, Bitcoin senders may voluntarily pay a transaction fee. Doing so will speed up the transaction and provide incentive for users to run nodes, especially as the reward per block amount decreases over time. Nodes collect the transaction fees associated with all transactions included in blocks they solve.
My Mining Experiences!
OK, so it sounds easy enough but how long will it take me to generate a block? There is a calculator here:
The diagram below shows an estimate of the amount of time, on average, that you will need to do mining at the specified hash rate before you will generate a block (and earn 50 BTC):
Mmmm … seems like a long time.
However, it is important to realise that block generation is not a long, set problem (like doing a million hashes), but more like a lottery. There’s no such thing as being 1% towards solving a block. You don’t make progress towards solving it. After working on it for 24 hours, your chances of solving it are equal to what your chances were at the start or at any moment.
With this in mind I started mining (just in case I got lucky). Remember 1 block currently gets a 50 BTC reward which (at the time I started) could be worth 50 x $30 = $1500!
On my Windows workstation I get 1.3 Mhash/s e.g. I generate 1.3 million hash attempts per second trying to solve the current target and get a block accepted by the network. On my MacBook Pro I get 8.0 Mhash/s. There is a difference between the two: one uses CPU hashing and the other uses GPU (graphics card) hashing but I won’t bore you with the details here.
Straight away I struck fool’s gold!
I checked the debug log for my Bitcoin client and there is no mention of “generated” (which there should be). DiabloMiner on my MacBook equally has not produced anything so far (which is to be expected). Mining in a pool has resulted in 47 shares (shares of a block reward) worth 0.004 BTC!
I will keep running for a bit longer and see what happens. In the meantime if you want to donate some coins to me my address is: 1L5GQ6JiUkSeLBgsdoy9e9wGKqbvn2mgUH
PS: There is a much wider discussion to be had here about the rise of Crypto Currencies in terms of money laundering and illegal activities – see here:
All of this will have an effect on the “markets” (http://bitcoincharts.com/markets/) which is what really interests me.