I am a researcher looking for an accurate number of active mining nodes in the Ethereum network. Do any of you know where I can find this information? I have valid sources for hashrate and the number of nodes running each client. What I cannot find is a reliable number for the active mining nodes within the network. Please help.
2 Answers
I assume by "mining node", you mean a computer that is mining rigs are pointed to for mining (as opposed to "mining node" meaning "mining rig").
A mining node is pretty much indistinguishable from any other node, except that it is occasionally is the first to broadcast a new block solution. Unless you can isolate which node was the first to send the broadcast, you can't tell which ones are connected to a miner.
One proxy might be using etherbases to count nodes. However, it's not a 1 to 1 mapping. Some miners might change their etherbases or mine to multiple ones (a large miner might wish to hide earnings by only mining one block per etherbase). Also, multiple nodes may share the same etherbase (e.g., a mining pool that has nodes in different regions).
Furthermore, we expect there to be a long tail of slow miners: many miners lack the capacity of a pool and only occasionally contribute a block. This throws at least two wrenches into our ability to estimate the number of mining nodes. The first is that if you using the proxy method described above, you'd see only a few addresses appear over and over again. But these are vastly outnumbered by addresses you will only see once. This means that your estimate could be several multiples, if not orders of magnitude, off from the true number.
The second, perhaps larger (but we can't know! both are big!), problem introduced by the long tail of slow miners is that you have no idea when a node is active. Suppose someone is mining ethereum on the main chain with 1 GH/s. The expected time to find a block is around 50 days. So, even if you saw this node connected to the network and could monitor all network traffic simultaneously, you would expect to wait 50 days before seeing the first indication that the node is being used for mining. And after that, the person may keep running the node and may have switched to a pool. But even if you waited half a year and saw no new blocks broadcast from the node, there's still a 5% chance the node is being used for mining (based on the Poisson distribution).
As a result, you can't determine the number of mining nodes on the network, even if you had perfect knowledge of all the traffic on the network. If you consider an active mining node to be one which miners have used within the last 24 hours, you could only reliably detect nodes with more than an average of 200 GH/s (at current difficulty). There are only about 30 etherbases that satisfy this metric (if we assume one etherbase per mining node). Based on older numbers from etherscan, when, maybe, 100 etherbases mined a block per day, there were thousands of other etherbases that had mined at least one block in the past week putting the tail at potentially more than an order of magnitude larger than the most reliably available data.
-
Great explanation, thank you for that. I will most likely have to tweak my model to consider total network hash rate, given the potential problems you mentioned when looking only at etherbases.– caslutzSep 26, 2017 at 20:28
If for nodes you mean Ethereum nodes, you can't monitor this behaviour because you don't need to be a node to be a miner.
There are many users forming mining pools and there are data centers dedicated to mining. Only the client that orchestrate the mining and submit the block need to be an Ethereum node, but not the other computers.
You can count unique account addresses that receive block rewards, but still you can't say if those addresses are owned by a single person or one thousands people.
What is reliable at most is the hashing power, because it represent how much power is spent in the blockchain.