Liquid Restake Program - Restake Module
The Liquid Restake Program is the core component responsible for managing user assets. It handles user deposits and mints the corresponding $fragSOL tokens based on pricing from Normalized Token Program (details in next section). And it records user withdrawal requests, making reserves to handle claims in time. Such withdrawal requests are periodically read by the program for execution.
Deposit & Withdrawal of the fund
The diagram illustrates the interactions between users, the $fragSOL Fund, and the oracle systems:
- Deposits: Users can deposit mSOL, bSOL, jitoSOL, INF, and SOL into the fund.
- Minting $fragSOL: Upon deposit, the fund mints $fragSOL tokens for the users.
- Withdrawals: Users can request withdrawals, which the fund processes by burning $fragSOL tokens and reserving the equivalent amount of $SOL for claim.
- Pricing $fragSOL: The price of $fragSOL is determined based on the value of the underlying LSTs (Liquid Staking Tokens) within the fund
Operation of the fund
The Liquid Restaking Program manages staking, restaking, withdrawal operations, and the execution of restaking strategies. It handles all asset flows from the fund and rewards, and configures the investment strategy through integration with various staking and restaking protocols.
Strategy Manager
The Strategy Manager in Liquid Restaking Program is responsible for managing asset movements according to dynamically changing configurations. These configurations are adjusted based on withdrawal requests and the governance-driven restaking portfolio.
The Strategy Manager ensures the reconciliation of asset amounts between the fund, reserved fund, restaking protocols, and staking protocols. Its tasks include setting target amounts for the reserved fund account (to handle withdrawal requests) and determining unstaking and restaking amounts to maintain these targets. It configures investment allocations and delegates funds to Node Consensus Network Node based on the latest configurations.
Staking Protocol Adaptor
Fragmetric currently supports staking protocols such as Jito and Marinade with plans to include more in the future. Since each protocol's implementation is not standardized, we need to generalize the interface for each staking protocol. This module creates an abstract layer for each protocol, and each adaptor implements its protocol through cross-program invocation based on that interface, as invoked by the Strategy Manager. It includes methods for staking and unstaking.
Restaking Protocol Adaptor
Similar to the Staking Protocol Adaptor, Restaking Protocol Adapter supports various restaking protocols, including Jito, Solayer, and Picasso. It creates an abstract layer for each restaking protocol and implements methods for restaking and unstaking. Additionally, it optionally implements a delegation rebalancing method to adjust the delegation amounts for opted-in Node Consensus Network within the restaking protocol. This is available if the protocol is based on NCNs.