Bringing back peer-to-peer to Bitcoin, a joint announcement by HandCash and Money Button
How did we get here?
Bitcoin: an electronic peer-to-peer electronic cash system… except that it hasn’t worked peer-to-peer for almost a decade.
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.
Paymail
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.
Deadlines
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.
Acknowledgements
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.