OpenSPV to fulfill Bitcoin’s promise of fast, secure, P2P transactions

OpenSPV to fulfill Bitcoin’s promise of fast, secure, P2P transactions

Simplified Payment Verification (SPV), Satoshi Nakamoto’s solution to scaling Bitcoin without bloat, is set to become far easier to use. BSV entrepreneur and developer Ryan X. Charles last week introduced OpenSPV, a standardized way to implement SPV in Bitcoin services that saves time, disk space and money.

Charles explained the concept in a series of tweets. He described it as a way to “extend paymail so that apps can access these features with the user’s choice of wallet,” which works by sending transactions and Merkle Proofs of their inputs peer-to-peer.

OpenSPV is a collection of open protocols and open source software that can be used to transmit information such as transaction data and Merkle proofs between users—regardless of whether they’re online at the time or not.

There’s no official release date yet, and OpenSPV’s homepage has no further announcements. However, Charles’ work so far is available for viewing on GitHub. He added that OpenSPV will be working with Bitcoin Association Technical Standards Committee and other wallet developers to set standards for all new protocols.

When implemented correctly, SPV means Bitcoin services don’t need to run full processing nodes, or even have a copy of the entire blockchain, to function. Rather than searching all blockchain data for specific transactions and inputs, it allows them to use block header data from existing blocks to verify whether a transaction is valid or not.

This saves storage space and bandwidth. Charles noted that using SPV also makes Bitcoin “more private and more secure” as it scales. Parties to a transaction use only the data relevant to that interaction—in other words, it’s not necessary to download and verify every single transaction in Bitcoin’s history to verify a single purchase, large or small.

BSV watchers have been waiting to see what Charles would come up with next. Having founded Money Button in August 2018, he left the project in September 2020 following its acquisition by Fabriik.

Charles had made few statements in public after that, and many wondered if and when he would return to BSV development. OpenSPV is a product of a company named Coasian Inc., which Charles founded in February 2021.

Simplified Payment Verification (SPV) was described in the 2008 Bitcoin whitepaper as the ultimate solution to scaling Bitcoin. It keeps Bitcoin feasible as a network for fast, secure payments of any size as the blockchain grows massively in size over time.

Dr. Craig S. Wright has made repeated calls for developers to implement SPV solutions in their apps and services, but to date such development has been slow. Charles himself described the problem in a detailed post last year, saying:

“SPV has been overlooked because Bitcoin has been widely misunderstood and mis-implemented. Many people who got involved in Bitcoin were motivated to do something other than create the plumbing of the world economy. Their vision did not require scale, security, user-experience, or legality, so they never implemented SPV.”

Charles and Dr. Wright discussed the SPV issue frequently in their “Theory of Bitcoin” series of video interviews/tutorials.

One barrier to proper SPV implementation has been a standardized and secure way to send messages between transaction parties peer-to-peer, or without necessarily requiring a live internet connection. OpenSPV’s “plumbing” could be another big step towards fulfilling Bitcoin’s original promise of being “a peer-to-peer electronic cash system.”

New to Bitcoin? Check out CoinGeek’s Bitcoin for Beginners section, the ultimate resource guide to learn more about Bitcoin—as originally envisioned by Satoshi Nakamoto—and blockchain.

[id^="_form"]
[id^="_form"]
[id$="_submit"]
[id$="_submit"]
[^;]
[^;]
[?&]
[?&]
[^&#]
[^&#]
[(d+)]
[(d+)]
[elem.name]
[elem.name]
[+_a-z0-9-'&=]
[+_a-z0-9-'&=]
[+_a-z0-9-']
[+_a-z0-9-']
[a-z0-9-]
[a-z0-9-]
[a-z]
[a-z]
[el.name]
[el.name]
[id^="_form"]
[id^="_form"]
[id$="_submit"]
[id$="_submit"]
[^;]
[^;]
[?&]
[?&]
[^&#]
[^&#]
[(d+)]
[(d+)]
[elem.name]
[elem.name]
[+_a-z0-9-'&=]
[+_a-z0-9-'&=]
[+_a-z0-9-']
[+_a-z0-9-']
[a-z0-9-]
[a-z0-9-]
[a-z]
[a-z]
[el.name]
[el.name]