Building with purpose, building for all

ETHCC 6 · July 2023 · 16:55

Arthur Gousset examines developer tools for building applications with a clear purpose and broad access. The speaker focuses on tools whose features support that approach.

Speakers

Topics

From ETHCC 6, hosted by Ethereum France.

Transcript

Army I'm speaking for Forever on the internet okay thanks for your time comment comment don't be shy um thanks for your time this morning uh it's a great privilege to speak here at ECC um I really encourage everyone who watches this in the future and who might think they're not good enough to speak here to really give yourself the kick apply I think it's a really great way to give back to the community so um highly encourage you to speak so my talk today is titled building with purpose building

for all and I'm hoping to speak about two user experiences that we have optimized for at cello and I think the thing that I would highlight most here is that at cello we like to really focus on the user first I think in Tech and crypto particularly we sometimes have a tendency of over indexing on our own understanding of technology and not empathizing enough with the end user so today's two features that I'd like to present will be from a user's perspective and I'm hoping to give you some technical intuition but I don't

want to be lost in the weeds but uh this is a workshop so if in the Q a section you have any questions I'm very happy to go into more technical details so if you're interested this presentation is available on GitHub at my username ECC presentation so you don't have to take any notes you can find them there forever and maybe show fans who has heard of cellu nobody yeah a few okay most people that's good yeah who has heard of the fee currency feature no that's great okay that's why it's called rediscovering the Cello's fee currency feature who has heard of social connect no one that's good as well

because it's just launched um so let's go I think we'll start with the fee currency feature and the intuition here is we really want to abstract away the concept of gas currencies because gas is something that we're intimately aware of in the ethereum and blockchain space but most end users are not particularly comfortable or you know particularly you know experienced with using gas so if you analogize by nnft for a ticket for example to coming to ECC when you come to the website ecc.io and you want to

purchase a ticket you connect your credit card I know it's free but just bear with me typically you put in your credit card and then you just pay in dollars or in Euros whatever currency you choose and you don't have to think about gas right gas is just something that exists in the blockchain space so similarly if we want to replicate this experience using nfts we want to presumably sell nfts using stable tokens like dollars or Euros so cusd or usdc but if you think about the end Journey you come to the website you connect your wallet which already is a bit funny and then you don't have usdc or cusd or any

stable token so you use an on-ramp and you connect your credit card and then you acquire dollars and then you want to pay for the nft ticket with the stable token and then you find out oh I need eth or Sello to pay for gas right because you don't have that currency at the moment in the token so you have to then make a step back and swap and then you are exposed to swapping and you're like what is swapping in the first place or you have to go back to your on-ramp and buy a small amount of eth and use that small amount of ease to pay for the transaction to pay in usdc or cusd and I think that experience is really too

cumbersome and so what very brilliant engineers at cello have done is allow users to pay for transaction fees in stable tokens and so what this means is that you can now buy an nft in a stable token like a dollar token or a Euro token and you can pay for the gas in dollars too so you can pay for gas in the stable token cusd or C Euro and the user never has to think about the concept of gas so we completely abstract the idea of gas currencies so this feature has really existed on cello since day one and but it was really cumbersome to use I'll be honest

from an SDK perspective and so what we have done recently and I'm speaking on behalf of many brilliant Engineers is um extend the support for this feature which I'll show you in a minute to a very popular SDK called VM it's owned and maintained by the people at wag me I don't know do you know wagme maybe not okay it's a very popular Library especially in the front-end development world and they are competing with ethers JS or web3js and their really Kick-Ass team so they kindly accepted our contribution so shout out to Aaron and our contribution

essentially was to allow developers to pass an extra argument in the transaction object and specify a fee currency and so what you can do is if you build an nft selling and buying website in which you want to sell nft tickets to ECC you can allow users to purchase nfts and pay for the transaction in the fee currency specified at the bottom so this is just a snippet I wanted to give you intuition but the full demo is available at this URL which is also where the presentation slides are

so I think that's what I wanted to say about this a few technical details I honestly I just want to give you some intuition here so nothing too detailed but this works with wallet connect V2 so if you sign a transaction object and pass it through wallet connect V2 the fee currency field that exists on the seller blockchain will go back and forth between wallet connect on the bridge and a contribution to VM if you're interested is allowing any blockchain to add custom transaction types that are compliant with the eap2718 but uh it's an anecdote so if you're interested find me later

um or ping me on Twitter I'm happy to help you out so I think this is it for the fee currency part and the second part of this talk is social connect and so here I want to focus on a different part of the user experience which is now that we have abstracted the idea of gas and the idea of paying for gas in a native token we want to really abstract the way the idea of hexadecimal addresses because hexadecimal addresses might be a very convenient way to build on the blockchain at the implementation layer but from a user perspective it's it's really unconvenient it's not particularly descriptive it's easy to mistake

