VIP-7: Proposal to deploy an upgraded Fuse stablecoin

This proposal has been created by the core team.

SUMMARY
Fuse Dollar, fUSD, is the Fuse Network’s native stablecoin, pegged to USDC in a 1:1 ratio. This proposal introduces a new fUSD mechanism which implies pegging to a basket of a variety of stablecoins, and not just by the USDC stablecoin.
Because fUSD will essentially be a liquidity pool consisting of a basket of stablecoins, it is understood that fUSD is a yield-bearing asset and its holders are entitled to swap fees.

MOTIVATION
The idea of a new fUSD model came in light of recent events in the stablecoin market, specially the fall of UST and algorithmic stablecoins losing popularity. By diversifying the basket of assets fUSD is pegged to, we mitigate the exposure to fUSD de-pegging from the $1 price and, therefore, add an extra layer of security to user funds.

PROPOSAL
We propose a change in the mechanics of the current fUSD model by expanding the basket of stablecoins it is pegged to.

fUSD will always be pegged to a basket of stablecoins and no volatile assets. This is because stablecoins are expected to consistently trade at near parity, strongly reducing the potential of impermanent loss. In order to do so, we will use weighted pools. Weighted pools enable users to build pools with different token counts and weightings, such as pools with 80/20 or 40/30/30 weightings. These pools allow users to have control over exposure to certain assets while maintaining the ability to provide liquidity. Weighted pools come with predefined minimum and maximum weights to ensure stable exposure to underlying assets. With the recent FUD around stablecoins, even prominent ones such as USDC or USDT, the fUSD stablecoin will allow for rebalancing of token ratios used as collateral in case that one of the underlying assets is at risk of de-pegging. For this, a new AMM will be introduced where users will be able to mint new fUSD by depositing predetermined stablecoins.There are two minting options, Multi-mint where users need to deposit 2 or more of the assets backing fUSD or simple mint, where users can mint fUSD with a single token. To tackle inflation, users will be able to redeem their fUSD for one or more of the underlying stablecoins. By redeeming fUSD for another stablecoin, the redeemed fUSD will be burned.
Fuse Dollar will be a yield-bearing asset where by holding fUSD you will be providing liquidity to the stableswap, so you will passively be accruing fees (from swaps on the dex).
The fUSD collateral pools will be used by the stableswap to facilitate bigger swaps with little or no slippage between stablecoins.

What would happen in case one of the underlying collaterals de-pegs?
Our devs will activate the de-pegging mechanism. Depositing liquidity and swaps using the fUSD pool will be blocked, and the contract will only allow withdrawals of balanced liquidity. This will help to not hurt late withdrawers, since everybody will withdraw a balanced portion of their stake.

In case of such events (de-peg, i.e), a forum discussion will be started, and community members will be able to talk through changing the parameters of fUSD.
Both the collateral assets and their weights are subject to community decisions. The Voltage core team suggests: USDC, BUSD and USDT at a ~33% ratio each.

POLLING PERIOD
The polling process begins now and will end at 12:00 UTC on September 5 2022

  • Yes, i support this proposal.
  • I don’t support this proposal, change the collateral

0 voters

3 Likes

Fuse Dollar V2 will also help to mitigate fragmented liquidity between different stablecoin pairs.

1 Like

In case of de-pegging, shouldn’t there be an automated way to activate the de-pegging mechanism instead if relying on a manual action? There can be certain thresholds defined for each pool where in an event that a pool falls below a threshold for example the mechanism can be activated automatically, or I’m sure there can be more sofisticated ways to do that.

We are setting min and max weights an asset can represent in the pool. Lets put the case that some asset reaches it max cap (45% of the pool ), kind of what currently is usdc in the stablepool, that doesnt mean that the asset had depeg but that is a more liquid asset.

We think that this is the healthiest way of doing it, if somebody manages to come up with a better solution of course we can implement it.

I think it would be possible, such that at a certain point the “owner” of the pool could be a smart contract anyone can call that will trigger a trading halt for the pool.

However, stableswap pools are designed to trade at near parity even when the pool is severely imbalanced. We would need to do some math to determine what ratios are acceptable, and this may be highly dependent on other factors. For example, if we care that some token is over 80% of the pool, does it matter what the other tokens percentages are? Could it be that 80/10/10 is okay, but 80/1/19 is cause for alarm?

Also note that the amplification parameter of the stableswap pool matters.

I propose we define a threshold PRICE at which the tokens are considered at-risk, and then determine if there is a way to prevent trading past this price without re-deploying the stableswap pool. We can go from there.

1 Like

I think not only the wights of the pools, but the prices of underlying assets are important for such a mechanism. I checked Celo’s stability mechanism for example and they heavily rely on oracles. If we can get reliable price feeds from oracles for the underlying assets, it might be a more effective automated mechanism to deactivate a certain pool in case it’s loosing its peg.

1 Like

Good observation.

I’m not really sure about the smart contract being at disposal to anyone, to be honest with you.
One possible solution (or at least a sort of hedge) would be creating an emergency reserve fund which could be used for various tasks.
Another solution could be over-collateralization, meaning fUSD would consist of, let’s say, 120% of underlying stablecoins.

1 Like

Agreed. As you have seen, we’re constantly partnering up with different teams. SupraOracles just became a partner. It is a matter of time Chainlink will integrate Fuse. But until then, we’ll have to rely on other mechanisms, too.

If we’re trying to prevent de-pegging, i don’t think an oracle system will update fast enough. It’s a well-known tactic for frontrunners to notice discrepancies in prices before oracles update, and abuse them.

However, it could play out that nobody notices the price is depegging before the oracle updates. In that case, i think an “either or” system would work best.

The system can shut down when either:

  • The ratios of assets are incorrect beyond some threshold (no more than 75% of some token, for example)
    OR
  • A price oracle reports a price of any collateral token or the fUSD2 token below 0.95 USD

Hmmm… now that i think about it, it may be possible for someone with enough cash to sell a bunch of fUSD2 to make the price dip momentarily before an oracle update. But that seems like an edge case and easily solveable by not using the price of fUSD2, just using DAI, USDC, USDT (which are large marketcap and much harder to manipulate)

I’m not sure will be a good idea.
Now i have 100k fusd and if i want to cash out i just exchange in usdc and i will have 100k usdc without lose one cent, then i will bridge to ethereum, move to exchange and cash out (teorically if fusd/usdc pool and bridge will be full, see that at the moment are at 0).
After i want cash out 100k fusd how much i will really get back? i need to swap at the market, with crazy impact and fee.
So today 100K i will cash out with 100k. Tomorrow? The dev have some idea about this scenario?
And please refill the voltage pool and bridge with usdc before the vote of the proposal so who want swap fusd with usdc will have the possibilty. thanks

That’s a good point, but i think it should be okay for the original fUSD.

Since the smart contracts can’t change, we will need to create an entirely new token for fUSD2. The old original fUSD token will still work the same. The big issue of course will be confusion - “Does this dapp want fUSD, or fUSD2?”

But yes, with fUSD2 (or whatever we will call it) there is a risk that maybe one day you can cash it out for 100k USDC, maybe one day for only 99,900 USDC (or less :dizzy_face: )

so the old FUSD will be pegged 1:1 to usdc also in future? or will be changed with new one automatically?

It’s all described in the proposal.