Better UX for non custodial multi-chain wallet

ETHCC 5 · July 2022 · 19:06

Vidal Chriqui shares Verso Wallet's lessons from onboarding web2 users into a noncustodial wallet. Topics range from localized BIP-39 word lists to gasless transactions and multichain user experience.

Speakers

Topics

From ETHCC 5, hosted by Ethereum France.

Transcript

hello everybody thanks for being here my name is vidal i'm here to share about the experience we gathered developing verso that is a non-custodial multi-chain wallet specialized in evm blockchains so i'm working in this space since full time since 2014-15 so really i enjoy the conference especially after two years of kovids and i see a lot of new faces and new lot of young people so so we're really glad to be here so i worked mainly

in in at the beginning in bitcoin technologies then i saw the birth of ethereum the the dao so i experienced all this this era and i worked a lot with ico in tokens creations and more recently i'm working with uh verso verso is a non-custodial wallet uh so real the the real value we try to protect is the freedom of users so really that's the biggest value we really want to push forward because we believe that the point of crypto is not c defy it's not a

centralized finance it's really about protecting the freedom of users so we really want to to to push forward and to improve all uh all topics related to self-ownership self-custody still without compromising with ease of use so uh yeah because the goal and our mission is to onboard more users uh i will not dare to say uh next billion of users but more users to crypto and to its benefits so if you speak to real people not conference but really people outside in

the street that doesn't get the crypto people are really they will try to to to get into a wallet first i'll just give some examples for instance the the seeds phrase yeah the seed phrase in english for us it's easy because we we all speak at least our language our mother language plus english but the word in english is a nonsense because for a current guy it's not it's not easy to write a latin symbol so so so it's a pain point a lot of other pain points

when they try to to make a swap up the approval people don't understand and don't get it what is uh approved okay thanks um yeah another kind of area of problem is the gas for yeah first the the people don't get what is gas and even if they have a feeling of what may be the gas they don't know how much gas they need and they don't know what uh gas to buy and where to to to get this fuel some other area also of of of concern is what i would call the spam tokens especially for instance like not in ethereum because

the gas is too high but in polygon if you have if you open the polygon wallet you will be overwhelmed you will have so very often more tokens that you receive that you don't know what is it i'll give an example you receive a token called zero gift dot io so you you want to go to xerogive.io you sign a transaction and then you don't receive the gift that is promised but somebody is emptying your wallet so so it's another kind of experience that is really bad so i i will not be able to to focus on everything but for this conference i've chosen three topics that we covered i'll try to explain how uh

what how we are solving it and to give because it's a technical audience to give how we implemented the solution so the first one is about the seed phrase seed phrase so uh just a reminder seed phrase even in ethereum comes from a bitcoin standard that is called the bip 39 so normally uh normally a private key is uh is 128 bits that are randomly generated uh with a really normal with a normal and to full entropy and the bib 39 is just a way to display this 120 bytes

in a human readable way so uh i assumed uh yeah most of people even if they don't know the standard they experience what is a 12 word seed so i actually it's 11 words but and the last word is is for a checksum so what what is usually unknown because most of the people don't know is there is a substandard in bip 39 that is called the localized world list so so here you see in the github of the bib that we have a dictionary of 10 we have 10 dictionary in 10 languages so it's a korean spanish french etc and uh and from this uh so we they give

the equivalent of each word uh in in other languages so i will if we see here on the right of the screen so the dictionary is a is composed of 200 and 2048 words so so so normally the the key is divided uh in in 11 bits and those 11 bits are encoded by uh one of the uh the words to the one of the two thousand and forty eight words so when you generate this we take the

the it's index number five we take we simply take so i translation of the word because for to take in your translation you will lose the entropy and some somebody will so

okay so here what i explaining see so if you want to visualize a key so we we just translate the words and when you want to import what we do is simply if someone is importing 12 words in french we detect that he's using the french dictionary we we find the english equivalent and all the library that you are you create the private key from the memonic so you can do it from the english words so how how it look likes how does it look like in our wallet here at the at the left you can see 12 words yes you can take a photo because it's a private key

so normally there's some money inside this wallet and whoever is fastest will get the money so those 12 words in english and and you see how people can visualize their their their 12 words in other languages so unfortunately this standard is not implemented well i think that in my knowledge we're the only wallet that implements this sub standard so so if you import your words in english in french for instance you you can only use the import import it in our wallet but but we offered of of course the option to import them in english in case

you want to import your city in under under wallet so that's very interesting and that's very for users for big issue but if you were but for instance for we have we have a support email if you are a spanish or a korean guy the the the localized seat phrase is really uh something that uh changed the experience okay another area i want to to discuss because we have an in-app swap in our wallet is the ux4 swap so i mentioned it

already in the introduction yeah people don't really understand what is unlocked what is uh approved so that's that's that's very uh that's a bad experience for normal people because they're here to swap and they don't know what is to unlock the other issue is really gas because they don't understand what is gas and we solve it because we introduced the the uh sponsoring on the on the server side and one click a proven swap so how do we implement it here is the documentation uh the the developer documentation of paraswap how and it gives you all the parameters

