Separation of Principal and Yield in Liquid Restaking Tokens

BTC restaking essentially involves a borrowing relationship with BTCs, where projects borrow BTCs for security and commit future earnings to raise BTC liquidity. Liquid restaking tokens issued for BTC collateralization are essentially Bitcoin bonds. Therefore, Lorenzo introduces the model of separating principal and interest as

stBTC + Yield Accruing Token (YAT)

to issue liquid restaking tokens, maximizing the liquidity consolidation on stBTCs and releasing it into down- stream DeFi ecosystems. stBTCs correspond to a user’s right to redeem the BTC principal, while YATs correspond to the rights to redeem yield at maturity. Selected projects in the Lorenzo ecosystem can issue stBTCs and YATs to conform to the practice of separated principal and interest on Lorenzo. When a user stakes to projects through Lorenzo, the user receives the corresponding YATs from the project. YATs can be claimed according to the rules for rewards, which are issued by the project at the end of restaking period.

Staking plan

Non-fungible YATs are produced when users stake to different projects for different durations. To avoid liquidity dispersion caused by non-fungible YATs, Lorenzo predefines restaking plans, which include the project for restaking and the starting and ending time of restaking. Users can only select the restaking plan they wish to participate in before the restaking plan begins. Staking to the same restaking plan generates the same YATs.

Liquid Principal Token (LPT)

This represents the tokenization of the principal amount of BTCs that can be redeemed, with stBTC as Lorenzo’s official LPT stBTC, as described in the previous section.

Yield Accruing Token (YAT)

This represents the right to claim yield from the staked project by the end of the restaking period, as described in the previous section. YATs can be traded and transferred, and become non-transferable upon maturity. Users can claim rewards from projects based on the YATs they hold.

YAT Contract Interface:

constructor(
    string memory name_, // YAT token name
    string memory symbol_, // YAT token ticker
    string memory planDescUri_, // project description
    uint256 planId_, // stakePlanId , incremental ID for restaking plan uint256 agentId_ , // stakeAgentId , Staking Agent ID
    uint256 subscriptionStartTime_, // Subscription starts
    uint256 subscriptionEndTime_, // Subscription ends
    uint256 endTime_ // YAT maturity time
) ERC20(name_, symbol_)

Staking Proof Token (SPT)

After a user claims rewards from the project using YATs, YATs are automatically converted to an equivalent amount of SPTs, which enter a unified queue and cannot be traded. The sole purpose of SPTs is to be burnt in sequence when users burn stBTCs to withdraw BTCs. The agentID associated with the burnt SPT determines which Staking Agent will redeem the BTCs. If there are insufficient SPTs in the queue, users must wait for a new SPT to enter the queue. A user who generates SPTs by claiming YATs has the priority in using the user’s self-generated SPTs to redeem BTCs.

Last updated