G$ Savings using fusd,fuseswap,ola and staking grant proposal

We would like offer G$ users a savings plan where they can put their G$ into their “savings” account and earn interest.
The process will integrate many DEFI tools on fuse, to deliver a super simple low risk user friendly financial service.

The savings plan will work as follow

  • User wants to save G$ currently worth X$, he deposits the G$s to the savings smart contract (GoodSavings)
  • GoodSavings swap G$ for FUSD on fuseswap
  • GoodSavings supply FUSD on ola
  • GoodSavings borrow Fuse on ola
  • GoodSavings stake Fuse in consensus
  • GoodSavings daily:
    • compound the earned fuse And swaps fuse earnings to G$ (according to user preffered allocation)
    • repay interest + any extra fuse tokens required to keep collateral in check

This results in the user initial principle in a stable coin, so he is neither exposed to G$ nor Fuse volatility.
The borrowing from Ola is also safe as the borrowed fuse tokens are kept locked in staking, and can always repay the debt from collateral or unstaking the fuse tokens.

Upon user cashout all earnings are returned as G$s

Cashout process:

  • User requests to cashout
  • GoodFuseStaking unstake user share of fuse tokens (original stake + rewards)
  • GoodSavings repay fuse debt for user initial principle in FUSD
  • GoodSavings converts FUSD principle + fuse rewards to G$
  • GoodSavings returns to user his G$s (from principle + fuse rewards + fuse rewards that were swapped daily to G$s )

Additional Information

  • The current proposal for unlock period of fuse staking isn’t compatible with this proposal (or any other attempt to wrap fuse staking as a defi tool), we are trying to discuss the issue with the fuse dev team.
  • How long will Fuse staking APY stay higher than Fuse lending APY (ie why would people choose to lend fuse instead of staking it and earning higher interest)

Grant Request:

  • Develop GoodSavings contract 3K$
  • Develop interface in G$ wallet + educational screens 3K$
  • (Optional) Develop interface in fuse.io to save with any token that’s convertible to FUSD 2K$

Interesting savings product - i wonder what the APY will look like in this

well it depands. but basically ola fusd supply apy - ola fuse borrow apy + fuse staking apy
in case user wants his earnings not compounded on fuse staking but invested in G$, that would harder to calculate, but it would depand on G$ value appreciating.

Interesting idea. Agree multiple APYs will effect utility, and could open up large deficits (total borrow amount exceeds total supply+rewards)

Why is stake lock-in an issue? This could just be a part of the savings contract - 2 days to withdraw? Also, 2 day lock-in would earn enough Fuse to pay GD gas costs (this would be taken through the 15% validator fee)

How do you record an individuals stake and rewards? If they stake via the GoodSavings contract, the contract itself will stake on their behalf, and there would only be 1 mining reward per block, going to the contract itself. Individual stakes won’t be recorded?

Is the idea that each day a saver gets some G$ back in their wallet - or just at the end when they withdraw their savings?

How can earnings be compounded if they are taken out each day?

  1. The only deficit issue is a black swan event, if OLA has or can add some delay before liquidating this will work fine, as the smart contract will verify enough collateral exists.
  2. the problem is not stake lock in per-se but how it is implemented. for example the current suggestion will reset the lock timer on every withdraw request, so if user A requests a withdraw and after 1 day user B requests a withdraw, the timer for the smart contract withdrawing for A will reset.
  3. individual stakes and rewards are calculated the same as in any staking/LP reward program that you have in DEFI, nothing new here.
  4. the user gets his rewards only when he withdraws. The smart contract does the compounding/G$ buybacks everyday (through an external trigger)

We already have a similar concept in place, you can see the code here:
(proxy here: AdminUpgradeabilityProxy (0xA199F0C353E25AdF022378B0c208D600f39a6505) - Fuse Explorer)