Wouldn’t the user already be exposed to CELO price volatility if they have to first acquire bunch of CELO and then somehow batch exchange this CELO → cUSD?
I’m not sure that there’s a way to go from fiat → CELO → cXXX with no CELO price volatility risk, but borrowing cXXX against CELO seems to me to be an approach that is intentionally designed to take on more CELO price volatility risk.
It’s a difference of being exposed to that volatility for a few days (i.e. the time it takes to move out of CELO into cUSD) vs being exposed to volatility for as long as you want to use cUSD (hopefully much longer than a few days!).
Separately, one of the advantages I think the Celo protocol has over Maker is that supply of the medium-of-exchange token can scale with demand for the token rather than demand for leveraged long positions on the underlying collateral (e.g. ETH)
If the user spends a week acquiring CELO, and there is another week long process (i.e. involving governance) to convert this CELO → cUSD, wouldn’t they be exposed to potential 2 week long period where price of CELO can change dramatically and affect the overall trade?
I’ve never purchased CELO (or anything else, for that matter) OTC so I will defer to @albertw to shed more light on what that looks like. However, I would seem to me that the user only has exposure to CELO after the purchase is made, which means that their exposure is limited to the time it takes to convert that CELO into cUSD.
For that, I’m not convinced that this can’t be done more quickly.
The main concern that I’ve had when thinking about this feature (and more broadly, about Mento) is how to design it in a way that is robust in the face of oracle attacks.
In a fantasy world where we could guarantee that the oracle feed always reflects the “true price” of CELO (whatever that means), I’m not sure a Granda Mento feature would be necessary, as Mento’s “order books” could safely be way deeper. Obviously that’s not how oracles work; participants can be malicious, keys can be compromised, and the information the oracles report can be manipulated (e.g. by pumping or dumping on centralized exchanges).
To protect against this, Mento incorporates a negative feedback mechanism in the form of a constant-product-market-maker*, which essentially limits trading volumes. This allows the protocol to be parameterized based off of CEX order book depth such that the cost per unit time of manipulating the oracle price feed is less than the profit per unit time that can be extracted out of Mento.
This is of course at odds with the goal of being able to exchange lots of CELO for cXXX relatively quickly.
However, you correctly identified in your first post an alternative way of protecting against oracle attacks, which is to let other users provide price information. As you point out the UX is slightly worse (e.g. exchanges do not settle instantly), but that might be acceptable to folks who want to make fewer but larger exchanges.
One, not-very-thought-through solution that is illustrative of the direction I’m thinking is to allow for anyone to buy [between 1M and 10M cUSD per day] at the current oracle price (plus some protocol defined spread), with a [4 day] period for someone else to offer more CELO and take their place. This should ensure that users cannot exploit an attack on the oracles (as they should be outbid), and ensure the market has sufficient time to adjust accordingly before the purchase is completed.
However it seems like your concerns are different, and I’d like to understand them better. You talk about fairness to CELO holders and risk to the reserve, can you elaborate on those points?
* I just want to reiterate that I think it's time to look at alternative negative feedback mechanisms that are more efficient, but IMO that's a mostly orthogonal conversation.