Trend shift of wallet technology at #ETHDenver

makoto_inoue
wearekickback
Published in
9 min readFeb 22, 2019

TLDR; The rise of competitive cross chain is shifting the trend from third party wallet app to embeddable wallet SDK and led to the creation of a “Universal Wallet” during #ETHDenver.

Strong push on Dai, xDai and cross chain Dapp

Austin Griffith created “BuffiDai”, a xDai (PoA based chain where Dai is its native currency) based ERC20 community token which was used throughout the event to buy foods and drinks. Some companies were selling their swags at their vendor booth and later donated for charity.

When I first heard about xDai at #ETHBerlin, there were some skeptical voices around Ethereum compatible chain which are only governed by several authorities. It is highly unlikely that projects which heavily depending on the notion of decentralisation (such as Aragon) moves their entire stack into xDai network but ETHDenver, Burner wallet, and Bufficoin proved the use case of using xDai for POS purpose where transaction speed and cheap transaction cost matters. xDai will be here to stay.

It was probably the first hackathon where people used Metamask less to interact with Ethereum. This is because using xDai from Metamask requires you to manually setup xDai custom RPC endpoint (read here for more detail).

Whereas Burner Wallet (which Bufficoin wallet is built on top) customised their UI which allows people to exchange coins in different networks without mentioning confusing jargons like “Custom RPC”.

By embedding wallet capability within the Dapp itself, Dapp developer now have a power to customise the UI to fit for their purpose.

Trends on embeddable wallets

Throughout #EthDenver, I saw several projects which provide embeddable wallet on dapps. Portis.io was the first one I heard but now we have several solutions.

Fortmatic is the new kid on the block which was the main sponsor of the event and released their product during the weekend.

Their killer feature is to allow users to create new wallet with a phone number, eliminating the need to download long mnemonic or creating password. What I was impressed, however, was the ability to be able to specify the network by the Dapp.

This seems subtle but a big UX improvement for Dapp developers as we no longer need to display the annoying message of “Oh you are connecting to the wrong network”, which we do at Kickback and annoys hell out of me.

With Fortmatic (and probably can do with any embeddable wallet), you can directly connect to the network of interest.

Great power comes with great responsibility. The next question dApp developers have to answer is “which solution?”.

While we were relying on the account management to third party wallets (Metamask, Status, etc), how users connect and manage their keys were out of our concern. What we had to do is to show links and let users to choose.

However, these embedded wallets are specific to each dapp so we only need to select one solution. And once selected, user’s address is tied into the specific provider so users have to create new account when these providers go out of business or we found out that one solution is not good and need to switch over to the other.

Then, shall we support all of them and let user to pick like this?

Umm, I bet users will wonder “Which one?”. This is not only because these players are new and have less brand recognition but they are more of “b2b” solution which should be embedded and their brand should not really be exposed to the end users.

Universal login

Among several providers, Universal Wallet has a slight advantage because they make use of ENS domain so it is possible that users could recognise accounts associated with more popular dapps, such as Aragon, Gitcoin, and Status).

This gives a similar resemblance to the web2.0 style oauth where you pick the brand you can recognise and trust.

I said “a slight” because these dapps own ENS domains and create subdomain for their users but they haven’t integrated with universal login, and it will take long time for them to do so. Status is an interesting one as they are the wallet themselves so more of a competitor. However, there is no reason Status do not integrate into universal login so that they pivot from “wallet provider” to become the best crypto messaging app (and users don’t have to type password on their device any more). Oh, also I work at ENS so my opinion is highly biased so take this with a pinch of salt.

The birth of Universal Wallet

Universal login brings a lot of bells and whistles (multisig smart contract as a vault, multi device key recovery, etc) and meta transaction is one of them. Metatransaction is a technique to abstract the notion of “gas” (the usage fee end user has to pay to miner) and delegate it to someone so that new users can interact with Dapp without requiring the gas. It is an idea pioneered by Austin and Burner wallet also uses the technique.

I must confess that I hated the idea. When you say someone pays the gas, that usually means the dapp itself. The advocate of the metatransaction says it is a necessary marketing cost to acquire users. For me, the whole beauty of the gas cost is that it removes the “zero to one” problem which “Freemium” business model of web 2.0 brought. People are so used to get their service for free and only a fraction of users pay for the premium service. By having gas, it is educating users that “everything cost something” and also it makes easy to add micro fee.

