UPD — Universal Private DollarConcepts

sUPD — Staked UPD

Staked UPD yield mechanism, target APY, the unstaking risk, and how yield is funded.

sUPD — Staked UPD

What is sUPD?

sUPD is a yield-bearing wrapper for UPD, similar to how wstETH wraps stETH. Users stake UPD to receive sUPD tokens, which appreciate in value over time as yield is accumulated.

Stake 1,000 UPD → receive 1,000 sUPD tokens
After 1 year at 8% APY:
  Each sUPD is worth ~1.08 UPD
  1,000 sUPD → 1,080 UPD on unstake

Yield Source

Yield is funded via injectYield() — a manual or automated injection of additional UPD into the sUPD vault. The target APY is ~8-10%.

Possible yield sources (not yet finalized):

  • Delta-neutral DeFi strategies on the UPD/stETH collateral
  • Protocol fee share
  • External yield sources (funded by the protocol)

Stub Contract

sUPD is currently a stub contract. The full yield mechanism is planned for a later release.

Staking Mechanics

// Stake UPD to receive sUPD
await upd.stake({ updAmount: parseUnits('1000', 18) })

// Unstake sUPD to receive UPD
await upd.unstake({ supdAmount: parseUnits('1000', 18) })

Unstaking Risk

Liquidity Risk

Unstaking may be blocked if all backing collateral is fully utilized (i.e., 100% of stETH is backing UPD in circulation). In this case, some sUPD holders must wait for new collateral to be deposited before they can unstake.

This risk is analogous to bank runs in fractional reserve banking. In practice, it's mitigated by:

  • The overcollateralization buffer (collateral ratio > 100%)
  • Stabilizer capacity limits (not all collateral is always utilized)
  • Market incentives (high utilization → more minting revenue for stabilizers)

Share Token vs Rebasing

sUPD uses the share token model (like Compound's cTokens or Lido's wstETH), not rebasing:

  • sUPD balance stays constant after staking
  • The exchange rate (sUPD → UPD) increases over time as yield accrues
  • No "magical" balance increases in your wallet

This makes sUPD compatible with any ERC20-native protocol that doesn't understand rebasing tokens.

On this page