Skip to main content
Red Potion deploys 13 contract types across three layers. Each has a dedicated page covering its responsibility, key flows, and function reference. The authoritative source of truth is the zentryHQ/red-potion-contract repository.

The two auth patterns

Contracts authorize privileged calls one of two ways. Contracts that own their role state (Fund, FundManager, FundManagerDeployer, Strategy, StandaloneStrategy) use a local ACL (ACLModule, OpenZeppelin AccessControlEnumerable). The five fund spokes (DepositQueue, RedeemQueue, Oracle, FeeManager, RiskManager) hold no role state—their modifiers call back into the Fund’s access control. As a result, all roles for a fund and its spokes are managed on the Fund. Full detail in Access Control & Roles.

Conventions used throughout

  • Prices are 1e18-scaled asset-per-share: shares = amount × 1e18 / price.
  • Native ETH uses the sentinel 0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE.
  • onlyFund means the function can only be reached through the Fund (spoke pattern).
  • Roles checked on the Fund means the function lives on a spoke but authorizes against the Fund’s ACL.