Protocol design
Tokenizer
The middle layer: it locks up SY, issues and burns PT and YT, pays out interest, and returns principal. Every promise the protocol makes about value is enforced here.
PT and YT are counted in dollars, not shares
PT and YT are denominated in USDC face value, not in SY tokens. This is what makes PT interchangeable between people who split at different times: 1 PT is always a claim on exactly 1 USDC of principal at maturity, no matter what the exchange rate was when it was created. Splitting n SY when the rate is R creates
pt = yt = n × R (equal amounts, in USDC face value)and locks the SY in the tokenizer’s vault, called the escrow. At a rate of exactly 1.00, tokens and dollars coincide. Above 1.00, one SY mints slightly more than one of each.
How PT gets its principal back
PT is pure principal; it earns nothing along the way. Redeeming pt after maturity pays out
sy_out = pt / R_maturitySY from the escrow, which unwraps to exactly pt USDC. Here R_maturity is the rate frozen at maturity, so nothing that happens to rates afterwards can change what PT pays (see Settlement and maturity).
How YT earns: the checkpoint system
YT collects everything the escrow earns above the principal. The bookkeeping works like a water meter: the protocol doesn’t need to watch the flow constantly, it just reads the meter at the start and the end. Each holder carries a checkpoint, the exchange rate the last time their interest was tallied. When they are next tallied, at rate R with checkpoint c, they are owed
owed = yt_balance × (R − c) / (c × R)in SY, and the checkpoint advances to R. The exact shape of that formula (equivalent to 1/c − 1/R) matters: it guarantees that tallying often and tallying once at the end produce exactly the same total, so nobody gains or loses by the timing of the bookkeeping. A more naive formula would overpay whenever splits happen above a rate of 1.00.
A worked example, end to end:
- Deposit 100 USDC at rate 1.00, receive 100 SY, split into 100 PT + 100 YT.
- Over the term, the rate rises to 1.02. The locked 100 SY is now worth 102 USDC.
- The YT holder collects
100 × (1/1.00 − 1/1.02) = 1.96 SY, which unwraps to 2.00 USDC: the interest. - The PT holder redeems
100 / 1.02 = 98.04 SY, which unwraps to 100.00 USDC: the principal. - Paid out: 102.00 USDC. Exactly what the escrow held. Nothing counted twice, nothing stranded.
Transfers settle first
On any YT movement (mint, transfer, burn), both sides are tallied before the balance moves. A holder who never collected and then sells keeps the interest they earned while holding; it is credited to their personal ledger. The buyer starts earning from the moment of the transfer. Buying YT never buys someone else’s earned interest, and selling never forfeits yours.
The escrow always covers what it owes
At every state change, the protocol maintains:
escrow value ≥ all PT principal + all uncollected YT interestThe locked SY, valued at the current rate, always covers every PT at full face value plus every YT holder’s uncollected interest. The property is verified by a 10,000-step randomized test that hammers the contracts with random splits, transfers, collections, recombines and redemptions under changing rates. And the numbers needed to re-check it against the live deployment (escrow size, exchange rate, PT supply) are all publicly readable on-chain.
One deliberate choice: the contracts price a shortfall instead of freezing up. An earlier design halted everything the instant coverage slipped even microscopically, and a rounding notch smaller than a millionth of a dollar once froze every payout in testing. The shipped behavior under a genuine loss:
- PT holders come first. Redemptions are capped at each holder’s fair share of the escrow. When the escrow is healthy, that cap equals full principal. Under a real loss, all PT holders share it proportionally, and nobody gains by redeeming faster than everyone else.
- YT collections are never blocked. The math itself is the safety: a collection pays zero unless the rate has actually risen past the holder’s checkpoint. A fallen rate simply pays nothing until it recovers, and the holder keeps everything already credited to their ledger.