New Ethereum talks, every Monday. The week's conference uploads by event, in your inbox.

Loading player…

Cross L2 with Intent Addresses | Devcon SEA

DevconThu, Oct 9, 2025, 12:00 AM

Ethereum today is more fragmented than ever before. We'll talk about how CREATE2 intent addresses and ERC-4337 can be used to enable fast and smooth cross-chain interactions for consumer applications. Speaker(s): DC Posch, Nalin B Skill level: Intermediate Track: Usability Keywords: Architecture, Cross-L2, Account Abstraction, chain, abstraction Follow us: https://twitter.com/efdevcon, https://twitter.com/ethereum, https://warpcast.com/devcon Learn more about devcon: https://www.devcon.org/ Learn more about ethereum: https://ethereum.org/ Visit the https://archive.devcon.org/ to gain access to the entire library of Devcon talks with the ease of filtering, playlists, personalized suggestions, decentralized access on Swarm, IPFS and more. Devcon is the Ethereum conference for developers, researchers, thinkers, and makers. Devcon SEA was held in Bangkok, Thailand on Nov 12 - Nov 15, 2024. Devcon is organized and presented by the Ethereum Foundation. To find out more, please visit https://ethereum.foundation/

Transcript

[Music] really glad to be here today my name is Andrew and this is my this is my coworker DC Posh and we are from the Dao team over the past few days there has been a lot of talk around um the fragmentation of ethereum and how all the l2s are separate and creates a bad user EXP experence for trying to interrupt between these l2s the past few months we've been working on something new at D that we're excited to show you today this is a step forward towards unifying ethereum using technology that already exists today while maintaining the core values of permissionless and trustless and let's get started with DC introducing the problem of rment and what it looks like today sounds great hey everyone yes I didn't forget about this by the way they scheduled us back to back so I just got off of a panel on the next stage over came straight here glad to see you all um let's talk about this so we're gonna oh see do you have the clicker yeah perfect thank you so the problem we're going to talk about today is one that I think many of you are going to be very familiar with uh how many of you here have used poly Market how many of you here have ever seen a screen that says something like you know only send this token on this chain other funds might be lost all right more than half for sure um and this is a very common ux right now so it's like select polygon as the network not polygon ZK evm or you may lose funds um and it's also a problem that you've probably heard a lot at Devcon where it's like a lot of the talks here like about uh rollup fragmentation and about chain abstraction and about things like that and I think the aspect of what we're about to show you that we're really excited about is that we're going to only talk about things today that work today um so so I think there's a lot of interesting sort of forward-looking things that people are talking about around things like uh chain specific addresses around things like uh wallets that have bridging built into them uh but we're going to talk about things that work right now with wallets sort of on any chain um and even with you know custodial apps like coinbase like binance like lemon um yeah what we're what we're shooting for is something like this is from one of vitalik's recent pieces this idea of one ethereum something that feels like a cohesive ecosystem and what we're shooting for is something that feels as easy to use as smooth as something like Apple pay so you have you know like one action you click Send and it does whatever you wanted it to do yeah I'm going to talk very briefly about sort of the background of like create to about cross-chain accounts about sort of the ideas that inspired this um and then we're going to talk about intent addresses which is the new thing we're presenting today um how many people here have heard of or like know what create 2 is oh hey wow that is okay very technical audience that's great perfect yeah so it lets us commit to a uh it lets us commit to a contract we can make an address that only one specific contract with specific functionality can exist at that address the sort of original main use case for this what a lot of it has been so far is these cross-chain accounts um so we should do the next slide with the diagram on it yeah perfect so this is this idea of like okay EAS work everywhere you have things that only work on certain chains um so for example like if you heard of the winter mute hack two years ago um where they had a a Nosa safe that hadn't yet been deployed on a different chain and then someone sent funds to it it was a sa time um with this you know with like uh cross-chain accounts Universal accounts you can use create 2 and 4337 to make an account that just works on every chain um and even like new evm chains that don't exist yet that one specific contract will be Deployable there um there's a whole nice design space around that and we thought what if we could go one level deeper what if we could make this more General um and so what an intent address is um let's do yes perfect so intent address lets you accomplish an arbitrary action just by sending funds to that address um so if you can imagine like let's say I want to put $70 into poly Market we can generate an address that represents that intent and then if I send $70 worth of any coin on any chain to that address then a reers will be able to come in and permissionless do the rest but only that so there's no you know counterparty risk you're not necessarily trusting anyone um it's just by sending money to this address you're expressing an intent of like I want $70 to show up in this uh you know uh other place on this specific chain and so these are the kinds of things so sending funds via a transfer via a permit and you can accomplish all kinds of things like a deposit that was the example that I started with you can do swapping and bridging you can even do arbitrary contract calls um on the receiving side we did a really nice launch with our friends at ethereum OS uh Freedom Factory you know they make a new uh a new kind of Hardware wallet and the pre-sale for that involves like minting a pre-order nft and that's an arbitrary contract call but you can still do it via single transfer um yeah with that I'm going to hand it back to Andrew and he's going to walk you through the different steps of like how we can do progressively more with intent addresses one way you can think of intent addresses that would make it easier is think of it as sending funds to someone's wallet address and they execute a contract call on your behalf now this sounds kind of worrying you're sending tokens to someone that you potentially don't trust and they can do anything on chain with your funds this is what the problem that intent addresses solve you send uh tokens to an intent address and this intent address permissionless and trustless guarantees that only one action can be executed on chain how do we do this we we use create 2 like DC mentioned to do this for those of you that don't know create two um is a way of deploying smart contracts it takes a hash of your contract code and generates a deterministic address that you know beforehand if you change the code you change the address that the contract is deployed to this way you know beforehand exactly what the contract is going to do when you send the tokens to this address so we'll use an example here of minting an nft on using usdc so I transfer tokens to this create 2 address and then now anyone can come in deploy the contract to the address and this contract can only do one thing it can only mint an nft with a contract you specify it mints the nft by sending tokens to that contract and gives the nft back to the user now what's the point of doing all this to all this fancy stuff with create 2 when you can just use your EA wallet the first thing it enables is a single wallet popup to uh execute this contract interaction the normal flow has always been approve the contract then uh execute the contract call this is something we' become numb to in ethereum and a terrible ux for users that we've just accepted as something that we have to deal with with intent addresses if you noticed all you have to do all the user has to sign is one transfer interaction no more two popups just a single popup to uh execute an on- train call another benefit this gives you is it allows people to pay or to interact with contracts on chain using an exchange so you can now mint and nft interact with any contract on chain with a coinbase or a binance account you transfer funds to a predetermined create2 address and that address executes the uh contract call on your behalf now how does this move us towards a unified ethereum one really cool thing uh in intent addresses enable you to do is arbitrary bridging so you can set an intent address which sends the funds into a bridge and then on the other side retrieves the funds out from the bridge here's an example of how we can do that so now let's say I want to maintain nft on base but I only have ethereum on optimism what can I do with intent addresses to do this I'll first transfer my ethereum to an intent address a relayer comes in trustless and swaps the ethereum for me and sends it to a bridge in the contract I can guarantee that at least X dollar of usdc must come out of the swap otherwise the contract reverts and the relayer relayer can't execute that function so the relayer completes the swap sends it into a bridge like cctp and the later later on the destination chain this is the cool part I can now trustless execute the contract call on the destination chain how do we do this when the bridge completes it transfers usdc to the same intent address on the destination chain this contract because um optimism and base are both evm chains I can use the same contract code and have it hash to the same create 2 address on both chains so the contract on the destination chain will now approve the nft contract and make a call with usdc you've just seen how I trustless sent funds to an intent address and had my intent completed on the on a separate chain completely separate chain fully trustless fully permissionless anyone can come in to complete this contract call and your funds will never be stuck because you yourself can complete it what doeses this enable for you well I don't need uh as a user I don't need to have gas on the destination chain if someone is building an app with intent addresses the relayer holds gas on both chains and the user only needs to hold gas on the source chain this is because the relayer completes the contract call for you on the destination chain what's next from here well cctp and other Bridges often take a few minutes for example cctp can take up to 20 minutes to complete the bridge how can we do this instantly I want to do something on another chain and have it instantly complete here's how fast finish and claiming works on the source chain the flow is the same I send eth to a contract a relayer comes in swaps it and initiates a bridge for me now on the destination chain the relayer will as as soon as they start that Source transaction they have a guarantee that if the bridge if they trust the bridge 20 minutes later the funds will arrive so what they can do is they will they can immediately execute the contract call for me so they call um a fast finish function on an escrow contract and this mins the nft for the user what the escrow contract does is it tracks who finished this um this contract call for the user and then later when the bridge completes instead of sending that to the contract or to the user you send it to the relayer who finished the contract call on behalf of the user so if you look at the funds of the relayer on the destination chain they execute the contract call they're down let's say 100 usdc to Mint the nft and then 20 minutes later when the bridge arrives they get paid back for that 100 usdc that um they did they executed on behalf of the user so 20 minutes later the bridge completes the bridge transfers the usdc to in uh the intent address and then now the relayer can deploy the intent address and because the relayer address is tracked in the escrow contract the intent address knows to send the funds to the relayer instead of the user to summarize what intent addresses does for unifying ethereum it builds a better user experience no more two wallet roundtrips only a single wallet popup you can pay with your coinbase account or your binance and this enables a larger user based to interact with your app you sponsor gas on the destination chain so your user no longer has to hold gas on Two Chains to interact with your contract better interoperability you user can pay you with any coin on any chain and have trustless and permissionless guarantees that the intended uh intended action they wanted to execute gets executed funds will never be stuck because the user can themsel can complete the action if no relayer comes in and does it for them how have we used this in the real world now one of our partners small brain Games built this app called tomorrow news it's a prediction Market that lets you bet on tomorrow's New York Times headline you enter in what you think the New York Times headline is and the more accurate it is the more you get paid out however they only accept ethereum what we did for them is we built a a deposit flow that allows users to send any coin on any chain and it automatically Bridges and swaps using the intent address mechanism to deposit funds into the app another one of our partners is freedom Factory they're building an open source open Hardware Hardware phone Hardware wallet that runs on ethereum they have a checkout page that only accepts usdc on base and what we allow enable them to do is accept um any coin on any chain to pay for their wallet if a user doesn't have ether D gen on base they can pay with their coins on optimism their coins on ethereum their coins on um binance smart chain yeah let's play the demo um I think they've got it here's a quick demo of intent addresses so oh it's got no audio I'll I'll just narrate it um so this is this is the the uh like an example of an intent address in action so we're going to click any crypto this is actually uh the Diop pay model um this is our our uh what we've built around content addresses shows all of the different tokens we're going to do a single transfer in in one token oh over to this side okay deal um and almost immediately you should see the safe payment completed as soon as that shows the fast finish on the destination chain has already cleared um rollup ethereum is really fast and cheap now we have one cent one second transactions really beautiful and so you can see this is already done and then under the hood 20 minutes later the relayer will get paid back back via cctp that's all we've got there sweet should we do the the bonuses um perfect uh we have a few bonus round things where we're going to show some other things we can do with intent addresses beyond all of the stuff we just showed you so the core of it is like make an experience that kind of feels as nice as like Apple pay or Google pay but it lets you do anything on ethereum from one transfer um but what if you don't even have gas on the source chain we talked about not having gas on the destination chain um for assets that support it like usdc uh we can do entirely gasless intense this way by just having the user sign a message that is a permit for example a usdc permit message um and then the relayer does everything else then uh another interesting place that we can go with this so intent addresses have this property that they are ephemeral um so we create an intent address representing one specific action and then once that action is done that contract doesn't need to exist anymore uh self-destruct some of you are probably familiar with the history but it's been like a problem op code in the past um it it used to have a gas refund associated with it that was deleted because it caused problems but at this point self-destruct only exists within atomically within a single transaction you can create a contract you can self-destruct it later within that same transaction so we actually think that there's no more reason to not have the refund and having the refund would be really nice for use cases like this it would make intent addresses a bit cheaper and it would incentivize anyone who's using ephemeral addresses like this to clean up after themselves and not pollute the state tree um and then lastly uh you know once this is more um once this idea has more mileage on it and we know the common use patterns right now is a new thing it's exciting once it's sort of uh more Lindy we could write an ERC that allows a really beautiful Progressive uux where wallets that support it can show the intent where I say I'm sending you know what I'm actually proposing is a transfer to an address but it will show you yeah you're actually sending you know this much usdc to vitalic eth over on you know optimism this other chain um it can surface that to you and then for wallets that don't support it it'll just show as a transfer to a be address but it degrades gracefully at still works uh I think that's just about all we've got let's go to let's go to questions wow guys you have 15 questions lined up yeah this is so interesting so let's start with the first one uh what is the incentive for relayer to deploy the create two wallet since deploy contract is usually expensive you want to do that so there are two ways you can do this um if you're running an app and want to use intent address for your app you can run your own Reay to provide a better user experience for your users your users won't have to pay gas and you can do cross-chain um cross-chain actions on their behalf another way you can incentivize relays is to have um a tipping mechanism so the user sends some tokens to the contract and then you can bake into the contract that the relayer collects like a 3% fee or however much you want to incentivize relaters to pick pick up these uh intents and complete them for the user yeah another thing i' would say is deploying contracts is actually not that expensive on L2 um which is this system is definitely built for for you know the the the rollup Universe um one nice thing there is that these contracts are very small because uh we're doing you know like minimalist proxy you know uh uh contracts that point to like a mutable implementation contract and they just have Constructor ARG ments that basically encode the parameters of the action of the transfer the payment whatever it is and so the size of contract code that you're deploying for one of these intent addresses is fairly small um I'll answer this next one because it's closely related do intent addresses lead to increased chain State bloat this is why we would like the self self-destruct refund back um we actually run our intent addresses currently without chain State bloat with self-destruct at the end uh but there's currently no incentive to do that you don't actually gain anything from it um and so having that also come with like a b effectively like a gas discount for cleaning up after yourself would be great okay next question is if multiple people transfer tokens to an intent address uh how can the contract know who sent what and in order to reward them separately totally so the intended way an intent address is to be used is um you generate like an intent address per user or per interaction and this way you know like which user is going to send tokens to the contract and if other people send it it could be like funding for U the user so for example with the nft example for each user that wants to Mint the nft in your app you could generate a new intent address specifying them as the recipient and then you could also for example purchase a gift for your friend and transfer to tokens to that intent address but the intended way it's to be used is once per interaction per user totally and that said it does support multiple assets going in so you can do this very nice thing let's say I want to do an action that takes $100 I want to place a poly Market bet I can send you know $50 vers worth of token a and $50 worth of token B to an intent address over here on on Bas for example and any realer can come in you know swap those however it needs needs the intent address is just going to guarantee that like whatever they do $100 of usdc have to go into the bridge and then fast finish it on the other side so you can do multi payments but yeah it's it's not there there's they're one per action okay next question is uh do these intent addresses look like accounts on a salana except for the relayer the taker is eth I I don't know about that okay um how much would it cost to incur the trigger uh to to start to trigger the the action on um intent address assum it's just ear C20 transfer so in our experience uh in particular on l2s it's really cheap to use this intent contract mechanism so for an the gas cost you pay as a relayer is the cost to deploy the contract and then the cost to execute the function on the contract so for in 20 transfer that's like much less than a Cent and the cost of deploying the contract is also less than a cent so in our experience on l2s it's been less than an incent to use uh intent addresses totally this is connected to the next question which is uh what is the additional cost of deploying contract code for every transaction um yeah actually I have a two-part answer to this so uh currently we know we're seeing these intent addresses these intents going through for for you know on the order of a cent in gas costs if blobs go more into price Discovery and blobs become more expensive the interesting thing here is uh you know all of the other things you know compute contract deployment all of these things actually stay cheap on L2 the one scarce resource at that point is call data and there's some really nice things we can do to optimize how much call data we use so we we anticipate this is going to Stage okay that's it th up thank you very much thank you everyone thanks

Automatic transcript — names and jargon may be misspelled.