DAPPCON 2024: Anoma: Ethereum’s Intent Machine - Adrian Brink

DappCon 2024 · May 2024 · 24:34

Adrian Brink presents Anoma as an intent machine for Ethereum at DappCon 2024, describing an architecture where users express what outcome they want rather than how to achieve it. The talk situates Anoma's intent-centric design within the broader move toward intent-based infrastructure in Ethereum.

Speakers

Topics

From DappCon 2024, hosted by Dappcon Berlin.

Transcript

today I'm going to very briefly in the next 20 minutes or so going to talk about a noral ethereum intent machine um what intent machines are how we got to sort of having to think about intent machines why they are more useful abstraction than just thinking about transactions um and then I'll also go through a bunch of examples here and of some of the affordances that machines are going to give us so let's start with a very basic thing which is what is a VM and really a VM it's it's an instruction set it has a program counter has different levels levels layers memory and fundamentally it runs program sequentially um over the years we've had we've sort of started with ethereum virtual machine as the

first full-fledged virtual machine but sort of over the years we started developing by the way could I get the timer started thank you um great thank you um so over the years we developed a bunch of these virtual machines um but fundamentally they all follow the same logic of being a sequentially exe they that they execute program sequentially um I mean some examples here are really like the salana virtual machine or the ne virtual machine but predominantly I think the virtual machine that's mostly in production is actually the theorum v machine not only on ethereum main chain but also on most of the rollups right but for example like like some of these ZK VMS not necessar the ZK VMS but the

ZK VMS they're still fundamentally VMS they're virtual machines that will generally follow this model um and these things are very good at transaction execution right like when you have the fully fledged State transition VMS are very good at going okay I have a fully fledged State transition and I just want to update the underlying state of the system let me run this transaction um yeah so as an example give the ethereum virtu machine um so to contrast this what is an intent machine an intent machine really takes a batch of intents computes possible valid State Transitions and selects one of them according to some criteria and only then updates the state of the system um and here really the important distinction between a transaction and an intent is

that an intent is a partial State transition it is I have a for B but I do not have B for a right like when I go to a shop and I go here's some usdc uh I'd like some milk I have a fully fledged State transition I have a transaction because the other side of the trade is affected with the physical milk um and this is something that as a result payments can generally be immediately executed on chain intents on the other hand are partial State transition so the idea that I have a for B but I don't yet know who is B for a this may be one person maybe 100 people it may be 15 different hops away it doesn't matter to me I just have an intent it's a partial State transition over which I need to discover with whom to coordinate in

order to settle and satisfy this intent and this is a very fundamentally different abstraction because an intent is is not directly executable on a virtual machine right because there's no valid State update afterwards if I only have a for B I can't update the global State because it will be imbalanced like I'm spending some money but I'm gu getting nothing in exchange um so intend machines don't exist specifically generalized intend machines just yet don't exist um so of the first one here is the an normal resource machine which again it it's not a account model it's on utxo model it's a resource model it's a model that allows you to very efficiently Express partial State transitions so that you can figure out which kind of parties to coordinate with

um so I would in the beginning like to take a minute or so to talk about that anoma is an interface uh it is not an intermediary and this is very important to understand um and the differences here are really crucial and I think lots of times at the moment people confuse intermediaries for interfaces and I think a lot of intermediaries try to pretend really really hard that there are interfaces whereas in reality they're not so generally speaking intermediary is it's an actor on the network um and often times they're valuable ones right like but they're fundamentally a party that you interact with and they have the capability to

sort of Leverage the privilege position in the ecosystem to almost always introduce extra security assumptions um most of the time be able to extract extra rent um and most importantly they add actually unnecessary latency and complexity and this is because you're fundamentally going to a specific counterparty with which you're interacting with like you have to send something like with intermediary you have to send something to a specific party it's not you're just using some code it's you're interacting with a specifically identifiable counterparty um and sort of when you think about this from a global latency perspective no matter how fast this intermediary is even if the intermediary is a actual decentralized blockchain somewhere in the world I now have to

interact with this system which means in most cases I have to like send my thing to some Global consensus instance to some controller instance that then comes to consensus over this um if we don't with interfaces like two of us in this room can decide to directly talk to each other and we do not have to Route via some Global instance like going via intermediat is always almost is always going to be slower than directly just using interfaces um one really good example here are bridges um in our ecosystem most of the bridges currently are intermediaries they are fundamentally new trust assumptions if the bridge blows up and I'm not saying that they necessarily blow up that they will blow up but if the bridge blows up

