Docs
What the vault does, what it charges, and how to check every claim on this site without trusting it.
What it is
Fomo Yield is a vault that holds one thing: shares of Spark Savings USDG. You deposit USDG, it deposits into Spark, and you hold fyUSDG, a plain ERC-20 that grows as Spark pays.
It is a router, not a strategy. It cannot earn more than Spark does and does not try. If you can reach Spark yourself, you do not need this.
The design that matters
One fyUSDG is one spUSDG share. Not a claim on a pool, the exact share the venue handed back.
That buys three things. Price per share cannot drift from Spark's, because it is Spark's. There is no first depositor inflation attack, because no exchange rate is ever computed here. And the whole contract checks against one line, which anyone can run against the chain at any time:
spUSDG.balanceOf(vault) >= fyUSDG.totalSupply()
The venue address is immutable. A settable one would mean depositors trust whoever can set it.
The fee
20% of what you earn. Never any of what you deposit. Only when you leave.
It cannot be taken in shares without breaking the invariant above, so it is taken in assets on the way out, from the difference between what a redemption returns and what those shares cost. Deposit and withdraw the same day and you pay nothing, because there is no gain to take a share of.
Cost basis is tracked per holder and moves with the shares on a transfer, so sending fyUSDG hands over the gain and the liability for it together rather than resetting either.
The fee is swapped to native ETH by the forwarder and pushed to a team wallet, which runs buybacks of FOMOY by hand. The delivery is on chain and verifiable. What happens after it lands is a promise, not a mechanism.
Addresses
At least six tokens on this chain use the symbol USDG and only one is real. Pin the address above rather than trusting a symbol anywhere.
Check it yourself
Every number on this site comes from these calls. None of them need our RPC or our word.
# the invariant: backing is never less than shares outstanding
cast call <venue> 'balanceOf(address)(uint256)' <vault> --rpc-url $RPC
cast call <vault> 'totalSupply()(uint256)' --rpc-url $RPC
# the rate, read straight from the venue's price per share
cast call <venue> 'convertToAssets(uint256)(uint256)' 1000000 --rpc-url $RPC
# what a redemption would actually pay you, net of the fee
cast call <vault> 'previewRedeem(uint256)(uint256)' <shares> --rpc-url $RPC
cast call <vault> 'feeFor(address,uint256)(uint256)' <you> <shares> --rpc-url $RPC
The public node keeps roughly nine minutes of state, so historical calls fail. A rate here has to be sampled forward, which is why ours is dated and says how long it was measured over.
The rate
Spark is paying … a year, measured from price per share over …. It is not quoted from anyone and it moves.
Cross checked a second way: fork the chain, warp a year forward, ask what a share is worth. That returns 350 basis points, against 344 measured live. Two unrelated methods, close enough to trust.
Spark currently holds … with … of remaining deposit headroom, so the venue is not the constraint.
Risks
- Nothing here is audited.
- Spark is somebody else's contract. Its rate is theirs to change, its deposit door is theirs to close, and its risk is yours to carry. Two of the three largest USDG vaults on this chain already refuse deposits entirely.
- The fee route ends at a wallet. On chain up to that point, a promise after it.
- This has never been used at size. It has held about seven dollars, ever.
- It cannot beat the venue. After the fee you keep 80% of Spark's rate, so going direct is cheaper if you are able to.