YearnDAILenderStrategy
Overview
The YearnDAILenderStrategy contract is a strategy that supplies DAI into a Yearn V3 Vault for lending. It manages conversions between USDCe and DAI through Curve's AtriCrypto zapper and handles decimal scaling between tokens.
Constants
ICurveAtriCryptoZapper constant zapper = ICurveAtriCryptoZapper(CURVE_AAVE_ATRICRYPTO_ZAPPER_POLYGON); // Curve zapper
address public constant dai = DAI_POLYGON; // DAI addressFunctions
Initialization Functions
initialize
function initialize(
IMaxApyVault _vault,
address[] calldata _keepers,
bytes32 _strategyName,
address _strategist,
IYVaultV3 _yVault
) public virtual override initializerInitializes the strategy with trading limits.
Parameters:
_vault: MaxApy vault address_keepers: Array of keeper addresses_strategyName: Name of the strategy_strategist: Strategist address_yVault: Yearn V3 vault address
Core Functions
liquidateExact
function liquidateExact(uint256 amountNeeded) external override checkRoles(VAULT_ROLE) returns (uint256 loss)Withdraws exact amount to vault with loss calculation.
Parameters:
amountNeeded: Amount to withdraw
Returns:
loss: Amount of realized loss
View Functions
previewLiquidate
function previewLiquidate(uint256 requestedAmount) public view override returns (uint256 liquidatedAmount)Simulates withdrawal including losses.
Parameters:
requestedAmount: Amount to withdraw
Returns:
liquidatedAmount: Expected output amount
previewLiquidateExact
function previewLiquidateExact(uint256 liquidatedAmount) public view override returns (uint256 requestedAmount)Calculates input needed with 1% buffer.
Parameters:
liquidatedAmount: Desired output amount
Returns:
requestedAmount: Required input amount
maxLiquidate
function maxLiquidate() public view override returns (uint256)Returns maximum withdrawable amount after losses.
Returns:
Maximum withdrawable amount
maxLiquidateExact
function maxLiquidateExact() public view override returns (uint256)Returns maximum withdrawable amount with safety margin.
Returns:
Maximum withdrawable amount before losses
Internal Core Functions
_invest
function _invest(uint256 amount, uint256 minOutputAfterInvestment) internal override returns (uint256 depositedAmount)Invests assets by:
Scaling amounts for 18 decimals
Converting USDCe to DAI through zapper
Depositing into Yearn vault
Parameters:
amount: Amount to investminOutputAfterInvestment: Minimum expected shares
Returns:
depositedAmount: Amount of tokens received
_divest
function _divest(uint256 shares) internal override returns (uint256 withdrawn)Withdraws assets by:
Redeeming from Yearn vault
Converting DAI to USDCe through zapper
Parameters:
shares: Amount of shares to withdraw
Returns:
withdrawn: Amount of assets received
Internal View Functions
_shareValue
function _shareValue(uint256 shares) internal view override returns (uint256 _assets)Calculates underlying value including conversion.
Parameters:
shares: Share amount
Returns:
Underlying asset value
_sharesForAmount
function _sharesForAmount(uint256 amount) internal view override returns (uint256 _shares)Calculates shares needed including spot price.
Parameters:
amount: Asset amount
Returns:
Required shares
_spotPriceDy
function _spotPriceDy(uint256 i, uint256 amount) internal view returns (uint256 _spotDy)Calculates spot price conversion without slippage.
Parameters:
i: Direction (0: DAI->USDC, 1: USDC->DAI)amount: Amount to convert
Returns:
Converted amount at spot price
Last updated