uh you have to consider this as part of your personal security model this is not you're just using a freely uh free interface no you're trusting a specific identifiable third party whether this is a single one one MTI or a completely decentralized system system but you're trusting an intermediary here um and here actually doesn't matter whether it's a multi signature a multi Bridge or actually a chain um in the real world we have also a great example for this which is fundamentally Banks um and it's in the real world actually kind of really weird that in order to access the sort of Global Financial settlement layer you must go via a bank like why is there not the point that I can just directly interact with the settlement layer without having to Route via some intermediary that I now have to trust

with my money I mean they're historic ideas for why this is the case but sort of like on a technical side there is no reason why we need to go VI these intermediaries interfaces on the other hand are just protocols which translates or represents like one semantic for example ordering computer and storage semantics of an underlying machine um they're simply code they're freely copied um if two of two of us in this room agree that we all want to use the same interface we can um the best example in the world for this in my opinion is tcpi because it very much shows the difference if TCP I was an intermediary we'd all have to talk via a single Oracle server in a basement and Virginia somewhere um but tcpip is an interface it's a permissionless thing where if two

of us in this room agree we can just have a local device connection U over TCP IP and exchange data this way and there's no one we no third party we have to interact with um and I want to make this very clear like the normal protocol it's just codee it's freely copied um it's it's a interface for declarative intents um and implements imperative order in computer and starch semantics of an underlying machine but if two of you in this room want to just agree on how you coordinate or in an intent Centric system you can just use aoma uh you do not have to go by any Central Intermediate you don't have to go by any chain you can just agree on this as an interface um actually in the real world there's in the blockchain world there's also another great example here which is

IBC IBC like two people two chains can just decide to talk to each other they do not have rout via Central intermediary um yeah so this is very important to me that everyone understands this there's nooma chain to which you must send intense you can just use the anoma protocol the interface without going VI any specific anoma chain uh you can use this for on whatever settlement system that you care about um yes so really when you use things in this ecosystem please think whether you're using interface or intermediary because it fundamentally changes the assumptions and sort of security consents that you must have um so with this let's come to anoma anoma is a universal intent machine for

theum and actually yes uh one to far now so it's I I think everyone sort of started speaking about intense lately um and when most some people then come up to me and go well aren't intents just limit orders and yes this is true true all limit orders are intents but not all intents are limit orders and really what I'm speaking about here in terms of intents intents are fully generalized they are just code and some amount of State they do not restrict what you can do they're not just like an intent and an Nora does not know what a price point is what an asset is it does not know what a specific counterparty is it just knows I have some state in some Merkle tree somewhere and I'm willing to

exchange or trade it or move it to some other party to some other I'd like to update the state um the nice thing is that as a result intent um don't have to always get posted on chain intents can be free like if two of us or 15 of us in this room want to locally do something using intents we can just update our intents every half a second and just sort of submit this to our local network and only if we actually find an intersection where like I have a for B you have B for C and the third guy has C for a um does this intent actually have to be settled on chain right like we can have these very flexible systems where I can have incredibly quick and low latency

updates all the time over whatever intent I care about and only when there's an actual match does this get settled and executed on chain yes what does this mean for um a number of parties here so this fundamentally means that Builders can write daps in terms of int intents instead of transactions or execution traces and really here the distinction is that transactions are really they are very um imperative in the way they work it's a transaction just to find some specific execution trace and then you update this so you start with a state and then you say I'd like to modify the state um using this execution trace and then I'm at some future State afterwards an intent on the other hand is very declarative an intent just says I'm

currently at State a and I'd like to be at State B um anyone that can make this happen can take this and settle this on chain I do not have to describe the specific spe ific compute that needs to happen in order to get me from State A to B I just describe what are the fundamental State changes I have a declarative thing that I sign over that I'm currently in this state and I'd like to be in in this other state um can some solver in the network please figure this out how to get me there and again here it doesn't matter whether there's one other counterparty or there's 100 other counterparties that have as long as you have some way where all these intents balance in the end once combined into transaction the system will accept them um and Inter enough like rollups

fundamentally are intent based systems intent Centric systems right because when you think of what a rollup does it has some users an intent A to B some other has B to C the third guy has C Tod what a roll up does it just collapses the intent all these partial State transitions into a to d or if they actually and then really the signature over from the roll provider is sort of to finalize the thing that is C to a or D2 a in this case um so intents are pretty much all around us we just don't yet have um sort of coherent abstractions that try to have a unified approach towards intent Centric systems um yeah it's just Universal standard for intents and application performance it

