Ethereum’s Intent Machine

EDCON 2024 · 29 Jul 2024 · 20:34

Adrian Brink introduces intent machines as a layer above virtual machines, with Anoma’s resource machine expressing desired state changes rather than fixed execution paths. He distinguishes permissionless interfaces from intermediaries and explains how intent-level and cross-chain composability could connect liquidity, sequencing and private applications across Ethereum’s ecosystem.

Speakers

Topics

From EDCON 2024, hosted by EDCON.

Transcript

all right so today in the next 20 minutes or so um I'll be talking about ethereum inent machine and intense for theorum very fundamentally um it is sort of going through where we came from why intents are cool how intents actually matter for a lot of the Practical use cases that we want to achieve going forward um such as privacy for example um and how us developers can leverage intents on ethereum um let's start with a very brief sort of background um to come to why intents are cool and how intents actually work so fundamentally when we think about what a VM or virtu machine is it's an instruction set some program

counter has different layers of memory and fundamentally runs program sequentially right sort of the best known example of a VM in our space is ethereum virtual machine which does exactly this um and really all the things we've had so far are fundamentally virtual machines this is again we had the ethereum virtual machine being the first one then we started innovating a little bit and like started having other virtual machines such as the salana virtual machine or the near virtual machine or any of the zkm really fundamentally right like any zkm it's just a zero knowledge virtual machine but sort of the fundamental model here around running program sequentially um and updating some underlying database State whenever you

run a program right so if you have some database State a and then you apply a transaction and then you get to a database State B um yeah the best example that we all use every day is the theum virtual machine and this is also true for all the rollups right like optimism whether it's optimism or arbitrum all of these things are running the ethereum virtual machine in contrast to this what is an IM so an IM is something very different it is also not a replacement to a virtual machine right like intent machines or IMS fundamentally run on top of virtual machines they're not rep then like not yet another iteration of like this is yet another virtual machine they are fundamentally something that you can build and run on top of existing virtual machine virtual machines such as the evm

so an IM takes a batch of intents uh computes possible valid State transition selects one According to some Criterion and then updates a system State using the batch uh they don't really exist in practice at the moment uh there is no generalized intent machine in the world at the moment uh the first one that is fully generalized is the anoral resource machine or arm and we'll talk a little bit about sort of what this enables you later on but this is sort of just as a very brief background um on the technicalities on sort of we are currently living in this VM Centric world and in order to give developers high levels of obstruction similar to how we moved from s of limited scripting capabilities in Bitcoin to a fully virtual fully implemented virtual

machine on ethereum we'll have to start moving towards an intent machine going forward um with this set that's quickly go through that an noriz interface it is not an intermediary and I will talk about a little bit why this distinction really matters but the tldr is there's no aoma chain that you must interact with aoma is just code it's an protocol specification if you want to use intense on E theorum anoma is the easiest way to do this um so let's quickly go through what are intermediaries and what's the difference to interfaces actually so intermediaries are fundamentally actors on a network right sometimes they're valuable ones but in almost all cases they are in a privileged position that allows them to extract rent uh introduce

additional security assumptions or add unnecessary complexity or latency um and really when you think of an intermediary you always think of this it's a specifically identifiable third party this could be a single party right a single key that you're interacting with or a multi but it could also be an actual decentralized system a chain is an intermediary it's a specifically identifiable third party that you're interacting with it is is not just an interface um so a really good example in our ecosystem is actually many bridges are currently fundamentally intermediaries they are specific entities that you as a user must consider or as a developer must consider in your trust model in your usability model right like and this actually

interesting enough here it doesn't matter whether it's a one out of one multis Bridge or three out of Seven multis Bridge or a Chain Bridge these are all specific intermediaries that influence and affect your security model in the real world we actually have a really good example here which is Banks Banks are sort of the prototypical intermediary um in order to access the banking Sy or the financial global settlement layer you must interact with the bank it is not possible for you to directly interact with a Global Financial settlement layer you must always go via a bank which to me sort on technical level is incredibly strange I know they are like historic reasons for why we're going via Banks but sort of when you fundamentally think about the

problem I should be capable of just riding to This Global Financial settlement layer without having to go to VI a bank because that bank now influences my trust model right like I now have to fundamentally pick the intermediary bank that I like that I trust that I believe in because I can't just interact with the system directly using an interface interfaces on the other hand are interface it's effectively a protocol which translates or represents one semantics of ordering computer and storage of an underlying machine uh they are simply code you can freely copy them you can reimplement them in your favorite language um you can use them everywhere if two people in this room just want to agree on using the same interface they can right like there's no

routing point that they must go via um in the real world my most favorite example here is tcpip um TCP iip would have never worked if it was designed as an intermediary rather than an interface right like two of us in this room can just decide that we would like to connect to each other using tcpip there's no server running in Virginia that we must route via um tcpi would have never gotten traction because a was always have effective the security model and B it would have affected latency right like because we would have had to Route via some third party um and yeah just to reiterate here really the anoral protocol it's an interface for declarative intense imperative ordering Computing storage semantics of

