On-ramping non-crypto enthusiasts into the blockchain space has always been a pain point for widespread adoption of decentralized apps. We wanted to build something that would reduce the barrier to entry for all newcomers. We also wanted to make it easy for DApp developers to integrate into their own already existing projects.
What it does
It consists of an outer container that holds wallet information, and an iframe internally that holds the dApp that the user wants to run. If Walley Wallet detects no MetaMask or other wallet, it generates a new random wallet for the user to use, and stores that in local storage, no installation needed.
From the DApp author's perspective, the only modifications required by the DApp author is to embed a couple of extra
<script> tags in their HTML.
The wallet container and DApp communicate with each other via a proxy that we wrote using the postMessage API. The wallet container manages all operations involving the private key, which the DApp has no access to. This allows multiple DApps using Walley Wallet to operate with the user's single private key.
For users that are already acquainted with MetaMask usage, Walley Wallet delegates all interactions to that instead.
What's next for Walley Wallet
We want to add a backup service that users can optionally backup a client-side encrypted copy of their private key to. This will allow the user to also use the same key across multiple devices, and also provide reassurance that their key won't disappear due to unexpected circumstances.
We also want to improve the user experience and the anti-UI-spoofing measures to ensure that DApp authors can't easily fool the user into inputting their credentials into a malicious DApp.