Madhavan Malolan

Posted on Feb 02, 2022Read on Mirror.xyz

Request to build - Fix Wallets for Web3

There’s a fundamental flaw in all our wallets’ designs. I present a fix, that I think should fix user onboarding once and for all.

The problem is currently wallets try to be credential management as well as asset management. Because of which, the UX gets overly complicated.

We should disassociate these two functionalities.

Here’s how we can fix it …

Signing apps

We need a mobile app who’s only job is to sign transactions. No ERC20s No ERC721s No ETH; No asset management. Just signing.

It has only one QR code scanner that scans a WalletConnect QR code and signs it using the eth_signTransaction or eth_sign

These are the only two functions this app supports.

Clearly show what transaction is being signed in a readable UI.

Auto generate private keys

Upon installation, just generate the keys store it transparently on local device upon installation. Automatically create a new address/account.

Don’t prompt the user to store this key somewhere.

Upon opening the app check for app balance. If greater than $100 - show prompt to save seed phrase.

One app only one account. You can override the auto generated address by punching in your seed phrase. However this option is inside an overflow menu most people won’t even bother opening.

Websites & Apps to manage assets

There should be a website that displays the walletconnect QR code and requests a signature. Upon receiving the signature, use that to fetch details about the assets in the wallet.

No need to change network

Change network is an antipattern in web3 because of this ongoing issue on Metamask

https://github.com/MetaMask/metamask-extension/issues/3475

If we have the above mentioned design ready, you don’t need to change between “Mainnet” “Polygon” “Rinkeby”. Websites and apps should be able to request sign transaction and then send the signed transaction to the RPC endpoint of their choice.

For this to be easier, we need a layer on top of ethers.js ; But that’s for another post.

Web3