does not constrain what kind of specific intents you can express or build um again if you want to represent gitcoin with this you can if you want to make this about trading you can I mean like order book exchanges are great examples of a specific application using intents um but the system itself is not constrained to just Auto exchanges it's generalized intense uh you can whatever you can express in code you can express in this intent framework um and maybe this is the most important point which is intents and and dabs written with a Noma can be ordered and solved and settled on ethereum this is or anywhere else in the ecosystem I mean like to a large extent an intent Centric design like AA solves a the consensus actually implements shared

sequencing so if you're very much interest in generalized Shar sequencing look should Ty from the consensus model here um but fundamentally intents can be ordered solved and settled on ethereum or on one of the other robs in the ecosystem right like it can also say like my intent is either settable on arbitrum optimism or Theory main chain and then users can pick or maybe the users actually don't want to pick and they just care like give me the fastest cheapest thing and then solvers can pick while it's fastest or cheapest to put this onto optimism right now um but maybe for some things you don't want to do this for some things you actually may May care about the underlying security where like I only want this settled on either arbitrum or ethereum mainchain right um and so with intense users can incredibly

flexibly Express what kind of specific settlement guarantees or security models they actually care about um yes so yes um anoma is universal intent machine for ethereum um intents and deps written with anoma can be ordered solved and settled on ethereum or anywhere in the in the ecosystem right like this could be on evm rollup this could be on IGN AVS you name it this could be on a zkm rollup on a ZK VM rollup uh whatever wherever you can build a protocol adapter or an normal protocol adapter um in order to get access to the intent to

sort of the intent stack um you can use this to settle there um yes so why use anoma to build apps what kind of performances do you actually get here well a first you get permissionless infrastructure and this is not to say that um there's just some magic cloud in the sky it just means that there's no wh list like you don't have to ask someone specifically to run this code as long as people in the ecosystem node operators for example e theorum validators run um this as a site car uh you get access to intent based infrastructure um the really cool thing though is you get intent level and intent Machine level composability and what does this actually mean one one of the big challenges in a transaction

Centric world is that um even though users have intents they can't express this and as a result things don't compose really well like I fundamentally have to choose whether I'm interacting with something like cow swap or something like Unis swop U this is we splitting this here we like you as a user must choose at the interface level where you go with intent level composability you just Define that well I want to do a for B and maybe it goes to cwap maybe it goes to Unis swop as a user you don't have to care you get full intent L composability and this is not just over um for example like marketplaces a book exchanges or generally amm uh this is across many different things for example a user may say I want to trade um a for B because uh and another user then wants to go

well I want to put B into gitcoin uh all of these things start composing with each other at an intent level because again they're just State updates they're just declarative State updates um and rather than every user having to make the top level choice and like I want to go to this specific thing and do that specific compute I can say well I want to get this General State change and then solvers can figure out what is the most optimal route in order to satisfy all of these things and you get intent machine composability which means that you can trade many different networks many different rollups for example as a single intent machine even though under under the hood they're composed of many sort of separate intent machines um in the intent itself you can describe whether you care about security Model A or B or C um and really this is I I

think this is going to be a fundamental unlock for the entire ecosystem that all of a sudden you get this composability not just at the settlement layer which is what really transactions give you you get um composability at the um intent level like at where you do counterpart Discovery so that users don't have to fundamentally pick which Central server they're interacting with they just pick I want get a for B the rest of the system can figure out how to get me this you also get information flow control um information flow control really means currently we have syst that are fundamentally designed around a single large piece of global state in the middle somewhere right like this is like the global ethereum state is a single large piece of state that lives in the middle and has to um be synced and

understood by everyone um data or state is going to move to Edge devices specifically because nowadays we can have proofs over data on our Edge device so like in any reasonable system not only from a scalability perspective but also from a privacy perspective you actually want to move more and more away from the sort of fully public middle in like thing in the middle towards end user devices so that my phone here holds my state and as a when I interact with the system I then declare that I am willing to reveal this kind of state and maybe I publish it fully transparently or maybe I say well I have this state and I'm willing to author like author approve over the state um and this is what information flow control gives you it makes what

users reveal not a choice of a specific application but rather rather a property of like what the user chooses to do and sort of like the simplest example here is that maybe you have a case where some people want to trade transparently and they sort of just attach a PL Tech signature to their state so like they reveal all the state that they have and who they are via PL Tech signature but maybe some other users actually want to trade privately for whatever reason um and instead of attaching a plain Tech signature they just attach a ZK proof um those two things can still be composed into a single transaction result in a single state update on chain um um so yeah and regardless actually of the Privacy implication with information flow control it's also from a scalability perspective like having this large piece of global state is not super

