Getting your Trinity Audio player ready...
|
Simplified Payment Verification in Bitcoin
In the history of Bitcoin’s development, few concepts have sparked as much debate and controversy as the definition of a “node” and the existence of Simplified Payment Verification (SPV). Introduced by Satoshi Nakamoto in the original Bitcoin white paper, SPV was envisioned as a way to enable lightweight clients—those that don’t require downloading the entire blockchain—to verify transactions with a high degree of confidence. This is especially applicable to relatively small retail payments where things like insurance already exist because of a certain level of assumed fraud in credit card and cash sales.
In theory, SPV was meant to allow users to interact with the Bitcoin network without the need to run a “full node,” thus lowering the barrier to entry and making Bitcoin more accessible.
However, the implementation of SPV in BTC Core, the dominant software client for the BTC network, has been anything but straightforward. The debate over the necessity of running a full node versus relying on an SPV wallet has divided the Bitcoin community, with notable figures like Luke Dashjr—one of the Core developers—voicing strong opinions on the matter.
SPV doesn't exist
— Luke Dashjr (@LukeDashjr) August 18, 2024
Dashjr argues that SPV compromises the security and decentralization of the network. This view reflects a broader sentiment among BTC Core developers that SPV is inherently flawed and that users should run full nodes to fully participate in the network. It should be noted that Dashjr is an extremist on the small blocker side, arguing that the block size limit should actually be lowered so more people can download and validate the whole blockchain without proof of work (PoW).
So he hasn't learned anything since 2016
Bitcoin only works at all if a super majority use their own nodes. If that's not holding true, we need to reduce block size until it is.
— Luke Dashjr (@LukeDashjr) April 15, 2024
It should be noted that big blockers define a “node” as a fully validating client that writes to the blockchain with PoW, colloquially called a “miner” or a “pool.” Small blockers define a node as any fully validating peer that runs a complete copy of the blockchain. Both sides play rhetorical chess games by abusing the general misunderstanding of the terminology, and I would argue they like it this way as a means of gatekeeping for consulting and speaker fees. But that’s for a separate article…
In reality, the risk of big blocks is that too few people participate as node peers, leading to security and persistence issues, while the risk of small blocks is that too many people participate as node peers and cast de facto votes to change the rules simply by virtue signaling with software versions. Both risks can be problematic.
The rise and fall of SPV in BTC Core
For a time, BTC Core did include some features that supported SPV, such as Bloom Filters, which were intended to help SPV clients find transactions relevant to them without needing to download the entire blockchain. However, due to leadership like that from Dashjr, these features were largely unused until they were gradually deprecated and removed, starting with BTC Core 0.12.0. The official reasoning given was that Bloom Filters were inefficient and posed privacy risks, as they could potentially reveal more information about a user’s transactions than intended.
Critics, like myself, argue that the removal of these features was not just a technical decision but a strategic one, reflecting the Core developers’ preference for a vision of Bitcoin where every user runs a full node so that it is easier to spin up lots of nodes to signal for desired changes in social/Sybil attacks on the network.
They argue that this insistence on people running full nodes lowers barriers to entry, especially for users with limited computing resources, so they keep a mystic sense of populism front and center in their marketing efforts.
SPV: A lost cause or an untapped potential?
The fact that BTC Core has moved away from SPV does not mean that SPV is impossible to implement or that it was never intended to be a part of Bitcoin. After all, Satoshi Nakamoto dedicated an entire section of the white paper to explaining how SPV could function.
The Core developers’ rejection of SPV is more a reflection of their own vision for Bitcoin than a definitive statement on what Bitcoin can or cannot do. Their vision is, notably, at odds with Satoshi’s vision for Bitcoin as a scalable, instant payments technology.
Technology isn't even making progress catching up. It only improves at a rate equivalent to 300kB blocks.
SPV doesn't exist, and the closest thing people are calling "SPV" is completely insecure and harms the network.
— Luke Dashjr (@LukeDashjr) August 18, 2018
Enter BSV, a competing implementation of Bitcoin that aims to fulfill the original vision laid out in the white paper. BSV developers have been working diligently to implement a layered strategy where Teranode mining operations maintain a full, unpruned copy of the blockchain. Overlay networks are being developed to keep specialized data for specific applications or second-layer protocols. Crucially, SPV is being implemented as an overlay through initiatives like the “Lite Client Toolbox” and the “SPV Wallet,” which are designed to make SPV a practical reality.
BSV Blockchain is pleased to announce that its new SPV Wallet is now available to the public following a private beta period. https://t.co/qkNu4FHuQm
— BSV Blockchain (@BSVBlockchain) April 29, 2024
In practice, this means that if the network is not actively under attack—a status that is public and easy to know—payments can be handed from the payer’s wallet with Merkle proof and block headers to the merchant whose wallet can instantly give a health check to the payment using a point of sale system that is listening to an overlay network designed to instantly validate with a high degree of certainty that a payment is valid.
This functions similarly to a credit card authorization and is sufficiently secure for small, instant payments. “Small” is a metric that can be determined by the merchant. Larger payments might want to wait for the ten-minute settlement time. “Large” is also a commercial concern to be determined by the merchant, not some technocratic software developer, but the concept is essentially that a cup of coffee probably isn’t worth waiting ten minutes for, and a new car or a house purchase can probably wait for a few minutes to settle without too much inconvenience.
In short, using SPV is a business decision first, a technical implementation decision second, and BSV’s engineers have decided to see if perhaps Satoshi was right about the network that he architected for global commerce.
The authority of Core: A matter of perspective
The BTC Core developers often present themselves as the authoritative voice on Bitcoin in form and function.
They aren’t.
BTC Core client is simply a reference implementation of one version of Bitcoin, not the definitive technical specification. Other clients, such as those used in BTC, BCH, or BSV, are all valid interpretations of the Bitcoin protocol, at least until they are eliminated through the orphaning process that Satoshi described when chains of bitcoin disagree with each other.
BSV exists specifically to test and hopefully continue to prove right about Bitcoin what the Core developers and small blocker advocates have sworn they had already proven wrong.
As the debate continues, it’s essential to remember that Bitcoin’s potential is far from fully realized. The Core developers may have turned their backs on SPV, but that doesn’t mean the concept is dead. It’s alive and well in BSV, where the vision of a truly scalable, efficient and accessible Bitcoin is being actively pursued. In the end, it’s not about who gets to decide what Bitcoin is; it’s about who can prove what Bitcoin can be.
Watch: CoinGeek Weekly Livestream with Kurt Wuckert Jr. & Darren Kellenschwiler