underlying machines such as the evm on E main or on arbital optimism it is an intent machine it's a interface that you sort of agree to use um yeah I said this in the beginning there's no normal chain to which you must send your intent uh this is a model that would never work even though a lot of people are currently trying to propose this send your intents to my magic system in order to get things done um whenever you use things in the blockchain world really think of this or think about this whether are you using interface or are you using an intermediary and you should always try to prefer to use actual interfaces instead of inter medaries because it really matters on the usability on the latency on the security of the underlying system so with that

being said anoma is fundamentally Universal intent machine for a theory there we go um so what does this what does this specifically mean well it means that Builders can write daps in terms of intents instead of transactions or execution traces and really when you think of a transaction a transaction is sort of this like very imper comparative description of the compute to execute whereas intent is this very declarative model on I currently have state a and I'd like to be at State B and I don't actually care how the compute happens just like make it happen and the really nice thing is you get incredible levels of composability here because you only have to be composable at the state

layout rather than at the execution Trace layout let me also quickly cat up here great um really an interesting note here is that Inns are mostly all already around us we just don't yet have a good sort of generalized abstraction for them um and sort of the biggest intent Centric system that no one really thinks about is a rollup like when you think of what a rollup is a rollup is some users an intent from A to B someone else say B to C someone else says C to D and then a rollup provider just comes along and collapses that entire compute that chain of compute into one settable proof somewhere else right like their

signature sort of like closes the loop from d2a and now we have an updatable system um because individual transactions in a rollup should actually be called intense because they're not directly setable on the underlying system they are these partial State transitions that represent partial compute rather than fully fledged State transitions that are directly settable um yeah the other thing that means is with AA you get a universal standard for intent and application formats which does not constrain what kind of intents can be expressed and I think this is actually very important thing because people tend to ask me like well aren't all intents just limit orders it's like no that's really clearly not true um all limit orders are intents but not all intents are limit

orders right like intents are fully generalized whatever you can express whether this is you want to be part of a multii as like I have a third of a nosis safe multii that's my intent to combine my partial signature with someone else whether I want to trade a for B intents are fundamentally just parti State transitions um and here nor as an infrastructure as an interface does not constrain what kind of intents you can express it just whatever you can write in code can be an intent um and maybe the most important thing here is intents and dabs written with AA can be ordered solved and settled on a theorum or anywhere in the ecosystem um and I didn't I don't really have enough time to go through this here but to a

large extent AA as using tyen as a con consensus mechanism which if you're really interested in cons distributed systems check out tyen Cera chains um it generalizes shed sequencing so it generalizes a problem of shared sequencing how do we defragment liquidity across many of our rollups in the ecosystem um yeah so anoma Universal intent machine for ethereum intents and depths written with aoma can be ordered solved and settled on ethereum or anywhere in the ecosystem um this could be on an evm rollup this could eventually once someone Builds an implementation of a Noma of sort of the operating system action for the next zkm this can be on the Z on the next zkm rollup this can be on iay AVS really the easiest way to think of this is think of

this as an operating system abstraction where an almost almost a distributed operating system that allows users to uh write and use applications against the operating system abstraction and you just have to implement the operating system for example to run on the evm to run on a rollup to run on a zkm um yes so with that let's go through some of the affordances of what a normal actually gives you here and I think these are there are four key affordances which is it's permissionless infrastructure this is there's no specific intermediary that you must interact with um ethereum validators can choose to run a noral sidecast to connect the entire P2P gosip stack to each other the more nodes in the

ecosystem exist for example to run along some of the major rollup sequences this is just a permissionless infrastructure where you decide under what I conditions are you willing to connect to other people on the network this is not that you must all agree on some form of global State updates um and sort of the key thing here is that aoma was designed to be incredibly topology agnostic uh topology is not actually something that you can Define in a specific architecture diagram topology is like the topology of the network is specifically dependent on user Behavior at runtime on the specific economics that emerge at runtime on like who wants to be connected to whom um and then you get intent level composability so intent level comp composability has two parts it has the intent level composability as

in as a user I don't have to specifically say well I would like to go to application a or application B to do my trade I can just say well I'd like to sort of update these um this state and then maybe this gets executed on the on Unis swop maybe this gets executed on cow swap as a user you don't have to care anymore you can just say well I would like to get a for b whereever as cheapest fastest you can sort of set your preferences and the second component is you get intent machine composability which which is I think actually the single biggest unlock which enables shared sequencing um it's the ability as a developer to trade a single a network of intent machines as a single intent machine so that means that rather than as a user or as a developer saying

well I would like to deploy my application to optimism versus e theum main chain you just deploy your application against the intent machine and then users make the choice on do they want to run your application on optimism do they want to run it on arbitrum do they want want to run it on the main chain right like this is of like it becomes a userdefined behavior where your application starts running any and possible everywhere where the operating system exists um and I I think this is going to be sort of an order of magnitude higher levels of composability because all of a sudden there's a user I can say well I would like to trade a for B I don't care against which specific application it gets executed and I don't actually even care whether it gets