scalable If instead our my individual State can live on my phone and everyone else's individual State can live on their phone um and you get heterogeneous trust which I think really is something that's very unappreciated but you want to have a model that has heterogeneous trust assumptions not everyone and their mother will want the same Global Security model like my parents um I I don't think I will ever be able to convince them that something is super secure and decentralized they will always trust the local government more and this is sort of just a fundamental reality that like different people have different trust assumptions and to some people they want to have the most globally decentralized system but to other people they actually trust the

local five friends and they want to have their financial system their financial assets secured by their local five friends right like and with intents you get the set genous trust model where uh users can define whether they care about global decentralized decentralization or they care about localized um Sovereign systems right um and it just makes this very transparent in the architecture so that we don't have to go like well here's an Enterprise blockchain that like does the thing for this local city and here's this Global thing and moving between these two systems is very difficult rather we can have one single unified intent architecture that goes well as a user at runtime I pick which specific security model I want to care about right now and I can always move between them freely and my application

can roam this is actually the biggest thing which is applications can roam trust models rather than redeploying the same application on every possible settlement layer you deploy the application uh sort of at the intent level and then users decide where this application fundamentally runs um yes so some novel ideas for daps on ethereum um if you're interested this is they fundamentally will need intents U so if you like hacking around with things uh take a look I hope this is some inspiration public signal this is effectively an inverse to Kickstarter rather than being a supply Side Market where i' s well I'm willing to supply these kind of services do you want to give me money we can have a demand Side

Market where um many of us may say well I would like this kind of service and only for example a simple example is we all wanted we all want Starbucks coffee and so of everyone chimes in $5 um and if we get enough people together um maybe someone is willing to go well I'm I know that this specific cryptographically signed Market or demand exists let me put it um out there do I have another five minutes by the way okay great um yes then I'll quickly run through this um so this kind of marketplace can exist where people can where then a supplyer can go well I know there's demand let me satisfy the other side um something that I deeply care about is sort of around uh nuclear research um rather than sort of people

building nuclear reactors we can instead go and then hoping that someone buys it we can each go well I would like this specific thing let me signal this to the market There's an actual interest here that I have um scale free money actually I think this is the end game for our entire industry this is about the capability to say everyone locally issues their own monies um and my monies effectively represent my economic trust graph with my community um but by having this kind of scale free money system um where I can very transparently exchange my money for someone else's money for someone else's money uh we can build a very uh Global Financial system that represents Local Economic realities quite well multiat it's effectively a privacy preserving version of sack um

and the paramis graph system it's how can organizations structure themselves around the actual work not being done rather than um a sort of like high level design for what the organizational structure should look like um yeah if you like any of this uh please scan the Q code there's a bunch of ongoing discussions here um for what kind of applications are possible in this new architecture perfect and with this I'll come to the quick tldr which is it's VMS and IMS it is not against or versus or or IMS it is fundamentally intent machines are built on top of virtual machines intent machines do not replace any existing infrastructure they are

just another high level of abstraction to make make our lives easier while building an ecosystem um they are not if we do not have virtual machines to actually run the settlement system uh I are all very nice thought experiments but we cannot run them anywhere um care about interfaces not intermediaries uh many people will tell you that you should use their thing and in reality you should use the intermediary I mean if that's your thing please go ahead but like everyone should just be aware of are you using interface or an intermediary um yeah what does Universal intent machine mean for a theorum well we get intent intent Centric daps we get a bunch of standards for intense and we get the capability to settle everything on ethereum um I went through the affordances that nor actually builds um from permissionless infrastructure to

intent level composability a bunch of other things around information flow control as well as hetrogeneous trust assumptions um yeah and then lately if you if you want to chat about more novel ideas of what we can build in this new architecture um find me afterwards um so yeah what do you think um please feel free to scan the QR code Chris my co-founder wrote A Very Long blog post on E research and some very long post on E research some of you may have read it um if you want to read it take back two hours probably maybe more it's a very good post though and it provides a much more comprehensive overview with sort of backlinks to all the underlying research it goes into tyen the consensus the intent machine abstractions the normal resource machine so yeah thank you very

much all right please give it up for Adrien Brink uh very nice talk about the beauty and a nice example of uh the beauty of composability and modularity