Here is a question: Imagine you have three Ethereum miners, and a group of users broadcasting transactions.

Miner A can do 400 megahashs a second (MH/S) and has a latency of .1 seconds to the the users, Miner B can do 700 MH/S and has a latency of 3 seconds, and Miner C that can produce 1,100 MH/S and has a latency of 9 seconds.

Which farm will most likely mine the transactions first? (answer at bottom)

The most important part to understanding cryptocurrency mining is that every hash operation is just as likely to be the correct answer to a block as any other. Don’t think of mining as building a complex structure, but rather trying so many possible solutions that one is bound to be the right one to claim the block reward. Law of large numbers states, the more hashes you can do in a given time, the more likely one will get the reward. Today, you can purchase a bitcoin miner that can do 17 SHA256 terrahashes a second (17 trillion hashes a second) for $500 USD. Performing a many hash operations is very cheap.

The way to view Ethereum mining is as a 15 second race for every block. There are three parts to the race (part 1) The first part is receiving the information about the block. These are the transactions that are broadcasted by users. These go from user’s wallets to a node, and then need to get to a mining pool, who then calculates the block hash and then broadcasts it to actual miners who receive it and can begin work.

Once the mining pool broadcasts the headers that need to be hashed, think of it as a work order, (part 2) individual miners wait to recieve the order to start working. They then try to run as many random hashes as possible to solve the work order. Every millisecond a miner has to wait before they can begin hashing an answer is important, because they are blocked from using their rigs profitably until they get a valid work order. Once one of the miners does find the answer, the race isn’t over yet.

Uncle Block

(part 3) The miner then needs to relay this back to the mining pool node, who then broadcasts it to the network. The pool collects the mining reward, and then the network starts the process again, hashing on top of the previous block. We aren’t done yet. If two mining pools on different sides of the world find a block at around the same time, their conflicting (but both correct) blocks start propagating to nearby miners. If another miner build a block on top of one of these forked chains, that mini-forked chain then becomes legitimate, and other miners abandon the smaller chain because it has less accumulated work. This abandoned, but valid, block is called an Uncle block.

If a mining pool node is not well connected to the network in part 3, even if it has more hashpower, it will be producing too many wasted uncle blocks to be profitable.