Spectra Developer Docs
  • Developers Documentation
  • Getting Started
  • Guides
    • Tokenizing Yield
    • Providing Liquidity
    • Deploy PT and Curve Pool
    • Routing
    • IBT Additional Rewards
    • Locking APW for veAPW
    • Voting and Earning Rewards
  • Technical Reference
    • Deployed Contracts
    • Contract Functions
      • Principal Token
      • Yield Token
      • Registry
      • RateOracle
      • Factory
      • Access Manager
      • RouterUtil
      • Router
      • GovernanceRegistry
      • Voter
      • VotingReward
        • BribeVotingReward
        • FeesVotingReward
      • FeeDistributor
      • Spectra4626Wrapper
    • Yield Calculations
    • Spectra's Automated Market Makers
      • Rate Adjusted StableSwap pools
  • Glossary
  • INTEGRATION REFERENCE
    • Spectra Oracles
      • TWAP Oracles
      • Deterministic Oracles
        • Linear APR model
        • Linear Discount Model
        • Zero Coupon Bond Model
        • Comparison
      • Oracle Deployment
        • Deterministic Oracles Deployment
        • TWAP Oracles Deployment
Powered by GitBook
On this page
  • Step by step
  • 1. Find a PrincipalToken
  • 2. Deposit
  • 3. Receive PT and YT
  • 4. Before expiry
  • 5. After expiry
  1. Guides

Tokenizing Yield

PreviousGetting StartedNextProviding Liquidity

Last updated 2 months ago

As mentioned in Getting Started, the fundamental concept of tokenizing yield means that the future yield generated is separated from the underlying principal asset. So if a yield of 3% is generated on 100 USDC after 1 year, the 3% yield (3 USDC) is the yield, and 100 USDC is the principal.

Step by step

1. Find a PrincipalToken

  • PTs are designed to operate with any ERC4626 Tokenized Vault token.

Explore the APY of any ERC4626 with Vision.

To find a relevant PrincipalToken:

2. Deposit

The relevant allowance of the token must be approved for the associated PrincipalToken contract before depositing.

3. Receive PT and YT

During the deposit, the depositor receives:

  • Principal Token (PT): This represents the original amount deposited, i.e. the principal amount. This is also referred to as 'shares' of the PrincipalToken.

  • Yield Token (YT): Minted by the PrincipalToken contract, the Yield Tokens represents the generated yield from the deposited principal. YT holders can claim the yield generated by the corresponding deposited IBTs over time as they hold the token.

4. Before expiry

Before the expiry/maturity, a YT/PT holder can:

  • Trade or sell YT to hedge interest rate risks.

  • Trade or sell PT, speculating on interest rates without exposure to the principal asset.

5. After expiry

After expiry/maturity, the token holder could:

The token holder after expiry does not need to be the same as the depositor. Both PT and YT are transferable tokens.

E.g. they could have purchased the PT at a discount and waited for expiry, earning a fixed yield since all PT are redeemable to the underlying asset at expiry.

Each Principal Token is associated to an and has a specific duration (a specific expiry date).

Each IBT is associated to an underlying. The underlying assets of the IBT are verified using

Available ERC4626 Vaults on the relevant network can be found at . Additionally, new Principal Tokens for any Interest Bearing Token that complies with the ERC-4626 standard can be deployed without the need for special permissions, see.

Make informed decisions and visit to gain access to the Vision API and dashboard, and to explore the historical interest rates of any ERC4626.

All Principal Tokens deployed using the can be accessed through the . The number of tokens deployed is determined using . The PT at each index from 0 to ptCount is retrievable using .

The correctness of the address for the Interest Bearing Token (IBT) tokenized in the PT contract is ensured by using the method. , and the yield rate is ascertained either by visiting or by examining the conversion rate over the last few blocks using .

The maturity and duration of the PT are checked using .

Deposit either the underlying asset (e.g. USDC) or an of the underlying asset (e.g. aUSDC).

If depositing the underlying asset, use PrincipalToken's .

If depositing the interesting bearing token, use .

Claim the yield generated by the YT, see

Earn additional yield by providing liquidity to the IBT-PT pairs on AMMs. See .

Withdraw the equivalent assets in proportion to the amount of PT and YT they currently hold, i.e. convert their PT and YT to the underlying asset (e.g. USDC) and exit their position. See and .

Before expiry a user needs the same amount of PT and YT to be able to or .

Redeem the underlying assets of the PT, see and

Claim the remaining yield of the YT see .

ERC4626.asset()
https://erc4626.info
how to deploy PT and LP Vault in a permisionless manner
vision.perspective.fi
Providing Liquidity
Factory
Registry
https://vision.perspective.fi
IBT.convertToAssets()
Interest Bearing Token (IBT)
Interest Bearing Token
Depositing IBTs which are then split into Principal Tokens (PT) and Yield Tokens (YT).
getIBT()
PT.maturity()
deposit()
depositIBT()
claimYield()
withdraw()
redeem()
withdraw()
redeem()
redeem()
withdraw()
claimYield()
Registry.pTCount()
Registry.getPTAt()