We all love our wallets because they allow us to store our money on our own phone and be our own bank. But, let's be honest, there's room for improvement. I've compiled a list of 16 ideas, some my own, some already out there for some time, how to amp up our wallets, so that Bitcoin Cash truly becomes the best money the world has ever seen.

Some of these ideas might be controversial because they sacrifice some security or privacy, but we should at least leave people who care less about privacy the choice to have a more convenient user experience.

I've built the mock-ups myself using material ui and material icons .

1. Send to contact / email address

When I start a new conversation with WhatsApp, I select a contact from my contact list. With Coin Text, we can send BCH to a wallet based on my friend's phone number. But if I want to send money to my friend's wallet on her phone, I have to know her address. Or I'd send first via Coin Text and then she'd transfer from there to her phone. Which both is very cumbersome.

A wallet could instead look up which contact is linked to which address, and then send the money to that address.

The person would have to register their phone number in their wallet, that means enter their phone number and verify it by receiving a code sent via SMS. This number would then be stored on a trusted server, which could be queried by anyone who knows the number. It would essentially be a phone number -> Bitcoin Cash address lookup service.

Both had to trust this party (as with Coin Text, too, btw.) to not send fake addresses, but it would be so much easier to send someone some BCH without them having to have a wallet first: You could query the not-yet-registered number and return a temporary address. A text is sent to that number saying “You received X Bitcoin Cash from Y! Redeem it by registering at Z”. Once the wallet is created and the number is actually registered, the money can be send to the new wallet, which is on the phone.

This massively helps on-boarding new people, since you can send money to people without a wallet, and they can later install an app which receives the funds right away.

Advantage over Coin Text

This has the advantage that the money is actually stored on the phone's wallet and doesn't require to trust a service like Coin Text, which might get hacked. Also, it's much more convenient to use an app with buttons, contact lists and QR scanners, than sending commands via text manually. For people with modern smart phones, Coin Text isn't the most convenient way to send money.

The same can be done for email addresses: You register your email address in your wallet, click the activation link sent in the email, which links your email address to your phone's wallet.

Now people can send you money using an email address, like with PayPal. Which is very convenient!

2. Micro QR Code

Please don't send any funds to the QR Codes below, they are for demonstration purposes only.

This is a Bitcoin Cash address QR code in Cashaddr format. Looks pretty bulky right? Wouldn’t it be nice if those things wouldn’t be the size of a square yard? This would allow QR codes to be printed on all sorts of things, business cards, clothing, receipts, without taking too much space.

The problem is, QR codes have checksums and error correction built in, and then Bitcoin addresses (both Cashaddr and Legacy) again have a checksum themselves. This seems a bit redundant to me. It makes the QR code overtly large.

An address actually is 20 bytes in size, without checksums. The second smallest QR version can store 28 bytes already (for 15% error correction). So we could have a large checksum (which would also ensure that this is in fact a Bitcoin Cash address and not some random QR code) of 8 bytes and still have a very small QR code, like below. It’s just that this format isn’t defined nor understood by any wallet yet.

If we go down to 7% error correction, then QR allows us to fit 32 bytes in the same code and we can also fit an amount along with the address. 20 for address + 8 for amount + 4 checksum. This way we would still have the convenience of having our wallet enter the address and the amount with one scan.

But that’s still not small enough.

There’s a Micro QR Code format for max. 15 bytes. Bummer, too small for an address. But wait, we could have a smaller address which is less secure, with 14 bytes and still have a checksum of 1 byte in there. That means, if we scan a non-BCH Micro QR code, there's a 1 in 256 chance it will accidentally be recognized as a BCH address, which is still reasonable.

This May’s upgrade the OP_SPLIT opcode will be activated, which allows to cut off some of the address before verifying. So a wallet would have to recognize that this is a small QR code and build a transaction using the new OP_SPLIT.

How secure is it? With 14 bytes, that means 5,192,296,858,534,827,628,530,496,329,220,096 possible addresses. One AMD RX 480 can do 64 million addresses per second. If we bought 1,000,000 of those cards, it would still take 1.3 trillion years, on average, to crack this smaller address. Even if all those cards got a trillion times better, it would still take on average 1.3 years (371 trillion years for the normal address, for comparison) to crack them. But until then we'll probably invent better codes that can store hundreds of bytes on the same space. So I'd say no need to worry.

