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:initialDomainSeparator
andinitialChainId
: 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.profitUnlockingRate
andfullProfitUnlockDate
: 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
Deposit
andWithdraw
, provide transactional transparency for assets moving in and out of the strategy.Performance Reporting: The
Reported
event 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