Browser Plugin: Crypto Address to Crypto Handle Swap

See Simple Send which could be wrapped into this project.

The cryptocurrency industry is just barely getting started in terms of the percentage of people that use it regularly. As we’ve seen in other technology adoption histories, ease of use and usability are important characteristics of what ultimately gets accepted and used by the masses. Many believe wallet naming solutions like FIO, ENS, Unstoppable Domains, Handshake, CRUXpay, PayString, and protocol specific solutions like ADA Handles, Bonafida, or Bitcoin Cash Names play a hugely important role in this mass adoption story.

We can make our bets as to which one will “win” or we can put our chips on the table behind a solution that wins no matter which individual solution gains adoption.

The future of open source, permissionless blockchain technology is full inclusion and interoperability. The foundation for interwallet operability is uniquely positioned to bring about a vision to help make using cryptocurrency easy and joyful. If a single service provider supports all wallet naming solutions and, importantly, doesn’t need permission to integrate with each and every blockchain service provider, that is a strategy for global adoption.

Universal Crypto Handles are the answer we need.

Imagine: a browser plugin which analyzes web site content, searching for native public blockchain addresses, and on page render swaps them out for a wallet name instead. Instead of seeing 1BvBMSEYstWetqTFn5Au4m4GFg7xJaNVN2 on a coinbase deposit page, for example, the plugin would rewrite the display to show something like coinbasedeposit@stokes or coinbasedeposit.lukestokes.eth instead.

If plugins are a concern, one way to start could be to create some very simple libraries that do lookups that web app builders could drop into their project. For the initial libraries you could leave out the tasks that require a transaction being sent to a chain and just focus on lookups and reverse lookups.

Either way, developing a simple javascript "lookup" library for FIO may be a good initiative. Then other groups could add onto it. I briefly poked around and did not find a simple ENS lookup library. Seems like most of the libraries are built for integrators rather than the average crypto site that may simply want to do lookups.

In addition, it would provide additional services through a menu behind a small icon next to wallet names and native public blockchain addresses such as:

  • show native public address

  • show universal crypto handle

  • request funds

  • map address

  • register address and map it

  • register a new domain

  • register a new domain and address

The plugin would allow the user to pick their default naming solution. It could start as custodial (similar to the Alty bot) and migrate towards non-custodial (using something like the Edge wallet service) and eventually hardware only, depending on the amount of resources involved.

The plugin should support simple send via existing wallet linking standards. The SDK and APIs that drive the plugin will be maintained by the broader cryptocurrency community and made available for native mobile applications and exchanges to use as well.

Ideally it should be modular so that any new naming solution can be easily added to the system via a properly formatted pull request. Extensive bounties should be provided by each network to encourage solution development and maintenance. Middle layer solutions for caching wallet naming mappings would also be helpful and could be unique to each user or anonymized and stored to increase performance for all users.

Example experience:

User is shown a deposit address on Coinbase. The plugin notices the address, and displays an icon next to it where the user can view a menu of options. They select to register a FIO address for that domain or they register an ENS name (depending on which naming provider they have configured as their default). Future visits to the page show the human readable address after doing a reverse lookup to find the wallet name previously registered.


Comments from the initial document:

From Pawel: I think the security concerns with a plugin overwriting a public address would be huge obstacle top adoption.

From David: I think there can be ways to do this to reduce security concerns and I think there are plenty examples of crypto applications that have been very successful in spite of security concerns (e.g., centralized exchanges that are huge hacking targets).  So, we should not dismiss this idea just because there is some security risk.  Rather we should explore avenues to reduce security risks to an acceptable level.  For example, the plug in could identify when a user is on a page asking for a public address (e.g., an exchange withdrawal page).  Then it could pop up a box that prompts the user to enter the FIO Crypto Handle they want to send to.  The plug in then would resolve any entered FIO Crypto Handle and put it into the copy/paste buffer and user could just past it into the window.

From Eric: I like this idea and think that working with other naming solutions really fits the FIO mission.

From David: I really like this concept and I think we should pursue a full design of what a plug in like this could/would be.  Use that to scope out the level of effort required to build.  And, also, create screen designs that then can be used in some market research surveys of crypto users to feedback/input before we build anything.