And it looks kinda cute, to be honest.

3. Web Wallet

This is pretty self-explanatory for everyone who has used WhatsApp Web: You'd go to web.mywallet.com (or whatever else) and scan a QR code on that site. Then you can manage your funds from within the browser, send transactions, change settings, all the good stuff. The Blockchain.com wallet has a similar feature, but it's not as convenient as scanning a QR code.

Additionally, all the transactions could still be signed on the phone, and might even require manual confirmation on the phone. You'd do a transaction in the web interface, press send, your phone asks you to confirm, signs the transaction and distributes the transaction. Still very secure.

4. Connect wallet directly to bank account

This is fairly simple to understand. If a transaction requires more money than you have in your wallet (potentially even 0), the bank would withdraw some money from your bank account and send it directly to your phone. Then this money can be sent to do the actual transaction. Since Bitcoin Cash fees are low, we can do it in two steps without issues.

The great barrier, of course, is to get all the licenses to do this stuff. It also requires trust in a third party.

It might seem like a trivial or even harmful feature and easily dismissed by Bitcoin Cash fans, who, after all, want people to use Bitcoin Cash instead of fiat. However, I think the opposite is true: It would allow onboarding people who don’t want to suffer the up and down swings of the market, and realize that paying with Bitcoin Cash is the most convenient way to pay we currently have. This will then stabilize the price, since it raises the demand for Bitcoin Cash, and will cause people to switch over more and more of their holdings to this awesome kind of cash.

Further, it adds an extra level of convenience: Exchanging Bitcoin Cash all the time is quite a hassle. You have to fund an exchange, create an offer and wait for it to go through. If instead it would be exchanged automatically when you do a transaction, you wouldn't even need to worry about the market price.

That's the way Bitcoin Cash will win big time.

5. Spending groups ala Splitwise.com

If you don't know what Splitwise is, it allows you to make a group for some event or location, e.g. a shared flat, and then you'd add spends to that to keep track of who owes whom how much.

Now, this still takes several steps: First, you buy the item, get the receipt and then you'd enter the amount into Splitwise manually.

We could take that to the next level and allow to create groups directly in the wallet. Then you’d do a normal transaction from your wallet in this group. Then this transaction will be sent from your wallet, but also posted to the group immediately. This way what would be two steps in Splitwise would be just one in a wallet group. When settling the group, the owed amount can also be send directly to those that you owe money to – this is also more convenient than Splitwise.

So for example, you go on vacation with your friends, so you open a group in your wallet and add your friends. One drives and pays the fuel. Another one buys groceries and cooks. Yet another one paid for the stay. For each purchase, you'd go to the group, select "Scan QR", pay from your own wallet, and the transaction will be posted to the group. After the vacation, someone clicks on "settle", and each member will be displayed whom he owes what. Then each member does a transaction which settles the debt. Additionally, everyone has cryptographic proof that the spends did actually happen, so no cheating possible!

6. Emergency mode

Bitcoin robberies are a thing . If they have a gun and you could send the Bitcoins, they will make you do it.

Now the following feature might be risky, but at least the fact that it exist might be a deterrent great enough to stop robberies from happening. Here's how it'd play out:

Robber: This is a robbery. Send me all your Bitcoins! * holds up gun * Victim: * stuttering * Ok, ok, but please let me go afterwards! Robber: * pulls out paper wallet * Unlock it, then hand it over! Victim: * enters PIN into wallet, hands over the telephone * Robber: * scans QR code, sends all of it * Victim: * runs away *

Ok, I admit this looked like a normal robbery. But, at home, the victim just fetches his emergency wallet seed, and restores all his Bitcoins. What?!

The trick is, in your wallet settings, you can configure a special emergency PIN and address. When you enter this emergency PIN into your wallet, instead of unlocking the phone, it first sends the entire balance to the emergency address, but then shows the wallet as if it'd just been unlocked normally. Now, the robber can "send" money from the victims phone all they like, and it pretends the transactions actually worked, but in reality nothing is sent – which is impossible anyway, since the balance has been sent to the emergency address already. And good luck trying to double-spend that one.