and so the experience we're really looking for is one where you can use phone numbers and email addresses so maybe show off hands who has used venmo cash app revolut n26 yeah okay quite a lot of you so that's the experience we're looking for so to show you at the moment when you go to metamask this is the screenshot I took yesterday you can see that if you want to send a payment you have to put in this cumbersome hexadecimal address and typically you ask your friend on WhatsApp or telegram or you stand next to them and scan a QR code and this is Ledger's experience um this is really inconvenient for end users right so here is an example of a

very talented Builder called Benoit he's based in Brussels and he built this wallet called kala using social connect and the experience that we want to enable is very much like that of a revolute or n26 or cash up so on the left side you can see a list of contacts you know you download the app you connect your contact book and you've got all the phone numbers and then you decide that you want to send your friend Adriana in Argentina some money you know ten dollars and so you select her phone number which you already have and in the second screen you choose the amount and then here's a Nuance that I will explain in a minute the application

realizes that Adriana has connected multiple wallets so imagine that she might have a metamask wallet or she might have a ledger wallet or she might have a rainbow more wallet or a valora wallet on cello and you can choose where to send it so the user chooses and the payment is done and so this is actually live which is very exciting and I want to show you a demo so let's see so in this end-to-end experience we start in another app called Libera which is a wallet for Ubi beneficiaries in Emerging Markets it's really exciting so imagine this is a beneficiary in

Argentina and they opened the app for the first time they type in the phone number and here they get OTP code type it in to verify the phone number and at this point their phone number is verified so we go into the other app this is color and Bob wants to send Adriana ten dollars as we've just seen and so at this point he chooses to send it to her Libera wallet there is a short confirmation and we go back to the other wallet we refresh and we can see the payment has arrived so this is the experience we want to provide right

this is user-friendly design and this is available today on cello this is very exciting we're hoping it will be on ethereum and polygon and other chains soon we're currently working on the technical details for that but this is available on cello today and I don't want to waste too much time but I want to give you a little bit of technical intuition on what's going on behind the scenes so on the left you see Alice she downloads the app types and her phone number and this is the Libera up with which we started and she verifies the phone number with a one-time password and then what we don't want to do is put the

phone number on the blockchain plain text right that's terrible for privacy so what we do is we obfuscate the phone number and we obfuscate it with a multi-party computation I'll just put a little footnote here I don't want to uh be very specific about this but you can meet me later or ping me I'm happy to explain oh this which is this green square which is what obfuscates your phone number is really the Crux of our protocol and what we've designed here essentially you give a phone number it gives back an obfuscated phone number and then what goes on the blockchain is the obfuscated phone number so here's a little bit of intuition from

a mapping perspective so Adriana has a phone number and it's mapped to an address and it has a balance um quickly from the payment perspective which was the second part of the demo we see Bob he wanted to send Adriana ten dollars or five dollars in this case using her phone number the application looks uh try to obfuscate the phone number so same step as before and then it looks for the obfuscated phone number in the mapping which you can see at the bottom left here and then it finds the address and because at the bottom layer As We Know everything happens between hexadecimal

addresses on the blockchain the application has both addresses it has Bob's public address and private key it has Alice's public address which is the recipient and now on the application layer it can just make a transfer but from the user perspective all they know is they typed in a phone number so little anecdote here you can see Adriana has two wallets she has one with valora which is a wallet on cello and one with Carla and so what our protocol allows you to do is to give the user an option so you can say oh I recognize this user has mapped their wallet to multiple phone numbers um oh no has mapped a phone number to

multiple wallets which of their wallets would you like us to send the tokens to and so you can give them an option which is pretty exciting very short footnote um this is not comprehensive you can find a full demo recordings and examples that social connect.dev but the idea is that you essentially write mappings to a Smart contract which is the first Tab and that you read from the mappings in the second step so at this point I want to encourage you to participate in the hackathon which is happening next week it's a at each Global and there's ten thousand dollars in prices for building with social

connect you can learn about social connect and everything I spoke about at socialconnect.dev and you can find me at xerx Arthur XYZ so this is my talk I'm curious if you have any questions thank you very much don't be shy any questions yeah places they have the option of you have to you have to tell them which of the wallets you want to put it into or can you make a preference saying you know like anyone that I use social connect with like I want them to go into this wallet you don't have to have that

extra interaction you don't have to that's really that's a great Point yeah so we give you as a developer complete freedom to design user experiences so you might say I only want to send payments between users of my wallet so I don't want to recognize any other wallets similarly you could say if a user has multiple wallets always send it to the one where the latest transaction happened so there's really a great amount of design space here you can see the little question mark which is an idea we've had with Benoit where you might display the latest timestamp when did they do a lost transaction what's the last balance how many nfts do they have and so if you get

a bit of context which maybe gives the user more you know confidence that they're sending it to the right address even when I use ens for example I wonder do they still own the ens you know or has it changed um yeah complete Freedom you can give the user choice you can be very prescriptive it's completely open yeah thanks for the question any other questions no don't be shy all right thank you very much thank you [Applause] [Music]

[Music]