when you try to build a transaction of swap optimize and optimizing the routes there is a standard that maybe not everybody is aware is what we call the permit so permit is most in most tokens you have a permit function so you pre-sign an authorization and then it allows you to make the the the approval without consuming gas so in our wallet when you just click on swap and then it does the permit plus the swap transaction the server side layer is for people not having gas so we realized that a lot of people when they top up in their wallet the top-up usdc

the top-up wbtc so they don't have gas when it comes to the swap so so what we do you see on the left if they submit their transactions they don't have gas it will be rejected so what we are doing is instead of submitting the transaction directly to the to the to to a node to a blockchain node we submit it to our layer the rail layer checks makes a lot of checks then number two he sends uh gas to the wallet so he's submitting a transl a transaction let's say to polygon network uh in step three it checks that the gas has been received and then now he can

relay the transaction because now that he can he submits the transaction the transaction of the user that is a swap uh since now that the the the wallet owns some gas the transaction will be okay that's very important why we don't choose meta transaction because meta transaction is meant for recent tokens most of the tokens that people are using like even wbtc usdc contract they don't implement all the meta transactions feature okay last topic i know that are a few minutes left it's about token management another really pain point that the user have is that they need to uh

i took screenshots for all the other popular wallets uh you need to activate the token in order to be displayed if you buy usdc you need to go to the settings and then activate usdc or even if you're a developer on your metamask you have to configure the usdc on polygon you have to find the smart contract address and require for the display that's really a bad experience for people for the spam tokens here i took a wallet and i show you that's funny you have more tokens spam tokens than real tokens that the user bought so simply what we introduced you see the screenshot of the same wallet it's cleaned what we implemented is the auto

discovery why you must wallet don't auto discover a token it's because if you check the api of the rpc rpc the rpc specifications no it doesn't give you the list of the token of a wallet so you can you you must know that you can require the balance of a specific token it will reply or not but you cannot discover all the tokens so that's why most of the tokens don't implement it so there's a lot plenty of solutions so i don't have time to detail why this one but we use covalent api that makes uh that offers this option to discover all the tokens of

of a specific wallet by the way it also gives you all the nft association to this token so we implemented using this api we implemented our own database of spam tokens so maybe we keep this for the questions so i'm running out of time the last word of course is yes we are working on a lot of problems i just chose i've just chosen some some of them but to open the conversations there's a lot of problem to be solved around the seed phrase backup around the defy balance if let's say that you

if you if you if you if you deposit your your usdc in a yield protocol like you're on beefy finance it's not in your wallet so your wallet will display zero because it's outside so what do i we need to work about the defy balance but there's plenty still of a lot of challenges to be solved and we are working on it our and final word i invite you to download verso verso is on app store and google play so you can just give it a try import your existing wallet and and exp and have a new experience of your same wallet because uh yes just import an existing wallet and so that it's uh it's easier you so

you can visualize most of new users don't know but you can have the same wallet you can exp in different software uh you don't have to create a wallet for each app you install thank you very much for your time thank you for being here in the this hot at uh it's in this very hot temperature the room and i'm open to any questions [Applause] so okay one question um yeah i just had a question about the um spam filtering like like when you filter tokens how do you sort of decide what's

what's what in terms of spam and who maintains that list yeah okay so well we have um it's a uh currently it's semi-automated um well we have uh we we have an ap we we have a server-side uh database that crawls all the new tokens uh that co that are referenced in coin gecko in coin market cap uh maybe you don't know but in coin gecko you have all the smart contract addresses of all the tokens so so the first filter is that if if uh if a token is not the smart contract of a token is not either in coin gecko either in

in uh in coin market cap uh we have a manual inter where we have an interface where as an administrator uh we well we have we see the token that we see in the wallet of our users and we can check them and check it manually and usually when it's not in coin market cap or coin gecko it's a spam token we check also the who are the creator address of the token the date of creation of the token and usually when it's recent when it's less than two weeks and it started going echo it's automatically uh filtered so we filtered this to the user so that they don't they are not bothered with spam tokens

right okay can you quickly explain how uh the relayer works uh if for the users to really i mean uh how it's relaying users transaction which you just showed in the slide uh yes so so the the principle is very simple is that uh um we're acting as a proxy node for the the blockchain network uh we just analyze the transactions because we don't want to sponsor the transaction of everybody so after some analysis we just send gas to the to the wallet

and when the gas is received we just relay this transaction so so instead of the wallet directly submitted to the network it's our server that's submitted to the node after uh giving the gas and being sure that the gas has arrived because we optimize the gas so sometimes it can take five blocks or well we don't we don't do it in one block so so we just be sure that the gas is received and then we submit the transaction so there's a lot of complexity because we need to compute the gas correctly and to anticipate what is the gas cost intend 10 to 30 blocks so there's a lot of complexity but the principle is simple we're just giving you guys um and this works for all the tokens you

are deducting that gas from users incoming amount something like that yeah thank you thank you okay thank you there is not more time for a question [Music] thank you