# No-one knows crypto mobile is broken. Here's the problem.

By [Liam Zebedee](https://paragraph.com/@nakamofo) · 2023-05-16

---

There’s this quote from [VisaKanv](https://twitter.com/visakanv) which goes - “**a problem is by definition something that is poorly-defined. As soon as you know how to solve it, it becomes a task**”. And that is where crypto on mobile is today - it’s an undefined problem.

![](https://storage.googleapis.com/papyrus_images/3f0c552740e11237bf5ca92b417ddd4f1a916d7de80e8f394c467b6fe0165eb9.png)

What is the problem? I can tell you exactly, having attempted to build crypto mobile apps with my mate Shun. He built Light Wallet - using it, you can [approve transactions within Safari on iOS](https://twitter.com/Light_Wallet/status/1610437491433275392).

Here are the problems:

The problem on mobile.
----------------------

### Onboarding.

*   Users must connect their wallet.
    
    *   Connecting wallets is nigh impossible for Swift apps. There is no open-source library which can do this smoothly, not even [WalletConnect](https://walletconnect.com/). So native apps are eliminated.
        
    *   React Native apps. It is possible to connect a wallet here. We can use WalletConnect to show a dialog. There are 40+ wallets to choose from. And Metamask Wallet doesn’t support WalletConnect.
        
    *   When the user finally selects a wallet they have, they are redirected outside of the app. This experience can, and has, broken quite easily. Rainbow has broken for me, due to a bugged update, and this meant I couldn’t connect wallet on mobile.
        
*   Users might not even have a wallet.
    
    *   Result: they must find and download a wallet, open it, generate a private key, write down the key phrase, get ETH for gas, and then finally go back to your app.
        

**We haven’t even reached the step where users actually use.**

### Usage.

Now a user goes to swap a token, for example.

*   Users must confirm every single transaction. Even for apps they already trust (Uniswap), even for low-value txs.
    
    *   Result: less time in-app, more friction, more opportunity to break the flow through a third-party wallet call.
        
*   Users might not have gas to pay for transactions.
    
*   Users might have to switch networks.
    
    *   \[???\] WalletConnect does not impose any requirements on transactions for different chains.
        

**And what happens when a user returns to your app the next day?**

*   User must reconnect wallet.
    
*   User might have to switch networks.
    

**And finally, three high-level problems:**

*   Every app competes with other apps for blockspace. Result: many chains UX.
    
    *   Second-order effect: users might not have gas to pay for transactions.
        
*   WalletConnect isn’t even decentralized. They require an API key to use their product.
    
*   Apple doesn’t support crypto. They blocked Uniswap’s Wallet from being released, eventually it did.
    

A concept for mobile.
=====================

What’s an ideal flow?

*   User opens app.
    
*   User hits “connect wallet”.
    
*   User uses app to swap. Hits “swap”.
    
    *   For unknown contracts, the wallet requires confirmation.
        
    *   For known contracts, where the transaction exceeds a user-defined threshold (say >$100), the wallet requires confirmation. This is how the PayPass/Paywave UX works.
        
    *   For known contracts below a threshold, and where gas prices are not crazy, we confirm the transaction automatically.
        

Could we build that? I think we could. And let me share a piece of the puzzle:

[https://twitter.com/jarrodWattsDev/status/1655460223413522434](https://twitter.com/jarrodWattsDev/status/1655460223413522434)

What Jarrod has built is something very interesting using [account abstraction](https://eips.ethereum.org/EIPS/eip-4337), better known as **smart wallets**. Here’s what I’m thinking:

*   The app generates a wallet for the user. The wallet private key is securely stored in the iOS Keychain, meaning it isn’t available to other apps.
    
*   Because the app owns the wallet private key, there is a lot of affordance in the UX:
    
    *   Users don’t have to find a wallet. They already have one.
        
    *   Connecting a wallet is instant. There is no redirection to another app.
        
    *   The app wallet connects to the right chain, by default. There is no switching networks.
        
    *   The app does not require redirecting to another wallet app, for confirming transactions.
        
    *   Connecting the wallet is one tap. The wallet is loaded from the Keychain.
        
*   What about gas? This is where it gets interesting.
    
    *   (1) The economic design of “paying for transactions” will change.
        
    *   The [best example of this is Immutable](https://twitter.com/liamzebedee/status/1531126026683957248). Instead of users paying for all transactions, they “take fees on where value flows” and use that to subsidize non-value txs like mints and transfers. Simply put - take fees on sales, use that to make mints/transfers free.
        
    *   Thanks to account abstraction, you can now subsidise transactions for users. The best example of this working is STEPN, a Solana app which had a large userbase of non-crypto people.
        
    *   (2) The economic design of “one chain fits all” will change, and so will gas wars.
        
    *   Currently, every app competes for blockspace, which constrains usage because gas costs fluctuate.
        
    *   The future is likely multichain by default, likely app chains. There are some services already which allow you to “spin up a rollup” in one click (e.g. [Spark](https://twitter.com/Calderaxyz/status/1624543265809907712)).
        
*   The consequence of multichain and new gas models (if it happens this way), is that wallet apps will have to catch-up to compete. This is an M-of-N problem for wallets. And approaches like WalletConnect will also need to be adapted. Whereas for an “app wallet”, this is much simpler.
    
*   Lastly, for the higher-level problems I mentioned earlier, these could be improved.
    
    *   We don’t need WalletConnect when there is a single wallet, so there is less centralization risk. But there is still a need to move your assets to your “main wallet”, for example. Using ENS + a chain picker might just work. But I don’t know.
        
    *   Apple might block gambling apps, but they didn’t block Signal. And Signal and app wallets are just cryptography with private keys. There is still the risk that they demand a 30% share from marketplace transactions (the [Apple tax](https://news.ycombinator.com/item?id=28748965)), which we have to solve.
        

Conclusion.
-----------

I share these thoughts because I think crypto on mobile is going to be insane. My context is as someone who has designed blockchains ([Quark](https://github.com/liamzebedee/quark-blockchain)), implemented meta transactions, and built a crypto social app with real daily users ([Take](https://take-xyz.vercel.app/feed)). My friend [Shun](https://twitter.com/shunkakinoki) has designed [mobile Ethereum wallets in Swift](https://twitter.com/Light_Wallet). Both of us understand that the problem here is identifying the problem, not convincing users. Users really want a crypto mobile experience. We just have to build the platform to make it possible.

What do I see in the future? People building things like [STEPN](https://stepn.com/). STEPN is ridiculous and stupid, a ponzi cult designed around incentivising people to walk using tokens. But it worked. And I remember being at some boat party for my mate, and meeting a totally-not-technical user who was showing me the app. It’s funny and insane to think this is on the tip of our tongues.

---

*Originally published on [Liam Zebedee](https://paragraph.com/@nakamofo/no-one-knows-crypto-mobile-is-broken-here-s-the-problem)*
