@dokwon yes we are thinking the same approach. There are several modifications that need to be made to the constant-product model to work for us though. After some thought I think that the adaptation is not that simple. To name a few issues:
- When defining the constant product we can’t use the size of the Luna pool per se, since its fiat value will fluctuate and so will the fiat price of Terra being offered. We need to define the product using the fiat value of the Luna pool, and therefore adjust the size of the Luna pool on oracle updates.
- The constant product model offers the same marginal price to buyers and sellers, which doesn’t work for us since we want to enforce a minimum spread on both sides. So we need to offer different bid and ask prices even for marginal trades.
- We need a way to “replenish” liquidity to prevent spreads from growing too large, which of course uniswap doesn’t do. I think there are problems with both approaches we have discussed (reset cap or trailing cap) – a simpler approach that I think is more robust is to add Terra or Luna liquidity back to the pool at a constant rate until a target size is reached (equivalent to a 24h cap).
I wrote up a detailed proposal addressing the above, including some graphs showing how I think this may work. Let me know what you think and let’s iterate.
constant-product-proposal.pdf (220.9 KB)