Everything you know about Bitcoin wallets is wrong

2018-12-02T19:25:28.000Z Honest Cash

This is a re-post and rewrite of a similarly named post from April last year.

Bitcoin Cash is this fantastic invention that can be a true money for the whole world, for everyone. You can transfer money in seconds, any amount to anyone on the planet without an intermediate and without anyone being able to stop you.

The possibilities are easy to imagine, but to get there what we need most is more people actually using it every day. And for that to happen those people need to find the experience pleasant and easy. Because if they don't think its easy, then why would they tell their friends to try it too?

To use Bitcoin Cash people need wallets to carry around their money. The first wallet that existed for cryptocurrencies was the one that Satoshi shipped with the original Bitcoin. That wallet also did a lot of other things. It could mine new Bitcoins, it was always online and made up the actual world-wide network. This all-in-one definitely influenced the design and ideas behind the wallet.

We now have many wallets that we call "SPV" wallets, where the "S" stands for simple. The main difference with the Satoshi client is that SPV wallets only talk to the rest of the network when they make payments and thus are ideal to place on smart phones.

But I don't think the current crop of wallets went far enough. The ideas behind the original wallet still linger and the ideas need to be challenged in order for use to progress to the next level of usefulness.

I think that everything wallet makers have assumed to be needed and proper about Bitcoin wallets, is wrong. In this blog post I want to highlight the major issues.

Address based

If you go to a meetup and you ask experienced Bitcoiners to explain how to use Bitcoin to new people, they always will include an explanation of a bitcoin-address. A long list of numbers and characters that makes most newcomers frown and the eventual escape is to defer this address as "it's like a bank-account".

By putting bitcoin-addresses in the spotlight, however, we show newcomers a rather complex design choice in Bitcoin. It is like explaining SSL and session cookies in order to explain how to use the Internet!

Apart from this being more complex than need be, this creates a side-effect where we shape how payment traffic is shown in Bitcoin wallets. Without surprise those experiences are also based on addresses, not events or goals. Wallets almost all make the address be the core and center of the payment process. The QR code your wallet scans while shopping is a bitcoin address. And this address then becomes the only way that wallets communicate with each other.

When everything is explained around the addresses we use for payments we lose sight of possibilities and we cut off opportunities because those opportunities just don't occur to us.

Here is an example to make this clear; Beth asks her dad to pay her weekly allowance to her Bitcoin wallet. She lets him scan her QR code and dad puts the label on this address that it is Beths address. He now intends to send money to Beth every week by sending it to that address.

The implicit assumption that exists here is that the wallet software that Beth has on her phone will forever check the Bitcoin network if any payments were received on that address. She can't ever stop checking this. Remember how long it took you to convince everyone, including your grandma, that you had a new phone number? This is worse, if people send you money to an address you no longer use, that money will be lost forever!

There are also privacy concerns here. Beth can choose to give the same address to all people she ever meets, but this is impractical. So she will want to give a new address to new people. But the fact is, her phone needs to continuously check the Bitcoin network for payments to those addresses. For years. Her phone ends up exposing all addresses she owns. It suddenly becomes much easier to connect otherwise separate payments (both incoming and outgoing) to the one person: Beth.

The main problem for usability is a remarkably simple one. Your wallet on your phone needs to be connected to the internet to both send and receive payments. Bitcoin itself doesn't require this, you can send the proof of payment to the merchant while you are in the store, no Internet needed. Especially abroad or simply in bad cellphone range areas this would have a lot of advantages.

What if wallets would hide how payments work, hide those addresses? Beth's phone wallet will no longer need to check the Bitcoin network all the time to see if money is coming in. In fact, it could be 100% offline, where the wallet only communicates via private networks (QR codes, NFC or bluetooth) with other bitcoin wallets.

The downside of such a wallet is that Beth needs to actually see her dad in the flesh once a week to receive her allowance. The benefits are privacy, being much harder to hack, not needing Internet and allowing a new set of wallets to be created, as I explain in the next part.

There are currently no full hardware-wallets

Bitcoin wallets are confined to desktops / laptops and smart phones. The largest part of the reason for this is explained in the previous part. The (incorrect) perception of how bitcoin payments work led to the requirement of online wallets.

Even the most expensive hardware wallets have the requirement to connect to the internet (via a phone or a computer) when making a payment. To the best of my knowledge there exists no wallet that allows me to pay another wallet by those two wallets just exchanging their funds.

At its most basic level a Bitcoin payment is a small file, smaller than even the smallest images on this website, which you send out to the world. There isn't even any secrecy required and apart from the obvious camera or bluetooth systems you could have two wallets using audible morse-code to complete a payment in a store with no risk of money getting lost! So why has nobody even attempted to make such a wallet?

The bottom line is that most wallet makers seem to completely miss the following fact when designing their wallets;

When a payment is sent between two parties that don't need to trust each other, at most 1 is required to be internet connected.

In the vast majority of day to day payments people send payments between customers and merchants. Merchants are store owners or market salesmen etc. Much like when you go to a store and use your card to pay, the merchant wants to be online to double check everything and make things fast and smooth. But you don't want to be online if you can help it.

So what would a wallet look like that solves all the problems highlighted in this post?

People would have a credit-card sized Bitcoin-wallet that looks much more like a credit card than it does appear to be a computer. The computer capabilities of this wallet are quite minimal, it needs to be able to store some private keys and sign pre-made transactions and send them over NFC or QR code to the merchant. It never needs to connect to Wifi or cellular networks. Internet is unneeded.

Beth walks into a store and buys some soda. The counter states an amount and she indicates she wants to pay with her Bitcoin Cash Immediate-Debit Card. The merchant has a point-of-sale (POS) device that prepares a transaction of the right amount, and Beth hovers her wallet over the POS device which does a couple of things in less than a second.

First the POS device sends the transaction template to the wallet, then the wallet finishes the transaction by funding and signing the transaction and last the wallet sends the updates back to the POS system. The POS system is online and can check in about 3 seconds that the transaction is correct and not double-spent. Payment complete!

This means that this credit-card sized wallet with a fitting POS system can do payments where security of payment takes no more than 3 seconds. For small amounts or regular customers you can set the security level to have it take less than 1 second.

Topping up the wallet can be done in much the same way, Beths dad gets a template transaction from the wallet which he can set the amount for and he can fund and then send to the wallet. In this case the sender is responsible to get the transaction mined, by broadcasting it to the Internet.

The vast majority of people today would benefit from such a simple wallet where they can fill it up at home or at the bank and use it to spend those funds anywhere, and for practically free. Very much like we use a simple wallet with paper money today.

To be clear, current wallets would not go away. People can use smart phones, desktop machine with wallets and everything else. Merchants likely need their own designed wallet. But if we want to make Bitcoin easy for the majority of the people then we need a new wallet for them.

Would you like such a secure, but easy to use hardware wallet? Do you think your family would use such a payment system? Let me know below!


RE: Everything you know about Bitcoin wallets is wrong

by @Big_Bubbler

Good points!

and here is more words for the HC minimum comment letter count.