Yearn V3 Framework
As previously discussed, Yearn V3 adopts the "Tokenized Strategy" pattern to streamline strategy implementation. This section provides a detailed explanation of its components.
TokenizedStrategy Implementation
The TokenizedStrategy contract is a single, immutable contract deployed at 0xBB51...feD0, responsible for handling all ERC-4626 functionality across Yearn strategies. Key features include:
Accounting and Share Mechanics: Manages ERC-4626 accounting for deposits, withdrawals, and share balances.
Profit/Loss Management: Calculates profits and losses while managing fee accrual.
Profit Unlocking: Implements profit unlocking mechanisms based on configurable parameters.
Pure Logic Contract: Contains no storage and operates purely as a shared logic layer across all strategies.
BaseStrategy Delegation
The BaseStrategy employs a proxy pattern to delegate functionality to the TokenizedStrategy while maintaining isolated storage for each strategy. Key characteristics include:
Fallback Delegation: Forwards unimplemented calls to the TokenizedStrategy via
fallback.Delegatecall Execution: Executes shared logic in the context of the individual strategy’s storage.
Standardized Hooks: Provides predefined hooks for implementing custom logic:
_deployFunds: Allocates funds for strategy deployment._freeFunds: Releases funds for withdrawals._harvestAndReport: Manages profit reporting and harvesting.
Vault Storage Model
Yearn V3 centralizes strategy storage using the BASE_STRATEGY_STORAGE slot, which contains the StrategyData structure. This structure standardizes storage across all strategies and includes the following fields:
StrategyData Structure
Share and Asset Accounting:
ERC20 asset: Underlying token managed by the strategy.uint8 decimals: Precision of the token.uint256 totalSupply: Total number of shares issued.mapping balances: Individual share balances.uint256 totalAssets: Total assets held by the strategy.
Profit Management:
uint256 profitUnlockingRate: Unlock rate for profits (per second).uint96 fullProfitUnlockDate: Target date for complete profit unlocking.uint32 profitMaxUnlockTime: Maximum profit unlocking duration.uint16 performanceFee: Percentage of performance fees.address performanceFeeRecipient: Address receiving performance fees.uint96 lastReport: Timestamp of the last report.
Access Control:
address management: Current management address.address pendingManagement: Pending management address.address keeper: Keeper address for routine operations.address emergencyAdmin: Emergency administrator address.
Status:
uint8 entered: Reentrancy guard state.bool shutdown: Emergency shutdown status.
Each BaseStrategy, including Term Strategy Vaults, maintains an isolated instance of this data structure in the fixed BASE_STRATEGY_STORAGE slot. Logic from the TokenizedStrategy interacts with this storage via delegatecall, ensuring modularity and isolation for all strategies.
Last updated