What is the Problem Being Solved?
We don't currently have support for trading stable currencies in our AMM. An interim approach would be to allow them to be traded using the x*y=k curves we currently have, but that means we should think about the upgrade path to move them to something better.
Description of the Design
Various possibilities were discussed (@Chris-Hibbert @dtribble, folks from RMIT) in a meeting on Feb. 23.
Progress is being made on a stable swap mechanism that would allow various stable coins to trade against one another with low slippage.
There's a plausible design idea for integrating this with the AMM. When a trade is proposed between two coins participating in the stable curve, it's treated as a single pool by the current virtualPool framework. If a trade is proposed between a stable coin and something else supported in the AMM, it's treated as a doublePool trade (from X to RUN and RUN to Y). I think pool fees are charged inside each pool and protocol fees are charged outside, so this should continue to work.
It would be nice if we could declare that some stable coins (like USDC) are stable enough that we can issue unlimited RUN against them. In this case, we need another contract that accepts USDC (perhaps up to some limit) and mints new RUN against it. It would also be able to trade in the reverse direction, up to the amount of USDC it holds or some lower limit we may impose. To the limit of its balances, this would ensure parity between RUN and ultra stable tokens.
Another idea we considered was to use the stable curve implementation to support trading among various mutually stable currencies, like WETH and other bridged ETH equivalents. It's not obvious how to integrate this into the AMM, which uses RUN to bridge between other currency pairs, but this might be a useful additional institution.
Security Considerations
The implications are more relevant to economic stability than to software security.
Test Plan
the current state isn't clear enough to speculate about testing yet.
What is the Problem Being Solved?
We don't currently have support for trading stable currencies in our AMM. An interim approach would be to allow them to be traded using the x*y=k curves we currently have, but that means we should think about the upgrade path to move them to something better.
Description of the Design
Various possibilities were discussed (@Chris-Hibbert @dtribble, folks from RMIT) in a meeting on Feb. 23.
Progress is being made on a stable swap mechanism that would allow various stable coins to trade against one another with low slippage.
There's a plausible design idea for integrating this with the AMM. When a trade is proposed between two coins participating in the stable curve, it's treated as a single pool by the current virtualPool framework. If a trade is proposed between a stable coin and something else supported in the AMM, it's treated as a doublePool trade (from X to RUN and RUN to Y). I think pool fees are charged inside each pool and protocol fees are charged outside, so this should continue to work.
It would be nice if we could declare that some stable coins (like USDC) are stable enough that we can issue unlimited RUN against them. In this case, we need another contract that accepts USDC (perhaps up to some limit) and mints new RUN against it. It would also be able to trade in the reverse direction, up to the amount of USDC it holds or some lower limit we may impose. To the limit of its balances, this would ensure parity between RUN and ultra stable tokens.
Another idea we considered was to use the stable curve implementation to support trading among various mutually stable currencies, like WETH and other bridged ETH equivalents. It's not obvious how to integrate this into the AMM, which uses RUN to bridge between other currency pairs, but this might be a useful additional institution.
Security Considerations
The implications are more relevant to economic stability than to software security.
Test Plan
the current state isn't clear enough to speculate about testing yet.