Author: Eric Lombrozo 2015-08-03 17:54:12
Published on: 2015-08-03T17:54:12+00:00
The current block size debate has brought up an important, albeit often neglected observation. Full nodes suffer from a tragedy of the commons problem and therefore are likely to continue decreasing as a percentage of total Bitcoin nodes. This also results in a vicious circle as more and more people use SPVs, the burden on existing full nodes will increase even without a block size increase, which will further reduce the number of full nodes. A few people have mentioned it in blogs or reddit, but the topic is generally quickly overshadowed by posts along the lines of "RAISE the blocksize already! ".Full nodes bear the full cost of validating/relaying/storing the blockchain and servicing SPV clients but gain nothing financially from it, yet they serve an important role in validating transactions and keeping miner dishonesty in check. If there were few independent full nodes, it would be possible for 3-4 of the biggest mining pools to collude and do literally whatever they wanted with the protocol, including inflating the money supply, freezing funds or even confiscating funds, because who would know? Before the concept lightning, there did not seem to be any trustless way of feasibly paying small micropayments to full nodes for their services. However, with payment channels and lightning, this may no longer be an issue. A node could advertise its rates to an SPV node upon connection and the SPV could either agree or look for another node with lower fees. If implemented, fees are likely to be trivial (few satoshis per request) as competition will drive down fees close to the cost of running a full node. This should spur an increase in the number of full nodes and increase decentralization of the network.The point is that without concrete direct incentives, many might find it rational to just leech off others, which might actually work for a while, but this is obviously not stable equilibrium and it's very hard to do any game theory on it. Current SPV implementations necessarily diverge from the p2p model and strongly tend toward a client/server architecture. Using offchain protocols with blockchain settlement guarantees, it is possible for clients to request proofs directly from servers without requiring any additional authentication layers and can perhaps even be onion-routed to hide the client's identity.Checking SPV proofs is cheap as it only requires downloading headers, checking PoW, and constructing a lookup table mapping block hashes to merkle roots. This structure can easily be stored entirely in RAM on typical consumer devices. Using p2sh, we ensure the txout script is a mere 22 bytes. Full validation nodes can fully prune the partial merkle tree structure when the output is spent. SPV proof serving nodes would still need to store full blocks but as long as they are getting paid for this market forces could lead to a stable balance between clients and servers or at least adaptive dynamics that prevent deficits or surpluses.
Updated on: 2023-06-10T18:08:22.172195+00:00