The protected moonshot vault uses of following protocols:
- 1.Convex pool for getting rewards on
USDCdeposit made by user.
- 2.Perp V2 for taking leveraged position using harvested yield.
The trade for delta neutral strategy looks as follows. Let’s say a user deposited 1000 USDC into the vault. Here is how the position looks like.
- Position opening: Let’s say the user deposited 1000 USDC into the vault. 1000 USDC -> deposited on curve to get lp tokens and staked on convex rewards. After a week the rewards are harvested. Let's say it was 10 USDC. 10 USDC -> this yield is bridged to optimism to take a leveraged position on perp.
- Position closing: In order to settle withdrawals requested by user. The vault holds around 1-10% funds as buffer in vault. If the requested amount is more than buffer amount.Unstake → the equivalent request amount from convex. Transfer the funds to vault and withdraw.
The above functionality is achieved by the
PerpTradeExecutorcontracts. Where Batcher, Vault contracts mainly handle the user deposit/withdrawals. ConvexTradeExecutor and PerpTradeExecutor handles the position taken on respective protocols.
Batcher: Batcher contract main function is batch multiple user deposits so its cheaper for user to deposit/withdraw. The current implementation helps us integrate karma check so users who pass karma check can deposit/withdraw. Users deposit/withdraw into vault through this contract.
Vault: Vault contract is the main contract user funds are managed across different protocols using their respective trade executors. Vault can add/remove trade executors depending on strategy. Vault also manages funds across different trade executors.
ConvexTradeExecutor: ConvexTradeExecutor is the contract that handles the position taken on convex protocol.
PerpTradeExecutor: PerpTradeExecutor is the contract that handles the position taken on perp protocol.