Beyond theory: Real-world smart account applications that users love - Antoine Sparenberg
EthPrague 2025 · May 2025 · 21:08
Antoine Sparenberg demonstrates how Argent has turned account abstraction capabilities into features users actively engage with. Through live demos of production implementations, the talk shows how smart accounts, paymasters and session keys remove real user friction, and shares usage metrics and user feedback from those live features. Presented at ETHPrague 2025.
Speakers
Topics
From EthPrague 2025, hosted by ETHPrague.
Transcript
[Music] It's not that easy to find very good applications that are made possible by smart accounts or um that have a much better UX thanks to smart accounts. And so that's why I want to showcase today how we use smart accounts to build what I believe is the best-in-class crypto card. So again, crypto cards, it's also an old product. uh it's been around for some time and you know I try to categorize the uh different iterations in in three um in four categories here.
So first one is centralized exchange um issued crypto cards. The best the the the most well known is crypto.com. So there of course it's not self-custodial. Um you rely on a on a on a custodian. Um there is some kind of account recovery of course because there is this um this centralized entity that can help you recover your account if you you lose access to it. Um in terms of card type, it's more of you know what I call a topup debit, right? Because you have an account that is linked to your crypto card and you can only use that account to um basically feed that crypto card and so you need to tab it up from time to time so you can uh use the card. And
when we look at crypto.com, it's actually very ugly because it's not even a crypto card. It's a fiat card. So you need to if you have crypto on crypto.com, you need to swap it to cryp to um fiat, send the fiat to that uh dedicated account and then you can spend the fiat. So you don't even spend the crypto and of course no interaction with defy. Then holy health uh came um they did a you know something that is already a bit better. So um I mean we can we could discuss is it self custo self-custodial or not. The thing is with only held you have an EOA account that controls your only held account and um um basically if you lose access to your EOA you also lose access to that
account. So there is no account recovery again it's top up debit you need to top it up um you know from time to time no interaction with DeFi. Gnosis pay um arrived. They did something I think you know great um and they went all in on self- custody. So uh great um you know uh you use safe accounts with that. There is account recovery. I I think the standard setup is again that you have an EOA that will uh control your your account. So if you lose access if you lose your key your keys to the EOA you also lose the keys to the smart account.
But um from what I know most you know more advanced users they can actually add one more owner to um to their account and that means that there is account recovery. Much better but still it's kind of still top a top up debit cards. Um so you need to top up that account. You cannot top it up with any type of um tokens. You need to top it up with monerium tokens. If you send something else it's not lost but it's difficult to get back. And you cannot use that account in defy or I mean there is like a few native integrations but it's not like you could use that account as a daily account. And then there is this last iteration something that we released uh a few months back. It's a self-control account based on Argent
accounts on stacknet. You have account recovery as a standard option because all argent accounts come actually with a cosigner. So if you lose access to your first your main signer, you can um authenticate with the cosigner which is the argent back end and then um get um your account recovered. It is a fully debit card because your uh card is actually plugged into an account that you can use wherever you want the way you usually use uh crypto accounts. So you can uh you know send money to people, you can uh interact with DeFi protocols, you can interact with all kinds of protocols. It's a real debit card and you can also use it as a credit
card because um you can access DeFi. So you can lend ETH, lend uh Bitcoin and then borrow USDC and actually send uh spend that USDC with the card, meaning that you actually have a credit card. So very short commercial break here. Um you guys can have a 30% discount on um the Argent Metal plan which is the premium uh plan that we have. Um it's very easy to do. You just need to get Argent mobile from your app store. You can do it uh manually or scan the QR code there and then you need to send me your uh email address that you will use at on boarding on telegram at onto_ent. I will show this screen again
at the end of the presentation is just so that you have time to uh go through the onboarding flow already. So, oh going too fast. Um, okay. So, I think you know in order to understand how we managed to use smart accounts to really build this experience that you would have with your favorite, you know, fintech or neo bank um it's important to understand the architecture of a traditional card payment first. When you do a card payment, there is mainly three big players um that came into that come into account. So the merchant bank which provides the card reader, the small terminal that you have, the payment network, very often it's Mastercard or Visa, which will uh interface between the merchant bank and
the card holders bank, which is the bank that provides the card. And so when a customer goes to a shop um you know use the card taps the card on the terminal um this is what happens. So there is an uh authorization request that is sent from the merchant bank to the card holders bank and the card holders bank will run a few checks. So um does the user have enough money to pay for the payment? Um is there anything you know to worry about uh you know fraud um this kinds of stuff. If everything works well, then there is the authorization is sent back to the merchants bank um and the payment actually happens or at least it happens from the user perspective,
right? From a user perspective, you tap and then a few seconds later uh your payment is accepted or declined. But in reality, in the background, the payment takes multiple hours up to multiple days to happen. And so the card holders bank actually needs to hold the um the money of the of the customer um on their account for a few days because what happens this happens. So clearing happens clearing can happen a few hours um up to a few days after the the the payment is actually done. So this is the merchants bank that is um aggregating multiple payment authorizations um and then basically calculating the balances
and also the payment network deciding uh how much fees they need to take on on on these payments and actually settlements. So that is the moment when the money actually moves that happens you know much later and there with settlements so the card holders account is debited and the merchant will receive the money minus the fees from the um payment network which is usually pretty pretty high. So this is a traditional car payment. I think when you look at this um it's very complex. It takes multiple days. you already understand why stable coins have a bright future, right?
Because they basically undercut all this. But so when we come back at the cards, um what we want to do, right, is to get rid rid of that card holders bank and replace it with a self-custodial account, right? Um and so there is a few questions that pop up in mind like how do we do all this with a self custodial account when you don't have a centralized entity that has access to this um to this account and to these funds. So a few questions are how to um interface between the traditional payment rails and self-custodial crypto wallets. how to prevent people from double spending because I could go to a shop, buy the, you know, latest iPhone and then I know that settlement only
happens a few days later and I could try to get the money out of my account in the meantime. Um, so this has to be prevented. Also, how to enable seamless settlement because with um self custody usually every transaction needs to be signed u by the by the user and of course that would be very bad UX. if you need to go to the store, insert your card, tap uh type your your pin and then also you need to um confirm transactions on your phone, right? So, how can we do this? There is um a solution that has been around for some time and that's the reason why we have so many top-up accounts which is that crypto card provider they will actually insert a custodial topup account between
themselves and the self-custody account, right? And so um they have full control over that account. So they can freeze the funds on that account. They can move the funds. Um and that means that users need to top up that account. Um so it's bad UX. It also means that the moment you top up the account, you give up on the custody you have on on your own funds uh even though you haven't spent them yet. Um so we don't want this. We think we can do better. Uh we and we think we can do better using smart accounts. So to answer the first question, how do we bridge bridge these two worlds self-custodial accounts and uh you know old-fashioned um you know u payment rays we have seen very complex takes a lot of
time so we use this technology provider that is called Kulipa and Kulipa will take care I mean they know the oldfashioned u payment system very well they will take care of all the interactions with these guys they will make sure that u AML um like regulation is respected that They will do the fraud monitoring. They will take care of um authorizing the the payments of clearing of settlements. Um and then Argent takes care of everything that is happening on chain. Uh and more like the the smart accounts um aspect of it. Then how do we prevent double spending? Um we do this using the cosigner. So as I said argent accounts they by default come with two signers.
So there is the um main signer which is the user signer the client the wallet and then you have the co-signer which is ajent back end and that cosigner will sign will cosign every transaction. So for a transaction to be validated and to be executed on chain, it needs to be signed by both um both signers. And so when we look um at how it you know looks like now um in the the payment scheme we have. So Kulipa will receive the payment authorization. They will check the user's balance on chain in their in their argent smart account.
If there is enough money they will authorize the payment and then from a user perspective it's done. Uh you know you have paid and then they will use a cosigner to enforce a hold on the um on the tokens that um needs to be spent right so um that means that the co-signer will check they will ask Kipa for permission before validating before signing a USDC transaction. So, let me just take an example. You go to a store, you have 1,000 USDC in your account. You spend 200 USDC. Uh, and then you want to move your money the the money you have on chain, you still have 1,000 USDC on chain, right? Because settlement will
only happen in a few hours. Um but before letting you um you know move that money on chain, the co-signer will check that you actually don't try to spend the money that is supposed to be used for um for the card payment. So you will only be able to use up to $800 800 USDC on chain. So that means there is no double spending. Users can spend USDC that is on hold. Um and also that the account can actually be used on chain uh in DeFi just as a usual account that you would like to to to to use. Um this cosigner does not check what you do with other tokens.
It's only USDC. The Argent card is uh doing settlement in USDC. So if you move around uh ETH, if you move around any other ERC20 token, this won't happen. It's only on that on that USDC. How do we ensure seamless settlements? Um there we use session keys. So what is a session key? A session key is basically an authorization that is granted by a user to a specific application to um make transactions on their behalf. And session keys they usually have a scope that is very limited usually limited in time but also limited in uh the methods that you can call and what you can do. So you can uh call specific contracts. You can uh um
you know like transact some um some uh tokens up to a specific amount or up to a specific gas limit. Um so it's very restricted. The way session keys work in the argent accounts is that the DAB will um generate a key locally will send it to the user for approval. As I said, the cosigner also needs to cosign. So, um before cosigning, we'll run a few security checks and everything. Um and then that signed key is sent back to the DAP. And that means that um from that point, the DAP is able to send transactions within this limited scope on behalf of the user. And so we can
actually remove the user from the equation. Um and the DAP just need to needs to interact with the Argent back end and the smart contract onchain to uh validate and execute um transactions. So how does this work now here with this this this card account that we have? Um so Kulipa has received uh you know authorization request um accepted the payment is holding the funds um and then on a regular basis Kipa thanks to a session key will be able to pull USDC from your account to match the uh payment that you have done before. Um so this is done in a transparent way. The user does not need to sign anything. It's you know just
happens in the background. Something that is important here is that the session key only has access to USDC up to the amount that is defined by the user. Right? So there is a max card spend spendable amount which is exactly what you have with uh you know traditional um um cards, right? Where you have this limit that you can spend that usually want to up a little bit when you go on vacation because you're going to spend a lot. Um and well user is in control. So the user can also remove the session key when they want. The only condition is that before doing that they need to settle the um outstanding amounts that they have with their cards. And then there is a byproduct of this system is also better privacy because you could take your Argent card um go shopping for a full
day do 25 transactions but the settlement transaction is only going to happen at the end of the day and it's going to batch all the transactions that you made during the day. Right? So uh you might actually have 25 card transactions but you will only have one onchain transaction at the end of the day. So that means that people um that are looking at the blockchain won't really be able to tell uh you know what you you might have bought or how many transactions you have done with with the card. They only see one transaction. Great. So just to to sum this up um what are the key benefits of um this approach? So um no need to create an extra card account. You have a card plugged into an account and you can just use that account normally. It is
self-custodial. Um of course with session key you u authorize you know kipa on a very restricted um um set of methods and and and um and things they can do. Um it's built on starknet so it's very scalable doesn't cost anything. It's a pity. I was hoping we would have this implemented by today already, but we are also working on a pay master. So that means that you will be able to use this card without having uh at any point the need to have ETH in your account to pay for gas fees, right?
So this is also what smart accounts uh unlock. And then there is this partial onchain privacy. Um that is also a nice addition to it. So thank you. Um, I hope I convince you that with smart accounts, you can actually build great UX and UX that is um, you know, at par with what we can find in the traditional world. Um, again, you can get a 30% discount on the Argent. So, this is the premium uh, the premium plan that that we have, meaning that you only pay $84 and not 120. If you think this is too expensive, um, there is actually a very nice cashback program. So the card pays for itself in like a couple months. If you still think
this is too expensive, um we have a light like a free tier that is coming very soon and you can um follow Argent on social media to um to to have all the news and I'll take the questions I see there in front. So what happens when you have a refund or a chargeback? Yeah. So actually there is all kinds of very very difficult types of payments transactions. So typically also when you go to uh a fuel station uh you give an authorization for a bigger amount that when you what you actually um spend right so in the US when you want to tip uh you have the same kinds of stuff
because you first do the payment and then you tip later. So all these um you know edge cases or special cases are um supported by the card. So you just received the money back um in USDC. Yes. Yeah. Is it possible to apply for this? And what are there any geographical constraints on residents of different country? Yeah. So I mean if you want to apply for the card you can just send me a message on telegram or just come and find me. Uh and is it uh at the moment? Yes. Yes. Um but very soon opening but uh I'll come and talk
to you after the talk. Thank you. I just signed up and send you a message. Uh I had a question about the session key. Yeah. Uh so if I understand correctly, if it's non-custodial for anything to leave my account, uh my private key has to be involved, right? And now you introduce this idea with the session key. I'm kind of new to Aragon Argent. Uh but I'm just wondering is that the restrictions on that key, are they placed onchain or are they placed on the uh argent uh side of the wallet like the non-chain part of your wallet?
So your private keys um never uh let me just um so here um so your question is uh there's a session key that has limited access to my account. Yes, exactly. Are these limits enforced onchain or offchain? Okay. Okay. Uh very clear. So it is enforced. Okay. The model at the moment uh is enforced offchain by the Arjent back end. It will be enforced on chain as soon as possible indeed. This is a very good question. Okay. So theoretically if somebody hacks your back end they would
have access to my funds. Theoretically I know they won't but at the at the moment yes at the moment yes but again up to that limit that you can decide in the app. Right. So the session key is only covering a limited only USDC and only a limited amount which is the monthly limit um that you decide in the application. Yes. But since that is not onchain that means that that can be edited in your back end because the session key is generated there and the rules are set there. Right? There is an onchain component. It's a like hybrid type of session key. Okay. I'm I'm not like uh in the blockchain aspect of things, so I don't want to say something that's too
stupid. Um but it's it's it's very safe. Yeah. Okay. Thank you. Okay. Thank you very much. [Applause] [Music]