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.
Last updated
As previously discussed, Yearn V3 adopts the "Tokenized Strategy" pattern to streamline strategy implementation. This section provides a detailed explanation of its components.
Last updated
The TokenizedStrategy contract is a single, immutable contract deployed at , 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.
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.
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.