Bringing back peer-to-peer to Bitcoin, a joint announcement by HandCash and Money Button.
Mar 30, 2020
How did we get here?
The original BTC software had two methods to send payments: send to address and send to IP. This latter method consisted in that Alice could deliver the transaction directly to Bob, with no third parties involved.
The problem with send to IP was that the implementation wasn’t finished. It used to connect to the receiver’s IP address, unencrypted and unauthenticated over the internet. This meant it was possible to MITM (man-in-the-middle attack) the recipient address: an attacker could replace your Bitcoin address with their Bitcoin address, becoming the receiving end for that transaction. Thus, stealing your money.
So the developers at the time removed IP-to-IP in the early days of Bitcoin because the implementation was insecure, but by doing so, they completely removed the peer-to-peer nature of the protocol, instead of solving the issue. That cripples Bitcoin’s app layer, but it was never considered a big deal up to this point because we’ve never had the volume of transactions Bitcoin apps have to handle nowadays — and the projected volume moving forward.
How are things now?
Currently, Bitcoin apps do not work peer-to-peer. No, not even in BSV, and not even after the Genesis upgrade — P2P is not part of the base layer. Alice does not send the transaction to Bob, but rather, she broadcasts it to the blockchain and Bob has to be constantly scanning for new transactions sent to anyone of his (probably) thousands or millions of addresses generated over time.
So, the resources needed to keep scanning for new transactions, increase exponentially with usage. The more you use your wallet, the more resource intensive it becomes. This is unsustainable.
As an example, imagine being at a McDonald’s 24/7 asking the cashier constantly “Is my food ready now?”, even if you haven’t ordered any food or if you did and you just ate it. That’s how silly the current status-quo of Bitcoin is.
There is an exception to this where apps like HandCash and a few others deal with their internal transactions in a P2P fashion, so only in closed silos.
Thankfully, Paymail can bring us back to true peer-to-peer, and fix all the inefficiencies that could constrain our growth. Paymail allows for secure end-to-end encrypted communications and authentication via HTTPS, solving all the issues that concerned the developers of Bitcoin in the early stages regarding peer-to-peer transactions in the form of IP-to-IP.
Peer-to-peer is back!
HandCash and Money Button have been sending all transactions to each other directly, without third parties, for over a month now. This was probably the first P2P Bitcoin transaction between services in recent history.
If you’ve been sending money from HandCash to Money Button or vice versa lately, congratulations: you’ve experienced real P2P yourself! It’s not a noticeable change for users, but it allows your favorite apps to handle notifications faster and maybe even lower some rates as most companies won’t have to rely on full-node (or third parties running full-nodes) anymore.
Contrary to the theoretical way of handling P2P, which consisted on the receiver’s service to do the broadcast and transaction validation, we have found that in practice there’s a better way to do it: the sender broadcasts the transaction and at the same time it sends it to the receiver plus a signed message for the receiver to verify who sent it. This way we can get rid of many extreme cases where the receiver might not get to broadcast.
“Here’s some money for you. Take it or leave it.”
This finally allows both services to scale indefinitely, way beyond the limits imposed by status-quo, as receiving money becomes a passive action.
Going back to the McDonald’s example, the way this works is more similar to the current “Table Service” McDonald’s offers in their restaurants. You have an identifier and the food is delivered to you once it’s ready. That easy.
A call for all the Bitcoin SV ecosystem
For efficiency reasons we have kept this between both parties so we could get to a working model faster, but we are inviting the rest of the Bitcoin ecosystem to follow suit in a smooth transition to peer-to-peer for the common good.
Both companies, Money Button and HandCash, believe this is one of the most meaningful accomplishments to date for Bitcoin.
After all, this is what Bitcoin was supposed to be, and it’s the only way we can all scale in an efficient way. The sooner we all do this transition, the better.
If you are a Bitcoin app developer and would like to get some help in order to transition to peer-to-peer, please consider joining our open conversation in Telegram: https://t.me/joinchat/GMX7LRbEdOXcrj7GYnbDig
MoneyButton will be hosting all documentation related to the P2P implementation on their website, you can check it here.
Both HandCash and MoneyButton consider important to define a deadline where non-P2P transactions get deprecated from our services due to their unsustainable nature. We will define this deadline very soon.
We are convinced that some intermediary services will serve as a bridge from P2P to non-P2P and viceversa for extreme cases where some legacy services and apps don’t get updated, to maintain compatibility to a certain degree.
The HandCash team would like to thank the Money Button team for their extreme professionalism, discretion and commitment during the development of this side-project. We know how busy both of our teams are currently in our respective businesses, but we knew this sacrifice for the common good was something we all we were willing to make.
Thankfully everything was handled with strict deadlines and specifications with the clear goal of providing a solid foundation for other developers to adopt and keep improving this exciting “new” way of using Bitcoin.
Thanks to Ryan X. Charles.
PRESS RELEASES 30/03/2020
HandCash and Money Button – two leading wallets in the Bitcoin SV ecosystem – are collaborating to bring back true “peer-to-peer” transactions for Bitcoin, the way Bitcoin’s creator Satoshi Nakamoto intended. The original Bitcoin white paper announced Bitcoin as a “peer-to-peer electronic cash system”, but BTC protocol developers deviated from the “peer-to-peer” design nearly a decade ago. HandCash and Money Button will now send signed BSV transactions to each other directly, without third parties involved, restoring the true Satoshi Vision for Bitcoin.
The original Bitcoin software provided an option for users to “send to IP”. This method would allow a sender (Alice) to deliver a transaction directly to the recipient. (Bob), with no third parties involved. But the implementation for “send to IP” was not finished, so early BTC protocol developers removed the IP-to-IP functionality, removing the peer-to-peer nature of Bitcoin’s protocol.
Bitcoin SV’s mission has been to restore Satoshi’s original Bitcoin protocol and allow it to massively scale. HandCash and Money Button seek to lead the Bitcoin SV ecosystem back to the peer-to-peer design that Satoshi intended. The Paymail protocol (announced for Bitcoin SV in May 2019) brings back true peer-to-peer transactions. Paymail allows users to send Bitcoin transactions to an email address, providing for secure, end-to-end, encrypted communications and authentication via HTTPS.
Using the Paymail protocol, both the HandCash and Money Button wallets will now send all signed Bitcoin SV transactions to each other directly, without third parties acting as an intermediary. The receiving end will check if the transaction is valid instantly and broadcast it to miners directly, allowing both services to scale far beyond the limits imposed by status-quo. A peer-to-peer transaction system, as Satoshi intended, is much more scalable than how Bitcoin has worked for the past decade.
A call to the Bitcoin SV ecosystem: HandCash and Money Button have agreed to launch this change on their wallets in order to quickly demonstrate the original peer-to-peer design of Bitcoin. Both companies invite the rest of the Bitcoin SV ecosystem to follow suit and help the industry smoothly transition back to peer-to-peer transactions for the benefit of all.
If you are a Bitcoin app developer and would like to get some help in order to transition your system to a peer-to-peer transaction system, join this open conversation in Telegram: https://t.me/joinchat/GMX7LRbEdOXcrj7GYnbDig.
Bitcoin was always intended to be sent peer-to-peer. Today we are happy to announce that Handcash and Money Button have partnered to implement a peer-to-peer transaction protocol between both services leveraging paymail as the naming and query system.
The title of the whitepaper is, “Bitcoin: A Peer-to-Peer Electronic Cash System“. What “peer-to-peer” is referring to in this paper is that a user sends a transaction directly to another user. This is why Bitcoin is “electronic cash”: it is handed over from one person to another exactly like physical cash.
Oddly, most Bitcoin wallets do not send transactions peer-to-peer today. Most wallets send the transaction to miners first and expect the recipient to scan all transactions on the blockchain to look for their transaction.
However, this strategy is unscalable. As the transaction volume on the network increases, the burden on the recipient to find their transaction increases.
The original Bitcoin code had a technology called pay-to-ip, which was later removed by the Bitcoin Core developers. We have restored this technology and rebuilt it in a more secure and user-friendly way on top of paymail.
With the new peer-to-peer protocol we have designed, transactions are sent from one paymail to another. This is more secure than pay-to-ip because it uses the underlying HTTPS API of paymail to prevent MITM attacks, and it is more user-friendly because users see a human-readable paymail instead of a public key.
We invite all Bitcoin wallets to join us in our initiative to create more scalable, user-friendly wallets. We have created a Telegram group to facilitate discussion amongst wallet companies to help us continue to expand the peer-to-peer capabilities of Bitcoin.
Last year, Money Button partnered with Handcash, nChain, Centbee, Electrum SV, and other companies to design and launch paymail, which is like email that supports Bitcoin. Paymail is an email address with an HTTPS endpoint for sending and receiving information. The first two extensions we launched were the ability to to get an address to send money, and the ability to get a public key to sign or encrypt data.
Today we are launching a new extension for paymail that supports sending transactions p2p. It is a new endpoint for paymail that accepts transactions. Each paymail on Money Button and Handcash can now receive transactions.
In order to send a transaction to a paymail end point, first query the address using the existing paymail endpoint, then build and sign the transaction, and then deliver the transaction to the new paymail transaction receive endpoint.
By sending transactions this way, the recipient does not need to scan the blockchain to look for the transaction. Instead, the transaction is received directly. Note that in the case of Money Button and Handcash, the transactions are being delivered service-to-service, but in principle the protocol we have designed supports genuine peer-to-peer transactions for true SPV wallets. Handcash and Money Button are sending transactions service-to-service because that solves the scalability problem in a practical way.
The new protocol we have designed is one piece of BIP 270, but is not the entire thing and actually replaces BIP 270. We no longer plan to implement BIP 270 as-is, but instead we will implement the components one step at a time. The new protocols will fit together to complete what was intended for BIP 270 (a complete invoice, authentication, and p2p transaction system), but the details will be different as we implement each piece in an iterated way.
We would like to thank Handcash for being so forward-looking and aggressive to implement this so early. This partnership is only possible because both teams have been able to work closely together. Even though we are competitors, we have a lot to gain by working together. It was a pleasure working with you, Handcash, and we look forward to creating more protocols jointly with you in the future!
Introduction to Paymail Video Series
p2p payment destination:
Bringing back peer-to-peer to Bitcoin. by HandCash and Money Button.