Mechanism

Overview

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

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 rewards. All rewards produced by the principal is distributed to RT token holders.

Minting

When a user stakes with Pye, they are issued Principal Tokens (PT) and Reward Tokens (RT) representing their principal and future rewards, 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 reward tokens (RTs) 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 rewards is the difference between the maturity value and the initial deposit:

R=STPR = S_T - P

Therefore:

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

  • RT holders redeem their tokens for the residual rewards RR, distributed pro rata to the number of RT tokens they hold.

Reward Tokens

A reward token (RT) is an SPL token that represents the rewards component of a fixed-term bond. Upon maturity, the holder of the RT can redeem the token for the underlying rewards. 1 RT is equal to the rewards 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 RT-SEP25-NOV25

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

Minting

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

NRT=PTtTtnN_{RT}​=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, RTs are not minted 1:1 to the deposit. The number of RT 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 reward 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 reward 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 reward tokens are minted, proportional to time remaining until issuance starts.

Redeeming

At maturity, RT token holders can redeem their tokens for the underlying rewards pro rata.

  • The total rewards accrued at maturity is R=STPR = S_T - P.

  • Let NRTN_{RT} represents the total supply of RT tokens outstanding for that maturity.

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

Redeemable Rewards(r)=RNRT(STP)Redeemable Rewards(r) = \frac{R}{N_{RT}} \cdot (S_T-P)

where:

  • rr is the number of RT tokens redeemed by the holder

  • NRTN_{RT} is the total RT 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