TokenizedStrategy
https://github.com/Into-the-Fathom/fathom-vaults-smart-contracts/blob/master/contracts/strategy/TokenizedStrategy.sol
The TokenizedStrategy contract serves as a proxy-style implementation that centralizes logic, storage, and management for strategies inheriting from BaseStrategy. It facilitates the creation of ERC4626 compliant vaults by handling interactions and state transitions through delegated calls to this contract.
Contract Storage
StrategyData: This struct consolidates all storage variables needed for a strategy, optimizing for gas efficiency by reducing the frequency of storage slot loading during function execution. Key elements include:initialDomainSeparatorandinitialChainId: Utilized for EIP-712 compliance across different chains.totalSupply,totalIdle, andtotalDebt: Track the total shares issued, the idle assets, and the assets actively deployed, respectively.profitUnlockingRateandfullProfitUnlockDate: Manage the unlocking of profit over time.management,keeper,emergencyAdmin: Addresses responsible for strategy management, routine maintenance, and emergency interventions.
Core Functionalities
Initialization and Strategy Setup: On the deployment of a new strategy, essential parameters like asset type, strategy name, and roles are established.
Asset Management: Functions to deploy funds (
deployFunds), free funds (freeFunds), and report the strategy's performance (report) encapsulate core investment strategy operations.Fee Management: The contract facilitates setting and adjusting performance fees, which are calculated on the profits generated by the strategy.
Access Control Modifiers
onlyManagement: Ensures that only the designated management address can perform certain administrative tasks.onlyKeepers: Restricts sensitive operations such as reporting to either the designated keeper or management addresses.onlyEmergencyAuthorized: Allows for emergency actions, such as strategy shutdown, to be executed by authorized emergency administrators.
Events
Management Events: Such as
UpdateManagement, signal changes in management roles or parameters.Operational Events: Including
DepositandWithdraw, provide transactional transparency for assets moving in and out of the strategy.Performance Reporting: The
Reportedevent logs the outcomes of performance reports, detailing profits, losses, and fees.
Strategy Interaction Functions
deposit/mint: For adding assets to the strategy in exchange for shares.withdraw/redeem: For removing assets from the strategy, optionally handling losses within specified bounds.shutdownStrategy/emergencyWithdraw: For halting new investments and managing assets in response to adverse conditions.
Configuration and Maintenance
setPerformanceFee,setKeeper,setEmergencyAdmin: Functions to adjust operational parameters and roles to respond to evolving strategy needs or external conditions.shutdownStrategy: A critical function used to cease all investment activities, allowing the strategy to only handle withdrawals and necessary maintenance.
Utility and Helper Functions
convertToShares/convertToAssets: Convert between the underlying asset and shares based on the current state of the strategy, aiding in calculations for deposits and withdrawals._updateBalances: Ensures internal accounting reflects the actual state of assets within the strategy, crucial after any interaction that alters the balance of deployed or idle assets.
Last updated
Was this helpful?