Protocol design
SY wrapper
The bottom layer: a vault that turns an interest-earning deposit into a standardized token, so everything above it never needs to know where the interest comes from.
What it does
The SY wrapper accepts USDC, lends it into the Blend v2 USDC pool, and issues SY tokens against the position. Withdrawals do the reverse: burn SY, pull the USDC back out of Blend. The design follows OpenZeppelin’s Soroban Vault extension, which is the Stellar version of a widely used vault standard from Ethereum (ERC-4626).
The wrapper’s one important export is exchange_rate(): how much USDC one SY is worth right now. As the Blend pool earns interest, the rate ticks up. Your SY balance never changes by itself; the value of each SY does.
Where the rate comes from
The exchange rate is read directly from the wrapper’s position in Blend, fresh on every interaction. It is never cached, and no admin can set it: the deployment tooling refuses to record a mainnet deployment configured with a manual rate. If the number is wrong, Blend itself is wrong. There is no second data source (no “oracle”, in DeFi terms) that could be manipulated separately.
Because the position only lends and never borrows, the rate is one-directional in normal operation: interest accrues, so it rises. The case where the underlying pool itself suffers a loss is handled explicitly; see Settlement and maturity for how a falling rate is priced in rather than causing a freeze-up.
Why wrap at all?
Blend’s own deposit token doesn’t expose a clean, vault-style interface, and the next yield source (a tokenized treasury fund, a different pool) won’t look like Blend either. The wrapper flattens every underlying into one simple surface: a token count and an exchange rate. The tokenizer and the AMM are written against that surface only. Neither of them knows Blend exists.
One SY contract exists per underlying. The live deployment has exactly one: SY-blendUSDC. Adding a future yield source means deploying a new wrapper that speaks the same interface, and nothing above it changes.
Layering
Frontend / SDK
|
AMM (prices PT, SY, YT)
|
Tokenizer (issues PT and YT against locked SY)
|
SY wrapper (this page)
|
Blend v2 USDC poolDependencies flow strictly downward. The wrapper doesn’t know about the AMM, and the AMM doesn’t know about Blend. If an underlying ever fails, the damage stops at the wrapper for that one underlying. It cannot spread to other markets.