Running a Full Node is Near Useless (Or The Marginal Utility of Info Security)
There’s a common theme in the scaling debate. Security vs. Usability. Unfortunately, people in this debate consistently fall into a trap that even the “Father of Economics”, Adam Smith, didn’t quite know how to dispel. The Water-Diamond-Paradox. Though he was never able to solve why diamonds were more valuable than water, we benefit from the ability to stand on the shoulders of giants other than Smith. One such giant, Carl Menger, formulated the concept of “Marginal Utility” used to solve this paradox.
The paradox comes from comparing these goods “as a class”. Of course water “as a class” of good is more valuable than diamonds “as a class” of good. If you had to choose only one to have for the next week, you would certainly choose water. But the relevant comparison is not “as a class” but rather, the ends met by the next unit. When you have no water, the next gallon you obtain is going to be used as drinking water sustain your life. The gallon after that will be used perhaps to wash yourself, and after that, to fill some water balloons. Subjectively, you value you life greater than your cleanliness, and cleanliness greater than a water balloon fight.
The supply of water in many parts of the world is such that most people are able to fulfill the very high value use cases of water, and all that’s left are very low value use cases. The supply of Diamonds on the other-hand haven’t exhausted all the high value use cases, and therefore the next diamond’s value will be used to fulfill that use case.
With this in mind, how does this translate to the security vs usability debate. When it comes to blockchain security, what the network is meant to defend against is double spending coins. Merchants are attempting to spot double spends on 0-conf transactions. Holders trying to keep their private keys secret so their coins aren’t stolen. Ultimately though, we can standardize all security as the rate of loss or decay, with perfect security being 0%.
In the case of token holders, loss of control of private keys are the main vector of loss. If a holder loses 1 key every 10 years, and holds 50 Bitcoin in 2 keys, then their decay is 7% per year. For merchants, if they lose 1 bitcoin out of 1,000 by accepting 0-conf transactions, then their decay is 0.1% per year.
If a merchant accepts 1-conf transactions and there’s a 0.3% likelihood that block is orphaned, then the chance of double spends coinciding with orphaned blocks is 0.003%. Yet this orders of magnitude security difference is not enough to get many merchants to wait for a transaction confirmation. The marginal utility of this added amount of security is unable to overcome the dis-utility of waiting even 2.5 minutes for Litecoin transactions. The fraud rate in 0-confirmation is far below maximum acceptable risk.
Now, in the entire history of bitcoin, there has never once been included in a mined block a double spend transaction in the same branch which was built upon by other miners. If it happened the next block after you read this sentence, the likelihood of happening would be 0.0001%.
Imagine you subscribed to a service to monitor the blockchain for you and alert you to double spends. Do you think they’d lie to you even 1% of the time and tell you a double spend didn’t happen when it did? Let’s say it happens 50% of the time. That’s a 0.00005% decay, acting on a double spend that you wouldn’t have if you had run a full node yourself.
If you simply took the proof of work at face value (such as with an spv node), and you agree that you on average lose 1 key every 10 years, in order to reach a 0.00005% decay, you’d have to split your Bitcoin between 200,000 different keys… We know why normal users do not do this. The next unit of security is not as valuable as the previous unit. Security, just like every other good, has a logarithmic relationship with value.
And yet this is the focus point of the core dev team? Run your own full node and keep block sizes small so everybody can. Verify your transactions back to the genesis block instead of relying on miners and proof of work. Trust nobody monitoring the blockchain for you, because even 0.00005% (theoretical) decay is unacceptable. Even at the expense of usability, keeping fees so high that Bitcoin can’t be used by low value holders (most of the world). This is the absurdity that Bitcoin Core and the decentralization fundamentalists have brought the network to.
Now, you may (and the core devs certainly would) object “But if miners collude, how will we stop them? Doesn’t that change your calculation? Would you not lose more Bitcoin if miners decide to increase the block reward, or start including double spends?”
This is the very essence of the argument for running your own full node. Even if we assume that it’s possible to stop the miners from changing consensus (Narrator: It wasn’t), because of the inherent lack of value in running a full node for the economic majority, and because this only theoretically works if the economic majority runs their own node, you have what is known as a public goods problem. This problem is one that was solved by the block mining reward, but there’s no such solution for non-mining nodes. This will be the subject of my next article.