Vault shares (`ctAssets`) and how yield works
Level: Beginner → Intermediate · Read time: 10 min
Your balance does not grow - your share value does
When you deposit into a Concrete vault you receive `ct[asset]` tokens: ERC-20 vault shares. Examples from the docs and app: ctWBTC, ctDefiUSDT, ctETH, ctSrUSDC. Names and symbols are set when the vault is deployed.
Yield is not paid by minting you more shares. Instead:
share price = totalAssets / totalSupplyAs strategies earn, totalAssets rises while totalSupply stays the same, so each share redeems for more underlying. Losses work the same way in reverse: a strategy loss lowers totalAssets and the share price falls for every holder proportionally.
Worked example
You deposit 1 ETH when the share price is 1.00 → you receive ≈ 1 ctETH.
| Time | Vault event | 1 ctETH is worth |
|---|---|---|
| Day 0 | Deposit | 1.0000 ETH |
| Day 90 | Vault earned ≈ 3.75% over the period | ≈ 1.0375 ETH |
Your wallet still shows 1 ctETH; the app shows the underlying value. (Run python examples/python/share_math.py to reproduce a version of this.)
How many shares do you get?
Docs formula (with a +1 guard against inflation attacks):
shares = assets × totalSupply / totalAssets (+1 in numerator and denominator)Later depositors buy in at the current price, which already includes earlier yield. That is why no per-user timestamps are needed: fairness comes from the exchange rate.
When does yield get "booked"?
The vault calls accrueYield() automatically on every deposit, mint, withdraw and redeem (via a withYieldAccrual modifier). It compares each strategy's reported value with the last recorded value, books the difference as yield or loss, then charges fees. Details: Accounting deep dive.
Properties of ctAssets
| Property | Meaning |
|---|---|
| ERC-20 | Works in any wallet and DeFi app that supports ERC-20. |
| Yield-bearing | Value per share rises with vault performance. |
| Transferable | Can be moved or swapped (subject to vault rules, e.g. cooldown/lock hooks). |
| Redeemable | Burn shares to get underlying + accrued yield (subject to the vault's withdrawal model). |
Two things that surprise beginners
Next: 05 · Withdrawals.