executed against ethereum or whether it gets settled on ethereum or optimism just that give giv whatever is the fastest or cheapest right like and this is sort of the level of unlock where instead of users having to manually pick specific RPC end points to go to they can go and describe this in their intent and then solers figure out the rest the next part is information flow control and information flow control is a different word to say privacy guarantees this means that from both a scalability as well as sort of a usability perspective a lot of the state that is currently s in the center of the network right like when you think of ethereum there's a lot of global state in the middle a lot of this state is moving to the edge devices um like any ZK rollup for example needs this kind of intent

Centric design because data or state moves to Edge devices and so information flow control is all about how do users have the capability to decide what parts of their state are they willing to reveal and under what conditions so for example maybe if I want to trade transparently I attach a plain Tech signature and if I want to trade privately I attach to zero knowledge proof right but this is not an application definition this is not like you as a developer you have to write a specific circuit to make your application Implement information flow control it is now a user choice on how are they willing to reveal State updates about their local state on their local device and the last bit scalability here really matters uh the most scalable system is the system in which data lives

at the edges of the network rather than the center because if it lives in the center we need to come to Global consensus over that specific piece of data and everyone needs to S of sync it and so on and the last bit is hogen gen trust and this is really about the idea that not everyone will want the same security model right like my parents will never want Global ethereum and like there's nothing I can do in the World to Change that fact they do not understand how the system works they won't trust it they will want like their local government security and that's fine right we should just be building designs and architecture so that our applications can roam between these many different heterogeneous trust models so that we aren't splitting the liquidity that we aren't fragmenting the liquidity and State between many different systems

um the other example here is like some users want to trust the rollup like some users want to go into so I would always want to be on arbit I always want to be on optimism and this is what this enables that we can have a uniform application interface that can work across many heterogeneous trust models and maybe the last bit here is actually I I think it's kind of crazy to assume that any central government will ever issue this digital like their currency on a ethereum like this will never happen no matter how how much we wish it would happen um they will never give up the monetary sovereignty to any decentralized system so I think the best we can hope for is that we build architectures that allow this heterogeneous trust so that on E

the main chain we can leverage that liquidity that exists now on sort of a the Swiss frank chain uh where the Swiss government issues its own currency um the last bit I'd like to talk about some novel DBS that you can build here using a normal on ethereum um and these are not the typical Financial use cases because I really hope that over time we actually build non-financial use cases in this industry um so public signal this is I think one of my top favorites public signal is an inverted version of Kickstarter where rather than people providing Supply and going well I'm willing to do this you can have a model where we all signal demand for a certain action and then only if there's enough intents with that

signal enough demand can you take all these intents together write the supply and then settle this on chain uh so one example here is um like we' all like to get a cup of Starbucks coffee maybe if we get 100 people together there's now enough demand that's being signaled and then someone can sort of like fill the last bit the last intent which is I will provide 100 cups of Starbucks coffee to this venue under these conditions and then you can actually settle this um this is my favorite it's scale free money I think this is actually the end game for this entire space it's everyone issues their own local currencies that represent your own econom IC trust graph and your own economic relationships with the rest of the ecosystem and scale free money just allows you to leverage intents to have these incredibly

flexible systems where my intend can purchase someone else's uh local currency can purchase someone else's local currency so that we get this connected um economic system that actually represents much better the fundamental economic realities that exist rather than sort of abstracting It Away by using money uh multiat it's an effectively encrypted version of Slack and then the promise graph this is all about how can you structure organizations around the actual work being done rather than sort of some imaginary hierarchy that you think is the right organization abstraction um yes I will give you 25 seconds or so to actually scan this if you want to chat about more application ideas um using intense we to scan the QR code um there's been a bunch of activity

there um and yes I I didn't really speak here about novel things that can exist within the financial real but intents are also just the better abstraction for things like Autobook exchanges like if you actually want to have a decentralized Autobook exchange you need an intent Centric design um yeah quick DDR it is virtual machines and intent machines it is not versus uh intent machines do not replace virtual machines um without the e theorum virtual machine the anoral resource machine has nowhere to run this is sort of like virtual machines are fundamentally our settlement components intend machines adjust an a high level of abstraction to make developers and application users lives easier um really

think about interfaces not intermediaries uh I think if we all start becoming too reliant on the intermediaries we've kind of failed at what the space was supposed to achieve which is actual decentralization and sensor resistance um every time you use an intermediary your trust model just looks a lot more like web to what does Universal intent machine mean for ethereum well it gives you intent Centric daps and fully generalized intent 10 Centric deps gives you a standard for intense and gives you the ability to settle on ethereum or The Wider ecosystem we spoke a little bit about the affordances that a Nora gives you here around permissionless infrastructure intent level as well as intent machine composability the ability for the first time to have incredibly flexible generalized information flow control and the ability of heterogeneous

trust models um and yeah then we spoke about some novel ideas for daps on e theum um again if you would like to this is a very brief sort of 20 minute like brief introduction right if you'd actually like to learn more about how a normal on ethereum looks like and how it works and a lot of the underlying research around generalized sequencing um scan this QR code it's a very cool post that my co-founder wrote onne research um it is dense it will take you probably two hours to read easily um yeah I'll leave this up for another 10 seconds or so um all right with that thank you very

much this was ethereum's intent machine and I hope you enjoy your day