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.

EncryptedVaultFactory

EncryptedVaultFactory

A factory contract for creating Orion encrypted vaults using Beacon Proxy pattern

This contract deploys BeaconProxy instances that point to a shared encrypted vault implementation.

config

contract IOrionConfig config

Orion Config contract address

vaultBeacon

contract UpgradeableBeacon vaultBeacon

UpgradeableBeacon for encrypted vaults

upgradeTimelock

address upgradeTimelock

Address of the upgrade timelock that must authorise all implementation upgrades

constructor

constructor() public

Constructor that disables initializers for the implementation contract

initialize

function initialize(address initialOwner, address configAddress, address vaultBeaconAddress) public

Initialize the contract

Parameters

NameTypeDescription
initialOwneraddressThe address of the initial owner
configAddressaddressThe address of the OrionConfig contract
vaultBeaconAddressaddressThe address of the UpgradeableBeacon for vaults

createVault

function createVault(address strategist, string name, string symbol, uint8 feeType, uint16 performanceFee, uint16 managementFee, address depositAccessControl) external returns (address vault)

Creates a new encrypted vault

Parameters

NameTypeDescription
strategistaddressThe address of the vault strategist
namestringThe name of the vault
symbolstringThe symbol of the vault
feeTypeuint8The fee type
performanceFeeuint16The performance fee
managementFeeuint16The management fee
depositAccessControladdressThe address of the deposit access control contract (address(0) = permissionless)

Return Values

NameTypeDescription
vaultaddressThe address of the new encrypted vault

setVaultBeacon

function setVaultBeacon(address newVaultBeacon) external

Updates the vault beacon address

Parameters

NameTypeDescription
newVaultBeaconaddressThe new UpgradeableBeacon address

setUpgradeTimelock

function setUpgradeTimelock(address newTimelock) external

Sets the upgrade timelock address.

If no timelock is set yet, only the owner may call this. Once a timelock is active, only the timelock itself may replace it, preventing the owner from bypassing the delay.

Parameters

NameTypeDescription
newTimelockaddressThe new timelock address (e.g. OpenZeppelin TimelockController); address(0) not permitted

_authorizeUpgrade

function _authorizeUpgrade(address) internal

Authorizes an upgrade to a new implementation

Requires the caller to be the upgrade timelock (if set) or the owner (during initial bootstrapping before a timelock has been configured).