Proteus AMM Engine
An Ocean-native AMM primitive
What is Proteus
Proteus is an AMM (Automated Market Maker) engine that is capable of approximating any bonding curve, enhancing Shell Protocol's market-making strategies. It is capable of extremely precise liquidity concentration across multiple price ranges, but still uses fungible LP tokens.
There are two implementations of Proteus: Static Proteus and Evolving Proteus.
Static Proteus implementation details
It turns out that in order to create any bonding curve and achieve extremely precise liquidity concentration, all you need is 4 parameters: list of slopes of the radial lines in order to create slices, list of values representing relative scale factors of each slice, a list of a values, and a list of b values representing price points of the particular slice.
Those params are labeled as lists of:
ms - representing a list of slopes of the radial lines
_as - list of price points of the particular slice
bs - list of price points of the particular slice
ks - list of values representing relative scale factors of each slice
Determining ms, _as, bs and ks values
Determining ms
, _as
, bs
and ks
values is not an easy task to do. In order to understand them better you may want to spend some time going through the files in scripts/params
directory of our public repo. You will find examples of different type of pools in that folder, like well known constant product and stablepool.
Evolving Proteus
Evolving Proteus is an advanced version of the Proteus AMM engine, with which the bonding curve can change every block (or "evolve") during a specified time frame. Evolving Proteus also differs from Static Proteus in that Evolving Proteus only has one slice. Evolving Proteus is good for liquidity bootstrapping, or any use case that requires a Dutch auction. It is also good for creating managed pools.
For a thorough understanding of Proteus, it is advisable to first read the initial version of the Proteus White Paper, followed by the updated (second version) White Paper, and finally, the Update 3 document. The actual implementation of the Ocean can be accessed in our public repository, located within the Proteus.sol file at the provided link.
Last updated