Shell Launches Proteus AMM Engine

A new leap forward for DeFi

Naiad Rising

Today is a big day. After over eighteen months of research and development, we are finally deploying Proteus, our groundbreaking AMM engine, to Arbitrum mainnet! The first live Proteus pool is DAI+USDC, with many more to come. As of right now, you can swap and LP with DAI and USDC using our Shell app on laptop and desktop. Mobile support is in the works, with a launch date coming soon. Remember, this is a new financial primitive, so don’t risk any tokens you can’t afford to lose! (Proteus white paper here and GitHub here. Desmos demo of the Proteus algorithm here.)

Proteus is the next step in the evolution of AMMs. It’s simultaneously more capital efficient than Uniswap v3 AND more user-friendly than Uniswap v2. How is this possible?

Capital Efficiency

An AMM, short for automated market maker, is an algorithm that takes our tokens and trades them on our behalf. Effectively, we tell the algorithm how much to trade in a given price bucket.

For example, we could tell the AMM to trade 10 ETH when the price ranges from $1,400 to $1,600, and trade another 10 ETH when the price ranges from $1,600 to $2,000. Overall, liquidity will be more concentrated in the $1,400-$1,600 range and less concentrated in the $1,600-$2,000 range.

The more precision we have in setting these price buckets and the more price buckets we have, the better the AMM will be at making trades and the more money it will make for us.

You can think of price buckets as pixels on a television screen. The more pixels we have, the better the image quality. Would we want a clunky TV from 2005, or an ultra-high-resolution 4K TV from the 2020s?

This is where the advantage in capital efficiency of Proteus takes shape, versus Uniswap v3. Proteus has much higher precision, and can support more price buckets than Uni v3.

Consider the DAI+USDC pool on Uniswap. Virtually all of its liquidity is concentrated between 0.9998 and 1.0002. Due to the constraints of the algorithm, it’s hard for LPs (liquidity providers) to do much better than this when using Uniswap. This is because the smallest possible price range for a bucket is 0.0001. Additionally, if you want to add more price buckets, each bucket requires minting a new non-fungible LP token, which is neither cost-effective nor convenient.

Fig. 1: The only viable LP strategy on Uniswap v3 for a DAI+USDC pool is to deposit in the range of 0.9998–1.0002.

When we look at a histogram of the DAI/USDC exchange rate over the past year, we see that there is a lot of precision Uniswap v3 isn’t capturing. If we can find a way to match our price buckets to the data, we ought to be able to improve the performance of our AMM.

Fig. 2: Histogram of DAI+USDC price history over the past twelve months.

Enter Proteus. Unlike Uniswap, Proteus has practically no limit to its precision (the parameters for our first pool are specified up to the tenth decimal place). Additionally, the entire distribution can be encapsulated in a fungible token, with no need to mint multiple NFTs. The figure below shows the approximate liquidity concentration of the DAI+USDC Proteus pool we just deployed. Notice how it corresponds to the price histogram? This precision unlocks a new level of performance. To put it another way, Proteus lets us trade in 4K, better mapping our price curve to the intricacies of the market.

Fig. 3: Approximate liquidity concentration of the Proteus DAI+USDC pool

User Experience

But, surely this level of trading performance comes at the expense of usability? Surely Proteus pools are only for the most elite financial engineers?

Nope. In addition to being more flexible and precise, Proteus is even more user friendly than Uniswap v2 (nevermind v3).

If you want to LP into a Uniswap v2 pool, you must have equal amounts of each reserve token. If you don’t, you’ll have to swap for the correct amounts before you LP. Proteus lets you LP with only one token, or two (they don’t even have to be equal amounts). This is known as single-sided liquidity provision.

If you want to migrate your funds from one Uni v2 pool to another Uni v2 pool, you first need to make a withdrawal. After that, you must swap (possibly twice) to get the correct ratio. Only after all this, two-to-three separate transactions in total, can you LP into the new pool.

With Proteus, migrating LP funds is literally as simple as doing a single swap.

Fig. 4: Providing liquidity with Shell. It’s that simple.

How is Proteus so easy to use? Under the hood, Proteus is built on the Ocean, Shell’s composability layer. Moving tokens across the Ocean is seamless and gas efficient. (Read more about the Ocean and its capabilities here.)

History of Proteus

About a year ago, we unveiled a proof of concept for an “automated market maker engine” that could precisely replicate any bonding curve. Just as a video game graphics engine lets game designers build more powerful video games, Proteus would let financial engineers design more powerful AMMs.

Since releasing our initial proof of concept, we’ve been quietly iterating on Proteus behind the scenes. What we are shipping today is the fourth iteration. We completely refactored our core AMM protocol four times in the past twelve months, all while shipping the Ocean, Shell Points, Government Toucans, etc. It’s been a busy year!

Of course, this is just the beginning. We are committed to developing the most advanced market making technologies and putting them in the hands of you, the user. The first Proteus pool ever built is now freely available for anyone to swap and LP! Check it out, share your thoughts in our Discord, and stay tuned for more Proteus improvements to come.

Join the Shell community!

Stay up to date on the latest Shell news:

Join the Shell mailing list here.

Join the future of DeFi.

Use the app

no account needed