Skip to main content

For AI agents: the complete documentation index is at llms.txt. Markdown versions of pages are available by appending .md to the URL or sending Accept: text/markdown.

Roles and Permissions

This page defines protocol roles, access modifiers, and which addresses may call each privileged function across the Orion Finance protocol smart contracts.


Vault-Level Roles​

Manager​

The Manager is the vault's administrative owner. The manager address is set at vault creation and may update fees, access control, and the assigned strategist.

Strategist​

The Strategist submits portfolio allocation intents. A strategist may be:

  • A wallet address (active management); or
  • A smart contract implementing IOrionStrategist (passive management).

Intent submission sets a target allocation; fulfillment depends on epoch execution, liquidity, and adapter behavior.

User​

A User is any address that may interact with a vault to deposit assets, redeem shares, and manage pending deposit or redemption requests. Vaults configure user access as permissionless or permissioned through three optional slots (deposit, holder, and transfer) each an independent contract (address(0) = permissionless on that slot). See Vault Access Control.

Protocol-Level Roles​

Each protocol role below has exactly one on-chain authoritative definition.

Admin​

Authoritative identityOrionConfig.owner()
How it is setConfig 2-step ownership transfer (transferOwnership() / acceptOwnership())

The admin role is held by a multi-signature Gnosis Safe.

Guardian​

Authoritative identityOrionConfig.guardian()
How it is setOrionConfig.setGuardian()

The Guardian is a designated address for emergency response under Terms of Service §7.4. On-chain guardian authority is limited to:

  • LiquidityOrchestrator.pause() and LiquidityOrchestrator.updateEpochDuration()
  • OrionConfig.setMinDepositAmount() and OrionConfig.setMinRedeemAmount()

Guardian cannot unpause the protocol, change fulfill batch size, or retune other operational parameters. Pause freezes protocol interaction; it does not restore lost funds or guarantee a specific recovery timeline.

Automation Registry​

Authoritative identityLiquidityOrchestrator.automationRegistry()
How it is setLiquidityOrchestrator.updateAutomationRegistry()

The Automation Registry is the address authorized to call performUpkeep. It is the intended off-chain automation caller that monitors checkUpkeep() and submits upkeep when conditions are met.

Upgrade Timelock​

The Upgrade Timelock is set once per upgradeable contract via setUpgradeTimelock. Until it is set, Admin may call setUpgradeTimelock. After it is set, only the timelock address may replace the timelock or authorize UUPS upgrades on OrionConfig, LiquidityOrchestrator, TransparentVaultFactory, EncryptedVaultFactory, and PriceAdapterRegistry.

Each upgradeable contract stores its own upgradeTimelock address; Admin still means Config.owner when bootstrapping.


Permission Matrix​

Vault-Level Functions​

FunctionManagerStrategistUser
updateFeeModelYesNoNo
claimVaultFeesYesNoNo
setDepositAccessControlYesNoNo
setHolderAccessControlYesNoNo
setTransferAccessControlYesNoNo
updateStrategistYesNoNo
submitIntentNo*YesNo
requestDepositNoNoYes
requestDepositForNoNoYes
cancelDepositRequestNoNoYes
requestRedeemNoNoYes
cancelRedeemRequestNoNoYes
claimUnderlyingNoNoYes
redeem (decommissioned only)NoNoYes

Notes:

  • A manager can set themselves as the strategist via updateStrategist, which allows them to submit intents.
  • User means any address, subject to optional deposit/holder/transfer access-control modules. Managers and strategists may call user functions when acting as ordinary users.
  • requestDepositFor applies deposit/holder ACL to the beneficiary, not the payer.
  • Synchronous redeem is enabled only for decommissioned vaults. Standard ERC-4626 deposit / mint / withdraw always revert.

Factory Functions​

Applies to both TransparentVaultFactory and EncryptedVaultFactory.

FunctionWhitelisted ManagerAdminUpgrade Timelock
createVaultYesNoNo
setVaultBeaconNoYesNo
setUpgradeTimelockNoYes*Yes*

Notes:

  • The createVault caller becomes the vault manager. Whitelisting is enforced via OrionConfig.isWhitelistedManager.
  • *setUpgradeTimelock: Admin if unset; Upgrade Timelock thereafter.

OrionConfig Functions​

FunctionAdminGuardianManager
setLiquidityOrchestratorYesNoNo
setVaultFactoryYesNoNo
setEncryptedVaultFactoryYesNoNo
setPriceAdapterRegistryYesNoNo
setProtocolRiskFreeRateYesNoNo
setMinDepositAmountYesYesNo
setMinRedeemAmountYesYesNo
setFeeChangeCooldownDurationYesNoNo
setMaxFulfillBatchSizeYesNoNo
setGuardianYesNoNo
setHpkePublicKeyYesNoNo
addWhitelistedAssetYesNoNo
removeWhitelistedAssetYesNoNo
addWhitelistedManagerYesNoNo
removeWhitelistedManagerYesNoNo
removeOrionVaultYesNoYes
updateProtocolFeesYesNoNo
setUpgradeTimelockYes*NoNo

Notes:

  • addWhitelistedAsset also registers the price adapter on PriceAdapterRegistry and the execution adapter on LiquidityOrchestrator.
  • *setUpgradeTimelock: Admin if unset; Upgrade Timelock thereafter (Timelock column omitted for brevity; same pattern as factories).
  • For removeOrionVault, Manager means that vault's manager.

LiquidityOrchestrator Functions​

FunctionAdminGuardianAutomation RegistryAnyone
pauseYesYesNoNo
unpauseYesNoNoNo
updateEpochDurationYesYesNoNo
updateMinibatchSizeYesNoNoNo
updateExecutionMinibatchSizeYesNoNoNo
updateCommitmentMinibatchSizeYesNoNoNo
updateAutomationRegistryYesNoNoNo
updateVerifierYesNoNoNo
updateVKeyYesNoNoNo
setTargetBufferRatioYesNoNoNo
setSlippageToleranceYesNoNoNo
depositLiquidityNoNoNoYes
withdrawLiquidityYesNoNoNo
claimProtocolFeesYesNoNoNo
performUpkeepYesNoYesNo
setUpgradeTimelockYes*NoNoNo

Notes:

  • *setUpgradeTimelock: Admin if unset; Upgrade Timelock thereafter.

Execution Adapter Functions​

FunctionContractAdminLiquidity OrchestratorAnyone
setAssetFeeUniswapV3ExecutionAdapterYesNoNo
buy / sellUniswapV3ExecutionAdapterNoNoYes
buy / sellERC4626ExecutionAdapterNoYesNo

Price Adapter and Registry Functions​

FunctionContractAdminUpgrade Timelock
setUpgradeTimelockPriceAdapterRegistryYes*Yes*
setPoolUniswapV3PoolPriceAdapterYesNo
configureFeedChainlinkPriceAdapterYesNo
setFallbackAdapterChainlinkPriceAdapterYesNo

Notes:

  • *setUpgradeTimelock: Admin if unset; Upgrade Timelock thereafter.