Hi guys (and particularily @joey that has been doing most of the Solidity development so far),
I’ve been thinking about the situation of the last few days quite and lot, and would like to propose an improvement to the reweight mechanism that will help FEI maintain peg and allow people to exit.
I think the direct incentives are a good mechanism that maintained the long-term peg so far, but it has one main problem : in a situation where there is a lot of sell pressure, only sniping bots can exit, so there is little incentive to buy FEI and get the rewards. It is geared towards long-term peg, and we need a second mechanism to handle short-term peg.
The improvement would consit of making a small update to EthUniswapPCVController.sol and add a new EthReweightQueuer.sol contract.
Similar to what has been done with pre-swapping (made to avoid being front-run by Uniswap liquidity add sniping bots), a pre-commit to reweight would allow average holders to be the first to transact after a reweight, without slippage, for the current ETH peg price.
In the EthUniswapPCVController::_reweight() function after_returnToPeg() a call to EthReweightQueuer would be performed.
The EthReweightQueuer contract would work as follows :
A function to transfer FEI to EthReweightQueuer contract is implemented. When FEI is transferred to the contract, the caller gets minted an equal amount of qFEI-ETH ERC20 (or whatever we name the token). It could also be pre-minted & held by the protocol to optimize gas use.
On reweight, there is a call between EthUniswapPCVController and EthReweightQueuer. All FEI held by the EthReweightQueuer are burnt, and an amount of ETH equal to the current peg price of this burnt FEI is transferred from EthUniswapPCVController to EthReweightQueuer.
A function to redeem qFEI-ETH is implemented. Calling it burns the qFEI-ETH and transfers to the caller a proportion of ETH held by the EthReweightQueuer equal to the percent of total suppy of qFEI-ETH just burnt.
Here are some expected effects of the proposed mechanism :
When FEI is below peg, it may be more desirable to a FEI holder that wants to cash out to commit FEI to the EthReweightQueuer than to incur some burn, because they know they’ll exit at the exact peg price on the next reweight.
Some people will probably set up liquidity mining pools between FEI and qFEI-ETH tokens. The price difference between the two reflects the premium accepted to be able to cash out later. It’s a new low-risk farming opportunity that channels the speculation of current vs future value out of the FEI token when FEI is under the peg.
If multiple reweights happen and a user does not redeem their qFEI-ETH for ETH, the ETH claimable will be an average of the peg price at the time of the various reweights, so there is some kind of impermanent loss here. That impermanent loss can be desirable in some market conditions (short ETH) or the opposite - will be interesting to see what the community does.
The EthReweightQueuer and qFEI-ETH can be declined in other variants shall the protocol have other incentivized pools in the longer term (think DaiReweightQueuer qFEI-DAI for instance).
What do you guys think ?
I’m available to work on a pull request if needed.
Thank you for being this proactive in the search for solutions. Evidently you’ve taken a better look at the code than the rest of us. I have once concern about how FIP-1? might introduce a new vulnerability that I’ll try to explain.
If I understand correctly, FIP-1? does not tamper with the direct incentives mechanisms (beyond whatever tampering is happening behind the scenes right now to fix the found vulnerability).
Currently, bots can buy fei below the peg and get minted fei as a reward. Then one lucky bot will take the brunt of the prize after reweight because by the time they sell a couple of million fei the uniswap market will already be below peg. All the other bots that participated in the speculation now just hold a bunch of fei that they can’t sell any cheaper than what they bought it for. As much as it is unfair that one bot reaped most of the rewards, it’s good that most bots didn’t reap any benefits, because that’s likely to disincentivize them from repeating this perverse behavior.
After FIP-1?, wouldn’t every that buys fei cheap and gets minted fei rewards be able to cash out on them at exactly a dollar by using the EthReweightQueuer? My concern is that this would inspire even more short term speculation than is already going on.
Yes that would be the case, but speculation that moves FEI towards the peg is useful speculation for the protocol and should be encouraged
As it stands now, if you are not operating the fastest bot on the network, there is no short-term incentive to buy FEI & get the mint rewards, because as soon as the reweight happen, the price will be back below the peg, and you will still incur burn losses if you try to get out.
Im optimistic this could actually go a long way to solving the peg problem if set at peg. A rational seller would not sell before reweight as they are guaranteed the peg. Some might for whatever reason sell before rebase but yeah thats the kind of arb the protocol wants that buy at a discount to sell at peg.
The issue at the moment is without change there is little prospect to sell at peg as sellers are front run by bots so capitulating at less than peg.
Then there is the risk that everyone wants out at peg but could be managed through LP incentives. How much PCV is really needed with uniswap v3?
If you have a large enough batched swap, there still will be a huge burn incentive. Because the Burn is this B(x) = m^2 * x * 100, and m is the distance to peg, and there are two m, m_start means m before a swap, and m_end means m after a swap. In the B(x) uses m_end, that means that if a swap is big enough that it moves the price off the peg, then a burn will be applied based on the post-swap price.
In a concrete example, if a FEI is at $1, and a big $30 million swap moves the price down to $0.95, then a 25% burn is applied because the m used is m_end, which is the peg distance after the swap.
This actually means FEI should use a curve style pool with other stable coins, so the slippage is much less and less burn will happen. And save most of the PCV somewhere else to generate yield to buy back FEI. All that ETH could have been generating $250k-$500k a day yield. If that yield could have been used to buy back FEI under the peg and burn it.
This is why I suggested that the EthReweightQueuer is not a simple queuer to run a large Uniswap swap, but actually happen at the ETH peg price without slippage.
After _returnToPegthe PCV is out of the Uniswap liquidity pool, so any changes can be done to the amount of ETH in the PCV, and FEI can be burnt accordingly, out of the mechanisms of burn/mint that happen in the incentivized pool.
It would be the only opportunity to trade at exactly the peg.
alright that’s actually a good idea. but that’s similar to the idea of providing a 1:1 price floor? What happens if there is not enough collateral during a bear market and a bank run? If you limit the queue size, then bot would try to get in the front of queue, no different from what bots are doing now.
Could snapshot holders and allow a max percentage but this might be discourage future holding and do more damage longer term so could be just better to weather the run though.
Long term I believe the PCV will be diversified to multiple tokens & protected by options etc, but as it stands now, there is only so much we can do if the protocol becomes undercollateralized.
If PCV drops to 50% of the circulating FEI today, each FEI will be redeemable to only 50% of a $.
I like to think of FEI as debt from the protocol to users of FEI. If a user owns 10% of the circulating FEI, they should be entitled to 10% of the protocol collateral, so 10% of the ETH. If ETH crashes 50% overnight and everyone panic queues into the EthReweightQueuer (or whatever mechanism that provides a 1:1 price floor), then comitting ETH to get FEI and then redeeming those ETH from the PCV back using FEI in the EthReweightQueuer will have been no different than holding ETH the whole time, users will incur a 50% loss in USD. But a 0% loss in ETH.
Of course it’s more complicated than that, because TRIBE actually control the PCV, and not FEI (and part of the ETH/FEI/TRIBE went to the Fei Labs company). And in such a catastrophic situation, all interests are conflicting. But I think that’s a discussion for another topic ^^
But that speculation is not really useful in this scenario because the protocol is directly and effectively immediately paying for all of the arbitraging on the incentivized market. You see what I mean? It’s paying a dollar for every fei bought in order to restore the peg when it could’ve paid 90 cents, or whatever it is each user payed.
You might say that this does not necessarily happen because the amount of speculation might be large enough that there’s never a need for reweight. But it seems to me likely that the existence of the EthReweightQueuer will make reweights desirable to speculators. Because after a reweight they’ll be able to sell off arbitrarily large amounts of fei with no slippage, which would not be the case if they collectively restore the price back to peg through pure buying power.
I don’t know if that’s what you meant, but the behavior I descibed is indeed not a desirable one, because we don’t want the protocol emptied by buying for 1:1* if PCV drops below the circulating FEI.
*proportionally in terms of % of FEI circulating & % of PCV - the situation I described.
In that situation, we indeed want people cashing out to incur some losses, to reach some kind of equilibrium and keep some ETH in the protocol and maintain a corresponding quantity of circulating FEI. Some might be willing to sell their FEI at 90 cents to the protocol in that situation, then the protocol does not have to pay a whole $. Eventually the circulating FEI supply drops and an equilibrium is reached between PCV and circulating FEI.
The EthReweightQueuer could be disabled when the protocol is undercollateralized, or do a burn as described by @Choochoo, equivalent to a large Uniswap swap. It would only be a safeguard to release the sell pressure when the protocol is overcollateralized, as it is now. In the current situation, where we are x% overcollateralized, people cashing out at 1$ is a net x% win for the protocol already, and it would also guarantee that FEI remains liquid (easy cash in & out).
I’m picturing a scenario where the protocol is still overcollateralized and the protocol has no particular problem paying for fei on a 1:1 basis. My argument is that to the extent that this mechanism is helpful for speculators that are helping restore the value of the fei to its peg, it’s more expensive for the protocol than simply spending a portion of its PCV to restore the peg on the incentivized martket.
I agree with you that your solution offers people wanting out a reasonable opportunity to sell fei at a fixed price, say $1 or $0.90. My concern is that it would also subsidize people that are buying below the peg with the sole intention of selling at the peg, but it would incentivize those very people to not buy enough to actually restore the peg because in the case of a reweight they would stand a better chance of selling at a fixed rate of a $1 or $0.90 without incurring the costs of slippage or the risk of being frontrun. Does that make sense? I understand I might not be doing a great job of explaining myself and if you’d like I can sit down with more time to explain my concern more clearly.
Imo, THE holder should not pay for the burn, the seller should, because the seller will force the system to reweight the price. As I said , just don’t giving fei as reward, giving tribe instead (with lockup), and the seller need to pay tribe for the penalty.