A curious idea has been put forward by a number Bitcoin users over the last several years. It comes in various guises, but in its simplest form can be stated as: “Only mining nodes contribute to network security.” In other words, non-mining nodes are useless to everyone with the possible exception of their owner. This article examines this idea, and offers a thought experiment to test it.
Coining a Term
Economist Paul Sztorc has coined a term for the idea that generating nodes are somehow special: “Miner Essentialism.” Miner Essentialism matters because some users care deeply about helping the Bitcoin network. If running a non-mining node doesn’t matter to network security, then why bother?
I coin a phrase: "Miner Essentialism" – the fallacy that miners have an "essence" that distinguishes them from non-miners.— Paul Sztorc (@Truthcoin) June 7, 2018
In reality, there are just "successful past miners" and "arbitrarily likely future miners".
See also: https://t.co/Q88g8zPqy3
And: https://t.co/HRq4sKxaG0 https://t.co/vxOWayVRoQ
A Thought Experiment
I’d like to propose a thought experiment to test the idea that mining nodes are somehow special.
Imagine two nodes that your node has connected to. One hashes blocks in an attempt to find a proof-of-work. Let’s call it Blue Sky. The other doesn’t. Let’s call it Green Day. You can only observe Blue Sky and Green Day by sending and receiving messages via the P2P protocol. You can’t peek inside to see what’s happening.
Now, devise an experiment to tell which of the two nodes generates blocks.
Both nodes will announce new blocks generated by other nodes. However, some blocks announced by Blue Sky may be self-generated. Green Day, on the other hand, will only relay blocks that other nodes generated.
Performing the Experiment
We face three problems in carrying out the experiment:
- Generating nodes can vary dramatically in hash rate. Imagine a node’s relative hash rate is low - say 0.1%. We’d only expect about one block per week to be self-generated. Indeed, if the Bitcoin network were truly run by a large group of independent node operators, we’d expect any generating node’s hash rate to be very low. We don’t even know what rate of block generation to expect.
- Relative hash rate only yields a probability of block generation. A node generating one hash per second can mine two blocks in a row. Likewise, a node with majority hash rate can fail to mine a block for a year. These cases are extremely unlikely, but possible. Even if we knew what hash rate to expect, variance could lead to very a different measured hash rate.
- Nothing contained within a block links it to the originating node. It’s true that the coinbase transaction contains a payment to a public key. However, nothing in the P2P protocol allows us to associate that public key with the node that generated it. A link might be established through a side channel such as a website, but that’s outside the scope of the P2P protocol and therefore off-limits to our experiment. So it appears we have no way of knowing for sure which node generated a block.
To solve the third problem, maybe we could connect to every node. If we observed that Blue Sky announced a block before any other network node, that might offer evidence that we had found the miner.
There are two problems with this approach:
- We can’t connect to every node. In fact, the vast majority of nodes are likely to reject our connection request. An inbound connection request will only be accepted by those nodes who have configured their network firewalls with the most liberal policy possible. Even then, most will limit inbound connections to 100 or fewer.
- Even if we could connect to every node, there’s no way to know the latency of any connection. Depending on latency, it’s possible for Blue Sky to generate a block, but for us to receive it first from Green Day.
Distinguishing Other Kinds of Nodes is Easy
In light of these difficulties, consider how easy it is to tell the difference between a fully-validating node and other kinds of nodes. An SPV node, for example, won’t relay full blocks. Likewise, a pruned node won’t relay all blocks. The differences between these kinds of nodes can be directly observed.
To summarize, I can think of no experiment that will reliably distinguish generating and non-generating nodes. Without experimental or mathematical evidence of some kind Miner Essentialism brings nothing to the table.