Liquidity Pools are simply pools of tokens locked in a smart contract. The smart contract logic will determine how the tokens function, and how this capital is utilized by the liquidity pool. Users deposit tokens into the pool and therefore provide liquidity.
AMMs are liquidity pool smart contracts that use an Automated Market Maker algorithm in order to use the liquidity in the pool for trading/exchanging.
Until now, at a minimum, liquidity pools have always consisted of two tokens; Token A and Token B. These two tokens create a new market for the two tokens to be traded. For example, a liquidity pool with an ETH/USDT pair means you can buy ETH in exchange for USDT and vice versa.
Pricing is calculated using the constant formula popularized by Uniswap:
Where x is Token A, y is Token B and k is the invariant. The constant product market maker algorithm makes sure that the product of the two tokens in the liquidity pool always remains the same. As a result, the ratio of the tokens in the pool dictates the price and the amount of liquidity in the pool affects slippage.
Stablecoins are a type of cryptocurrency which are designed to minimize volatility. They are often pegged to a stable asset or basket of assets. For MonoX, the vUSD stablecoin is pegged at 1:1 with USD.
Single Token Liquidity pools function by grouping the deposited token into a virtual pair with our virtual USD stablecoin (vUSD), instead of having the liquidity provider deposit multiple pool pairs, they only have to deposit one. In essence, liquidity providers only need to deposit “Token A” to the pool reserve and each token is paired with the vUSD stablecoin. There is no pool weighting, only an amount of Token A reserve in the pool based upon how much liquidity has been provided to the pool.
Monoswap uses a similar ratio as Uniswap which forms a price curve. However, ours is based on a starting price and a would be price. When users first add liquidity to the pool they set a starting price, the assets are backed by vUSD only when someone initially buys at the starting price. This is because the vUSD balance needs to be positive for trustless listing pools.
If a user sells from the starting price the asset depreciates in value, if someone buys from the starting price the asset appreciates in value. As such, we use starting price and would be price instead of the ratio between Token A and Token B in the xy=k constant product formula. Our pricing algorithm is based on Uniswap’s model found here.