======================================================================== Reimagining the AMM with 1inch Aqua Speaker: Tanner Moore — 1inch ETHGlobal Tokyo 2026 · Workshop · Friday, September 25, 2026 Video: https://www.youtube.com/watch?v=q96vlWoZCd0 Transcribed with aloha by the AI ʻohana 🌺 ======================================================================== [00:00] Hello everybody, let's get started. [00:13] My name is Tanner, I am a technical account manager at 1inch, and today we're going to [00:19] talk about reimagining the AMM with 1inch Aqua. [00:25] So today we're going to talk about the current landscape of DEXs, what Aqua is, and how it [00:30] reimagines AMM design, tools we have built to streamline Aqua development, extending beyond [00:37] just AMMs with 1inch Aqua, benefits for LPs, traders, and builders, and then we'll wrap [00:43] up with a brief touch on our 1inch bounties. [00:47] So let's get started. [00:49] So we're going to go over an example of a very common way we all think of AMMs today, [00:53] with a very simple example of Bob the LP, who wants to earn yield on his Ether and USDC. [01:01] He will find eventually some DEXs that he can deposit his funds into, we'll just say [01:05] it's a wrapped Ether USDC pool on Uniswap V2, and he will deposit his Ether and USDC [01:11] into it. [01:12] The Ether and USDC pool will now hold his funds, and he'll have some sort of redemption [01:16] to that later. [01:18] And another person, a trader, will come in on the other side, we'll call her Alice, [01:22] and she will have Ether, and she will find his pool and say, okay, I want to trade my [01:26] Ether for his USDC, or the pool's USDC. [01:30] She sends her Ether into the pool, she gets the USDC back, and she is happy. [01:36] Bob also gets a small amount of USDC in the form of a fee, which is the whole reason [01:40] he was depositing his funds in the first place, was to earn a yield on them. [01:43] And Bob is happy. [01:45] But as we all know, there are many, many more pools and many more DEXs than just that [01:49] one in the example. [01:50] There's Curve with its own LPs, there's SushiSwap with its own LPs, and this list would obviously [01:54] get very long if we tried to be exhaustive. [01:56] And there was this famous problem that happened at the beginning of the DeFi era, and that [02:01] was, where does Alice actually go to trade these tokens? [02:07] And as many of you know, because a lot of people have been here a while, this was solved [02:09] a long time ago with aggregators. [02:11] One inch is one of the leading aggregators. [02:13] We also have our own competitors as well. [02:15] And this solved the issue where Alice just goes to some front end, some aggregator, [02:19] and then all of the complexity gets completely taken away, and they don't have to worry [02:23] about it anymore. [02:24] It's the best rate for the token they're trying to swap, and they are very happy. [02:27] But besides the liquidity just feeling really nice to Alice in this case, the reality is [02:36] the fragmentation actually was accelerated by this abstraction. [02:39] Because people didn't really need to solve unifying liquidity because the aggregators [02:42] were just a layer put on top of it, and it just kind of pushed that problem very, [02:45] very far down the road, years down the road. [02:49] Most of these DEXs, not all of them, but most of them, reimplemented very similar [02:53] complexity, very similar counting, similar settlement. [02:56] Sometimes they just cloned the contracts, made a small tweak to them, called them audited, [03:00] and then sent them on their way. [03:01] And this just led to a lot of hacks and other problems in the future. [03:04] And fragmentation, as I mentioned earlier, continued to go along with it. [03:09] So today, we're going to talk about the drawbacks of the system, not from traders' [03:12] perspectives, but the LPs' perspectives. [03:15] So when you're an LP, actually choosing where you want to deposit liquidity really, really [03:20] sucks. [03:21] You have to basically go through all of the different DEXs that you've heard of and evaluate [03:25] the security of them, how long they've been around, what audits they have, and you have [03:29] to try to pick the place that has the best yield with factoring all of those other [03:32] things into account. [03:36] The next one is LP participation has a pretty high opportunity cost. [03:40] If Bob decides that he wants to put his funds on Uniswap, he no longer can earn [03:44] yield on Dodo, Curve, any other DEX that's available to him. [03:48] And if he had a pair that was like Aave Ether, he would now no longer have access to [03:53] Dow Governance, because a lot of the older governance systems just checked the balance [03:56] of your wallet, and that's how they gave you your weighting for if you participated [03:59] in the governance side of things. [04:01] The third is moving funds is just generally high friction. [04:06] If Bob chooses to go with Uniswap, he probably wants to go to their website and validate [04:10] that the contracts that he's interacting with are actually the ones they publish. [04:14] He probably wants to verify the transaction does what he thinks it's going to do through [04:19] some sort of simulator, like Tenderly, and he definitely wants to check the call data [04:22] on his hardware wallet before he actually signs a transaction. [04:25] Once he does all of that, it's inside of Uniswap, and if he wants to pull it out [04:28] of Uniswap, he has to do somewhat of a reversal of everything I just said, and then [04:32] he has to start the process all over again with the next DEX that he's going [04:35] on to. [04:36] A lot of verification, a lot of tedium, and you need to be very careful so you [04:38] don't lose your funds. [04:40] And then obviously rinse and repeat every single time that happens. [04:44] And fourthly, new projects just continually increased this fragmentation and made it [04:48] harder to be an LP, and they even materially incentivized it through boosted [04:52] pools, through token emissions, all trying to fight and fragment that liquidity even [04:58] further. [04:59] So one inch looked at the existing system that we all know today, where there is a [05:04] trader on one side, an LP on the other, and an AMM in the middle, and we asked how [05:08] can we create a system that follows the mental model that everybody has of AMMs, but [05:13] actually directly connect these traders to the LPs, both on pushing the funds to the [05:17] LP and pulling the desired token out of the LP. [05:22] And that is where one inch Aqua was born. [05:24] So let's talk about one inch Aqua. [05:27] The liquidity stays in LPs wallets. [05:29] You no longer are depositing into this other contract where the funds kind of sit [05:32] and then you earn fees and then eventually pull that stuff out. [05:35] It just stays on your wallet the entire time. [05:37] The liquidity that you do participate in Aqua with is not bound to any specific [05:41] trading strategy. [05:42] It actually is more committed but loosely, in the signature sense, but not actually [05:47] physically bound to it. [05:49] And settlement from the user's perspective stays atomic. [05:51] So this means that people who interact with an AMM on Aqua will get a very [05:57] similar experience to what they are used to already, where you can just go to a [06:00] block explorer and you can see the transaction where their token leaves the [06:03] wallet and the one they get comes back. [06:06] So let's talk about the architecture. [06:08] Aqua has three main components. [06:10] We have the Aqua router, Aqua apps, and strategies. [06:15] The Aqua router is simply an 80-line smart contract and it is responsible for [06:19] three core functions. [06:21] LP registrations, so what wallets are actually participating in Aqua. [06:25] Balances, so how much of each token is committed to each Aqua strategy inside [06:30] of the system. [06:31] And swap settlement, so it is the thing that actually has the permissions to pull [06:35] funds out of a wallet on behalf of an LP and give it to somebody who's [06:39] interacting with the system. [06:42] The next is Aqua apps, so these are the actual swap logic implementations. [06:47] So you can think of constant product, concentrated liquidity, stable swap, [06:51] and many more. [06:52] These are all implemented as an Aqua app inside of the system. [06:57] And we're going to go on to the next part, which is strategies, which is the [07:02] usage of these Aqua apps. [07:04] So these are the LP commitments to them. [07:06] So if you have a constant product and you want to do it with wrapped ether [07:09] and USDC and one ether and 1500 of USDC, that would be the actual strategy [07:14] that is tied to that Aqua app. [07:16] Another example would be stable swap. [07:18] You have USDT, USDS, and 1000 of each. [07:22] So if we go back to the example earlier where we went through kind of a very [07:25] simple LP position and we go through it from the Aqua perspective, it will [07:32] hopefully make more sense. [07:33] So now, from Bob's perspective as an LP, we have between him and Alice, [07:38] the Aqua router, and a constant product AMM Aqua app. [07:43] The first thing that Bob will do is he will either approve or permit the [07:46] Aqua router to access his funds, and he will call Aqua.ship. [07:50] And this is going to have all the information about which tokens he wants [07:53] to provide, how much of each token he wants to provide, and that will all be [07:55] registered inside of the Aqua router's contract state. [07:59] As part of this registration with the state, it will emit some sort of event [08:03] which will be picked up by an indexer. [08:05] Anybody can run an indexer, but we will obviously have our own official [08:08] indexer, and this will also keep track of all of that state for Bob's [08:12] registration, his token, and his balance. [08:15] Then when a trader comes by, they can get this information from an indexer. [08:20] So we'll just say Alice gets this information from the indexer, and she [08:22] wants to now get a quote to see if this is where she wants to trade. [08:25] So she will go to the Aqua AMM app, and she will pass in all that [08:28] information that she got from the indexer about Bob. [08:30] If she likes what she sees, she will then shove her Ether into this contract. [08:34] It will verify Bob's commitments against the Aqua router, which is where [08:37] he actually registered his position. [08:39] If that comes back green, then it will push her Ether into Bob's wallet. [08:43] It will pull the USDC out, and it will give it to Alice. [08:46] Alice gets her tokens. [08:47] Bob gets his fee. [08:49] The same effective system exists, except the funds never actually left [08:53] Bob's wallet until the moment that trade happened. [08:56] So that's pretty complicated, but what do we actually get from it? [09:00] Well, now LPs can send and sell committed tokens whenever they want. [09:03] They don't have to go do the withdrawal from the contract earlier. [09:07] They don't need to worry about permission to do that. [09:10] They can just sell it. [09:11] They can send it. [09:12] They can send it to a centralized exchange. [09:14] Whenever they want, there are absolutely no restrictions there. [09:17] They can now participate in governance again, because voting rights that use [09:20] your wallet balance now see the balance inside of your wallet. [09:23] And most importantly, LPs can reuse these tokens for other Aqua apps and [09:28] strategies, and that's a really big one which we're going to talk about next. [09:32] So let's pretend Bob didn't just have Ether and USDC. [09:35] Let's say he had Aave and Tether as well, all in his wallet, and [09:38] let's say he had $1,000 of each. [09:41] So $4,000 of total liquidity. [09:44] Bob can go to the Aqua router, and he can do what we did before in the [09:46] earlier example, and he can say, hey, I have $1,000 of Ether and $1,000 [09:49] of USDC, and I would like to put it into a constant product strategy. [09:54] And so that's $2,000. [09:55] He can do the exact same thing with the full $1,000 of Ether and $1,000 [09:59] of Aave, and he can do it a third time with the full $1,000 of Ether [10:03] and $1,000 of Tether. [10:05] So now, even though his actual liquidity is $4,000, he has an [10:09] effective liquidity of $6,000. [10:13] So on the other side, Alice can come in and she can say, hey, I [10:16] want to swap my USDC for Ether against Bob's position. [10:20] Trader Tony can come in with his Aave, and he can trade that for [10:23] Ether against the same wallet, Bob's wallet. [10:25] And a third trader, Craig, can come in with USDT or Tether. [10:29] I keep using those interchangeably, but they're the [10:30] same thing. [10:31] And he can swap that for the Ether as well. [10:34] Now, you can probably guess that if two large people came in at [10:39] the exact same time and sucked all the Ether out of Bob's [10:41] wallet, well, surely one of those would fail, right? [10:44] And the answer is yes. [10:46] I mean, he doesn't actually have more than $1,000 of [10:48] Ether, but if one person comes in and sucks it all out and [10:52] the other person comes in, yeah, it's going to fail, that [10:55] probably won't happen a lot in practice because our indexer [10:57] will check balances and protect against that. [11:00] But occasionally, this will happen. [11:01] But we do not think it's going to be a big enough problem to [11:03] where it makes it a net negative for the ecosystem. [11:06] So we talked about constant product to the Aqua app, but [11:09] we could obviously do concentrated [11:10] liquidity as an Aqua app. [11:12] We could do stable swap as an Aqua app. [11:14] There are many Aqua apps, each for the various different [11:17] types of trading strategies. [11:18] And as we started to think about all these Aqua apps that [11:21] would be developed, we realized that there would be a [11:23] lot of overlap with the custody, with the withdrawals, [11:26] all the boilerplate that basically is not the price [11:29] curves, and so we decided to release something at the same [11:32] time, which we call swap VM, which itself is also an Aqua [11:36] app, and this is going to try to extract away all of that [11:40] boilerplate so people can simply focus on the swap [11:42] strategies themselves. [11:44] So with swap VM, you can think of this as just a building [11:48] block system for swap platforms. [11:51] So you can think of a price curve as a building block, [11:54] maybe take your restrictions if you want to do like OTC [11:57] trades or some kind of limit order, fees obviously because [12:00] you want to incentivize people that are using your [12:01] trading strategy, and maybe deadlines if you want that to [12:04] only last a certain amount of time. [12:07] So if we look at the left side, don't try to read all [12:09] this code. [12:09] This is just an example, which I will go over right now. [12:12] If you look at the left side, you'll see a very simple [12:15] constant product implementation inside of Aqua in [12:19] Solidity, because Aqua apps are contracts that you [12:21] deploy on Ethereum. [12:22] And this would have very common things that you would [12:24] expect like swap exact in, swap exact out, all [12:28] implemented in the traditional way as an Aqua app on [12:30] Solidity. [12:31] And on the right side, you would see what it would look [12:33] like if you did the exact same thing on swap VM. [12:36] The first thing you'll notice besides just how small [12:38] it is, is it is also written in JavaScript. [12:41] And that is because you are no longer deploying smart [12:44] contracts, you're actually building byte code for the [12:47] swap VM, because it actually is a swap VM. [12:50] So in here, you would just initialize the builder, you [12:52] would say, I would like there to be a fee, I would like [12:55] to use XYCSWAP, which is just constant product, and then [12:58] you call build, and you get the byte code for the swap [13:01] strategy that you're interested in actually providing [13:03] to other people. [13:04] So these building blocks under the hood are [13:06] actually opcodes. [13:09] There is one additional thing that's worth [13:11] calling out, which are called extractions. [13:13] So maybe your swap strategy would like something other [13:16] than just being isolated to a single contract. [13:19] And so an example of when you use an extraction is if you [13:22] wanted maybe oracle data as some part of your strategy. [13:27] One other thing that's important to call out is we [13:29] do encourage people for this hackathon to write custom [13:31] opcodes. [13:32] This obviously would require you to redeploy the swap VM [13:35] contract, that's totally OK for the hackathon. [13:37] The one really important asterisk here is the swap VM [13:40] contract is the max size that Ethereum allows, so you would [13:42] have to pull out opcodes you are not using to fit the [13:45] new ones in. [13:46] So don't feel like this is required or anything, it's [13:48] just encouraged if you guys want to get really creative [13:50] and go beyond just what we're providing with swap VM today. [13:54] Next, let's talk about how Aqua actually can extend [13:56] beyond just AMMs. [13:57] Everything so far that we've talked about is just AMMs, but [13:59] it doesn't need to be that way. [14:01] We have had our Aqua bounties present at like maybe [14:05] four or five hackathons so far. [14:07] And we've had people build prediction markets on Aqua, [14:10] privacy pools, flash loans. [14:12] We've seen a lot of really creative things, so we want to [14:14] stress that you guys can do that as well. [14:16] So if we go back to our earlier example of a constant [14:18] product Aqua app, let's just shift this a little bit. [14:21] So it becomes a flash loan Aqua app. [14:23] So the bottom right is where the Aqua app used to be. [14:26] We now have flash loans and we can pretend that Bob [14:29] provided a, committed to a strategy where he provides [14:32] USDC to that same flash loan app. [14:34] Alice would come in, she would send the borrow amount [14:37] and the payload for the flash loan. [14:39] It would then go to the Aqua router and it would verify [14:42] the commitments of Bob from earlier. [14:45] Once that's all verified, it would send the USDC out to [14:48] the flash loan Aqua app and it would execute that [14:51] payload and then send the USDC back to Bob's wallet [14:54] with some sort of fee that Alice paid for as well. [14:59] So we've talked about. [15:00] Flash loans briefly now we talked about constant product a lot for most of the earlier part of the presentation [15:04] But obviously this can keep extending beyond that to maybe stable swaps with three or four coins inside of it [15:09] And the most important part about this ecosystem is all of this can exist in parallel using the same funds from a single wallet [15:17] So what is the impact of this on the greater DeFi market? [15:22] Well for LPs this means that you can have a higher utilization of funds or just simply put better yields [15:28] for DeFi users this means that there are better prices just in general for DeFi apps and [15:34] for builders [15:34] This means that you have a fast path to production and just users in general because as more and more people are using this [15:41] Ecosystem for DeFi it's going to be easier to get more and more eyeballs on it to push your apps and get people to [15:47] Use it sooner. So lastly we'll talk briefly about the bounties [15:52] We have five thousand dollars total for building a brand new aqua app on one inch [15:56] That's twenty five hundred first fifteen hundred for second and one thousand dollars for third [16:00] And then our second track is extending it on an existing [16:04] existing app to include aqua and this one is two thousand dollars total with fifteen hundred dollars for first and five hundred dollars for second [16:11] So that's everything for me. This is a QR code that will take you straight to our bounties page [16:16] You can easily find this on the eath global website [16:18] But just in case you want to grab it now that'll just take you straight there and that is everything for me [16:22] So thanks guys [16:28] I think we might have a few minutes for questions. Yeah, so if anybody has any questions, I'm happy to answer some yes in the back [16:45] You can interact with a deployed aqua app just as like a sub call it shouldn't be any problem [16:52] Is that is that kind of what you're you're thinking like can you just call into it from like any from a call? [16:56] That's already existing inside of a contract like it like a sub call inside of a call inside your contract [17:02] Say that one more time [17:15] You mean for the commitments like the the [17:21] You'd yeah, I would think so. Yeah. Yeah [17:26] Yeah, I'll try to answer that better [17:28] Maybe you can explain to me just outside in the hall and then maybe we can talk about it more so I can get a better idea [17:32] Of of what you're trying to build. Yeah, sorry [17:37] Any other questions [17:40] Yes [17:44] Did you ask if you can do custom opcodes on soft VM? Yes, you can it is the the contract itself is already at the max size [17:52] Allowed by aetherium [17:52] So find opcodes that you don't want to use and pull those out and then that'll make room for the custom opcodes that you're that [17:58] You're creating. Okay, cool. Thanks guys