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
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.
EthUniswapPCVController::_reweight() function after
_returnToPeg() a call to
EthReweightQueuer would be performed.
EthReweightQueuer contract would work as follows :
- A function to transfer FEI to
EthReweightQueuercontract 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
EthReweightQueuer. All FEI held by the
EthReweightQueuerare burnt, and an amount of ETH equal to the current peg price of this burnt FEI is transferred from
- 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
EthReweightQueuerequal 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
EthReweightQueuerthan 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.
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.