Ok, even if I am convinced to pay for the initial gas cost as an acquisition cost, when is the time for users to actually start paying for our service? Getting through the hurdle for acquiring the ETH through exchange with KYC is way harder than paying by credit card. Some application like games makes sense not to charge for users until users spent so much time and energy to acquire their digital asset but it is not feasible for Kickback when we ask meetup participants to commit ETH to RSVP their event to put some skin in the game.

With these reason, I only wanted to integrate with universal login after users buy ETH through payment providers like Wyre.

ETHDenver is a great place to meet all the key players in one place.

Together with Marek Kirejczyk (the founder of ETHWorks which implemented Universal Login)and Kyle Bryant(one of the contributors of the Universal Login SDK), we created a solution to prototype integrating Wyre and Universal login using Counterfactual deployment technique with create2.

This technique will allow users to fund their transaction gas in any tokens eliminating the problem of the general meta transaction pattern where someone (often the Dapp) has to substitute the gas cost of the users. Combined with Dai, this technique could hide Ether completely from the eyes of users. It’s yet another subtle but significant UX improvement.

Throughout the ETHDenver, the members of MakerDAO were competing each other pledging (or trolling) for “WHEN DAI” to me.

One of the reasons we haven’t yet to integrate was that converting to DAI is yet another extra step (Mariano Conti is the only one who had to convert from DAI to ETH to RSVP on Kickback) to use our Dapp as well as explaining DAI and ETH will be the extra UX nuisance. Now that Wyre supports direct conversion to DAI and metatransaction allows users to pay gas in DAI (or in any token), we can get rid of the word “Ether” completely from UI point of view (and also replace the horrible hex decimal with ENS as an extra bonus).

create2 is something I knew nothing of until I came to ETHDenver. James Young is the pioneer on this field with excellent blog posts explaining the implication of this new change and it was great that he popped over our desk constantly to have a chat.

Special shout out also goes to Chris Whinfrey from Level K.

He was initially in our team (probably for the first few hours) to lay down the foundation of the smart contract, then moved to different team, but he came back from time to time answering any questions I had.

One thing I learnt about create2 is that it’s a very generic way to use the code. The one we used actually doesn’t have any of our app specific logic. I spent the majority of my time writing tests to understand the logic. I expect that a library will soon emerge which allows users to use this feature without much difficulties.

The pitch

I have attended to many hackathons but the one with this scale was the first time. It was as if we were in the speed dating (not that I have been there ) anxiously waiting for judges to arrive. One of three judges were E.G from INFURA who I knew well so I told him “Ok, now easy, just select us”, but he replied saying “no, it’s not how it works”. Another judge (who I forgot the name) was very critical and correctly pointed a few weaknesses (eg: who pays for ens registration), so we honestly answered that it was not implemented and Dapp may still have to compensate for the gas.

We also had lots of missing bits and bobs and far from deploying to Mainnet. We did all the demo on our ganache in memory db and also had to use fake ERC token to simulate the part Wyre was sending DAI. The smart contract part had nothing we can demonstrate so we simply showed the smart contract and test code and explained how they would interlink.

The Hackathon veteran Kyle told me “to be selected as a finalist, you have to have your own domain and deployed to Mainnet”, so the fact that we were selected to the finalist was taken by surprise. It was only 10 min before the final pitch began by that time. I quickly rushed into the “Chill zone” and had to wake him up. I was in a mild panic finding Marek so I had to resort to twitter.

Luckily our turn was quite down the line so had plenty of time to prepare.

Pitching in front of the huge audience is the one in the life time opportunity so that was a great chance to promote both Kickback and ENS which I work at.

I even created a special Kickback lunch event while waiting for the pitch so that I can use it to explain why we needed this universal wallet solution to begin with.

Marek was super nervous right before going to the pitch. In addition to the pressure of giving presentation in front of the audience, we were enquired by the judging committee about which part we built, as the submission was just a branch within the Universal Login SDK. So we were reminded to be very explicit about which part was part of existing SDK and which part was part of the hack.

We are truly grateful that we received “The spirit of Buidl” award.

Our Kauri entry is here. It’s super rough on the edge and far from being released as official but we hope that we continue to work on it to be able to use it for real life applications (especially for Kickback).

--

--