Mechanism

Overview

Pye uses a yield splitting mechanism to separate staking capital into principal and yield tokens. Although this design is similar to the one used by fixed-yield protocols (ie. Pendle, Exponent), we do not employ this mechanism for the purpose of price discovery for points and speculative value of yield. The primary inteion behind the yield separation of our tokens is to allow users to trade principal and yield independently. As a matter of fact, unlike, price discovery protocols, are PTs are 1:1 redeemable for SOL and do not accrue fixed yield.

Principal Tokens

A principal token (PT) is an SPL token that represents the principal component of a fixed-term lockup. At maturity, it is redeemable 1:1 for the original deposit. PTs do not generate any yield. All yield produced by the principal is distributed to YT token holders.

Minting

When a user stakes with Pye, they are issued Principal Tokens (PT) and Yield Tokens (YT) representing their principal and future yield, respectively. To calculate the amount of PT tokens that will be issued we use the following formula:

NPT=P1N_{PT}​=P⋅1

where:

  • NPTN_{PT}​ is the number principal tokens to mint,

  • PP is the principal amount in native units (eg. SOL),

As the formula suggests, PTs are minted 1:1 to the number of tokens deposited as defined by the constant 1.

Redeeming

At maturity, PT token holders can redeem their tokens for the underlying principal pro rata. To calculate the repayment we use:

RedeemPrincipal(p)=pNPTPRedeemPrincipal(p)= \frac{p}{N_{PT}}​ \cdot P

where:

  • pp is the number of PT the holder redeems,

  • PP is the total principal backing the pool,

  • NPTN_{PT}​ is the total supply of PTs outstanding.

Reward Accrual

After each Solana epoch, staking rewards are automatically added to the stake account, increasing the number of SOL it contains. While the principal tokens (PTs) remain fixed and redeemable 1:1, the yield tokens (YTs) represent the incremental value that accrues from this compounding process.

We can formalize the initial value (backing) to be:

S0=PS_0=P

where:

  • s0s_0 is the initial deposit

  • PP is the principal deposit amount in SOL.

At the end of each epoch tt, the stake account grows by the effective staking reward rate rtr_t​. The value after tt epochs is:

St=St1(1+rt),              t=1,2,,TS_t=S_{t−1}⋅(1+r_t), \;\;\;\;\;\;\; t=1,2,…,T

After TT epochs (maturity), the stake account balance is:

ST=S0t=1T(1+rt)S_T = S_0 \cdot \prod_{t=1}^{T} (1 + r_t)

where:

  • S0=PS_0​=P = initial deposit

  • rtr_t​ already accounts for validator commission, inflation rate, MEV, etc.

The yield is the difference between the maturity value and the initial deposit:

Y=STPY = S_T - P

Therefore:

  • PT holders redeem their tokens for exactly PP units of SOL, independent of yield.

  • YT holders redeem their tokens for the residual yield YY, distributed pro rata to the number of YT tokens they hold.

Yield Tokens

A yield token (YT) is an SPL token that represents the yield component of a fixed-term bond. Upon maturity, the holder of the YT can redeem the token for the underlying yield. 1 YT is equal to the yield generated by 1 PT until maturity.

For example, say Alice stakes 100 SOL into Pye for a period of 3 months starting in September 2025. She receives 2 tokens:

  • 100 PT-SEP25-NOV25

  • 100 YT-SEP25-NOV25

The yield component (100 YT-SEP25-NOV25) will receive all the yield generated by the principal component (100 PT-SEP25-NOV25) throughout those 3 months. Alice can redeem her 100 YT for the underlying yield at maturity.

Minting

To calculate the number of YT tokens that will be issued upon deposit, we use the following formula:

NYT=PTtTtnN_{YT}​=P⋅ \frac{T−t}{T−t_n}

where:

  • PP is the principal amount in native units,

  • tot_o​ is the issue date of the bond,

  • tnt_n​ is any date before maturity

  • TT is the maturity date of the bond

Unlike principal tokens, YTs are not minted 1:1 to the deposit. The number of YT tokens minted are relative to the total lockup period Tt0T−t_0​.

Here are some scenarios:

  • User stakes on the issuance date of the bond, where Ttn=Tt0T−t_n​=T−t_0​ , and yield tokens are minted 1:1 to principal PP,

  • User stakes during the middle of the term, where Ttn<TtoT−t_n​<T−t_o​ , and less yield tokens are minted, proportional to the time remaining,

  • User stakes ahead of the issuance date, where Ttn>Tt0T−t_n​>T−t_0​, and more yield tokens are minted, proportional to time remaining until issuance starts.

Redeeming

At maturity, YT token holders can redeem their tokens for the underlying yield pro rata.

  • The total yield accrued at maturity is Y=STPY = S_T - P.

  • Let NYTN_{YT} represents the total supply of YT tokens outstanding for that maturity.

  • If a holder redeems yy units of YT tokens, their proportional share is:

Redeemable Yield(y)=YNYT(STP)Redeemable Yield(y) = \frac{Y}{N_{YT}} \cdot (S_T-P)

where:

  • yy is the number of YT tokens redeemed by the holder,

  • NYTN_{YT} is the total YT tokens outstanding,

  • ST=S0t=1T(1+rt)S_T = S_0 \cdot \prod_{t=1}^{T} (1 + r_t) is value of the stake account at maturity

  • PP is the original deposit amount.

Last updated