Program
Program Code Repository: https://github.com/castle-finance/castle-vault
Functions in the program are created by bundling one or more instructions into a transaction. This document will first explain what each instruction does on its own and then how they are bundled together into various user-facing functions in the SDK.
Instructions
Initialize
Creates a new vault
Deposit
Exchanges reserve tokens for vault LP tokens
Withdraw
Exchanges vault LP tokens for reserve tokens
Rebalance
Calculates and stores the desired allocations to integrated lending markets based on the vault strategy type
Also emits and anchor event containing the new allocations
Required before any reconcile IX is called
Refresh [Jet | Port | Solend]
Refreshes the reserves of the given lending reserve, which is required before any deposit or withdrawal
Calculates the value of the vault held in the given lending reserve, denominated in the reserve token
Consolidate Refresh
Calculates the total value of the vault, denominated in the reserve token. This is required before any deposit or withdrawal from the vault
Reconcile [Jet | Port | Solend]
Deposits and withdraws from the given lending market according to the allocations stored by the rebalance IX
Functions
Initialize
IXs
Initialize
Deposit
IXs
(if reserve token is SOL) Wrap SOL into SPL token
(if doesn't exist already) Create account for LP token
Refresh
Deposit
(if reserve token is SOL) Close intermediate account created during wrapping
Withdraw
IXs
Refresh
(if withdraw amount is less than in vault reserves) Reconcile
(if doesn't exist already) Create account for reserve token
Withdraw
(if reserve token is SOL) Unwrap from SPL token to SOL
Rebalance
IXs
Refresh
Rebalance
Reconcile IXs
Last updated