The Source

Yield

Yield has to come from somewhere real. For cUSD it comes from creator fees earned on tokenized stocks. Those stocks are sold into USDG before they reach the treasury, so the backing is always dollars — never a position that can fall in value overnight.

01
Stocks earn the fees

Trading activity on tokenized stocks on Robinhood Chain generates creator fees. That is the revenue behind cUSD.

02
Sold into USDG

Those stock fees are converted to USDG before they enter the treasury. Stocks move; the backing should not. The vault holds dollars only.

03
Treasury funds the rate

The USDG treasury is what makes the streamed APY real. Balances tick up every second at the target rate.

How you actually get paid

Through the streamed rate, and only that. Your balance grows every second because currentIndex() advances with time at ratePerYear(). No transaction is needed to keep it moving, and nobody has to claim anything.

Separately, settle() keeps the token honest about its backing. Anyone can call it — it is not privileged.

  • If reserves fall short of outstanding cUSD, the shortfall is reported and all balances rebase down.
  • If reserves exceed outstanding cUSD, that surplus stays as backing. It is deliberately not distributed.
  • You can check the position yourself on-chain with treasuryValue(), cusdSupply() and pnl().
Why surplus is not handed out

An earlier version of this contract did distribute surplus pro-rata, and it was exploited: someone minted a fraction of a cent, called settle() to inflate the index, and redeemed the entire treasury. Paying yield purely through the time-based rate removes that attack, because a share snapshot can no longer capture the reserves.

Why the rate is variable

The advertised APY is a target, not a promise. It is funded by actual fee revenue, and fee revenue depends on real trading activity. When activity is strong the treasury covers the rate comfortably. When it is weak, the rate can fall.

Yield can be negative

If the treasury takes a loss, balances rebase down and you can end up with less than you deposited. cUSD tracks real performance rather than guaranteeing a fixed return. This is the honest tradeoff for yield that is actually backed.

Verify it yourself

You do not have to take our word for the backing. Every number is readable on-chain.

treasuryValue() // USDG reserves actually held by the vault cusdSupply() // total cUSD outstanding pnl() // reserves − supply (positive = surplus) ratePerYear() // the live APY, signed

The dashboard shows the same figures live, including the backing ratio — reserves divided by supply. Above 100% means fully backed.