Universal Wallet

This post is to outline the implementation of what I call the universal wallet, a system that allows for web2 like web3 account abstraction for easy account access from within dApps.

My idea is to add some logic to the namespace contract so that a namespace can be associated with an IPFS hash. This IPFS hash would represent an encrypted account json(s) which could then be decrypted to retrieve the public and private keys for an account. Once this is in place a button could be added to the existing wallet that let’s the user both purchase a namespace AND store there account info(in one transaction).

Once stored this account could be retrieved web2 style(namespace/password) from within any dApp using an iFrame package that installs through npm. This would provide an intuitive user experience to Dero dApps on both desktop and mobile while simplifying the developer expereince by providing a Dero equivalent to web3.js. This method could even be used for multiple networks storing multiple account types once the infrastructure is in place directly competing with things like metamask on other networks like ethereum.

2 Likes

Looks interesting concept. Pls expand on this more.

Ive been trying to think on what exactly I would expand on here and what Ive landed on being the best response would be maybe to outline the process step by step.

So a new user would create a wallet file using the web wallet(as it would be done now). After filling the wallet with enough Dero to cover the transaction costs the user could select the register option which would allow them to both set a namespace and store an encrypted IPFS hash representing their account.

When register is selected the users wallet file is uploaded to IPFS(the file itself is encrypted at this point already) which returns an IPFS hash representing the wallet file. This hash is then associated on chain with the users namespace(hash could be encrypted here as well) and the user can now use the universal wallet in dApps.

Inside a dApp an iFrame would be loaded which would allow the user to enter their credentials and load the universal wallet front end module. This would consist of a javascript based interface that allows for the retrieval of the account as well as handling of signing of transactions to interact with the dApp. Having this set up load within an iFrame would help to ensure that a malicious dApp isnt stealing the credentials.

This set up would allow a user an easy method for signing into dApps with their account regardless of device without complicated key management while relegating account recovery to a simple username/password combo.

I hope this covers your request to expand more on the idea. Feel free to shoot me any questions. I have actually implemented this idea on a gasless EVM proof of authority network that I was building before learning about Dero.

Official Proposal for the Universal Wallet:

https://file.io/t0WeYvBoymLU