Intro to hardware mining

Bitcoin mining can be an interesting experience, but sadly it seems that small at home hobbyists are being outcompeted by large mining farms. Two major issues facing those wishing to mine at home is the cost of electricity and getting equipment in on time. Many of the large farms make their own equipment, which gives them another advantage because purchases from ASIC (application specific integrated circuit) producers typically have long lead times. These ASICS are computers that do one thing and one thing only: run the hash algorithm.

Mining today is dominated by these ASICS. Speed is shown in "hashes per second." Many miners today generally operate in the terahash range, with large farms operating in the petahash range. For comparison, the speed of the entire bitcoin network at the time of writing was 413.916 petahashes. You can see a more current chart here. The total mining speed of the network influences the difficulty of the blocks every 14 days. The network attempts to compensate for the amount of processing power bitcoin has access to by making it harder or easier, trying to keep the average time to find a block at about 10 minutes. So as the global bitcoin hashing power increases, the difficulty increases, which means earnings for the same hashing power generally decline over time.

Mining pools

About every 10 minutes a new block is sent out into the network, and the entire network enters what is essentially a big lottery. Mining pools were created to make payouts more predictable. Miners combine their hashing power under a pool, which has enough hashing power to win the lottery on a more consistent basis than mining alone. A pool that has 15% of the networks hashing power should win 15% of the time. The pool then divides up the earnings from the block among individual miners based on their contribution, and there are many different ways to do this. Click here for more information on different payout systems.

Most methods are pretty fair, and in the long run all pools will theoretically pay out about the same if given enough time. The things to look out for are pool fees and whether or not they pay transaction fees. Transaction fees vary by block, and are the culmination of all of the fees that took place when that block was created. However, be aware that not all pools are trustworthy. For example, I used Ghash.io for some time and for some reason the payouts didn't seem to compare to other pools I had used. I've never had any issues with Slush's pool or Antpool, and the average payout per day is what it should be. 

However I would highly recommend Kano CK pool (Kano.is). Primarily I distrust large mining pools based in China, and Kano is designed by a Bitcoin Core coder to be highly efficient at gathering transactions into the block. In effect the blocks are nearly always full to the 1 MB capacity, ensuring a large amount of fees. Recently this equates to about 20% more revenue than a pool that does not distribute fees. Additionally, it has a fair and regular payment system, small 0.9% fee, and tends to have high luck, for whatever reason, averaging about 5% above normal.

Variance and luck

These are two terms I've seen people struggle with, so I'll try to set the record straight as I understand it. Variance becomes more evident with smaller pools. Imagine that you are solo mining with a single AntMiner S9, with 13TH. It would take about 700 days to find one block at the current difficulty! For most people, thats too much of a gamble. The reward would be pretty significant, but is it worth the wait? Small pools have much more variance than large pools, so payouts will be very inconstant. Some small pools may go days before finding a block. Keep in mind that in these smaller pools, your share of the hashing power will be greater, so you will have a larger reward. So in the end, you will make the same amount of money mining for a small pool or a large pool. Large pools offer the benefit of consistent payouts, as well as the benefit of mining more blocks under the current difficulty.

Luck is really just that. Pools average out the normal amount of time it takes for them to find a block, and compares that to the amount of time it just took to find a block. So a pool that struck a block much quicker than usual may display a luck value of 500%, whereas 100% would be average, and 20% would be a bad day. There are two important points I want you to take away from this though. First, luck only tells you what happened, and it in no way gives you information for the future luck of the pool. Every new block the bitcoin network throws out to the pools is a completely new and separate occurrence. Think of every new block like a dice role. Second, over a long period of time, the luck of a pool will be 100%. Pools with less variance will balance much quicker than smaller pools. 

In most cases, having patience is the best thing to do. Some pools are small enough that they may be able to function for free, or for a very nominal fee. The trade off is that it could be days between blocks. These pools can save you some minor costs imposed by larger pools, but the scale is different, so the time it takes for these pools to "balance out" is typically seen in months instead of days.

In either case, pool hopping doesn't do you any favors. Your best bet is to find a pool that your happy with, in terms of variance, fees, trustworthiness, and payouts, and stick with them. 

Setting up and using a pool

There are many mining pools out there, and doing a quick search will lead you to plenty of good options. Personally, I like to use Kano’s pool. It’s a trustworthy pool thats been running for a long time, but be advised that it will take about 4 days of mining on their pool to receive the full reward multiplier, it’s part of how their PPLNS (Pay Per Last N Shares) payment method works.

After selecting a mining pool, many, but not all, will require you to create an account. From here, its as easy as locating their servers and finding an appropriate worker name and password. Nearly all pools use the stratum protocol, and the server address will appear like this: 

stratum+tcp://stratum.antpool.com:3333

Note that the server address may be displayed as just stratum.antpool.com:433. or as stratum.antpool.com port 433. If the information is given like this, then the stratum+tcp:// will need to be added to the beginning, then the url, then a colon followed by the port number.

Next is the worker name. Usually, after creating an account, the format is:

Username.Workername

This is normally the case, but some pools like to work anonymously, so the worker name would just be your wallet address. These pools often don't require that you make an account, as the payouts are just sent directly to the address. An example of this is P2Pool. I'm noting here that I would not recommend using P2Pool at the moment on my rig, because there is not a close enough server to run off of yet. Ping is very important with P2Pool, although I'm looking into offering a local server if there is demand for that. When using these pools, your wallet address can typically be seen easily, so be mindful of the address you use.

About passwords. Personally, I've never encountered a pool that actually requires one, although small private pools probably do. The thing is, if someone stole your password, they would simply be mining for you. In most cases, simply using "x" or "123" is completely fine.

Lastly, I wanted to say that pools can and have been hacked. So just stay on the safe side. When using a mining pool, always send payouts to a hot wallet. Additionally, it's good to invest in some sort of cold storage option, and avoid using "micro" payments of less then 15-20 mBTC to your cold wallet to avoid a large amount of costly “input” transactions when moving to another address. Learn more about that here.