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 and initialChainId: Utilized for EIP-712 compliance across different chains.

    • totalSupply, totalIdle, and totalDebt: Track the total shares issued, the idle assets, and the assets actively deployed, respectively.

    • profitUnlockingRate and fullProfitUnlockDate: 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.


  • Management Events: Such as UpdateManagement, signal changes in management roles or parameters.

  • Operational Events: Including Deposit and Withdraw, 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

Copyright© Fathom App 2024.