MultiDepositorVaultFactory
Inherits: IMultiDepositorVaultFactory, FeeVaultDeployer, Sweepable
Used to create new multi-depositor vaults using delegate call
Only one instance of the factory will be required per chain
State Variables
ERC20_NAME_SLOT
ERC7201-compliant transient storage slot for storing vault token erc20 name during deployment
Equal to keccak256(abi.encode(uint256(keccak256("aera.factory.erc20.name")) - 1)) & ~bytes32(uint256(0xff));
bytes32 internal constant ERC20_NAME_SLOT = 0x79a9bb099f009196aa3acc685f15554a8e8fd10fee7019652e2c9a6d65a86500;
ERC20_SYMBOL_SLOT
ERC7201-compliant transient storage slot for storing vault token erc20 symbol during deployment
Equal to keccak256(abi.encode(uint256(keccak256("aera.factory.erc20.symbol")) - 1)) & ~bytes32(uint256(0xff));
bytes32 internal constant ERC20_SYMBOL_SLOT = 0xab25fe6ab1c05d9a94c8d6727a857804585a85a98c2bb360f69300eb1a356300;
MULTI_DEPOSITOR_VAULT_PARAMETERS_SLOT
ERC7201-compliant transient storage slot for storing multi depositor vault parameters during deployment
Equal to keccak256(abi.encode(uint256(keccak256("aera.factory.multiDepositorVaultParameters")) - 1)) & ~bytes32(uint256(0xff));
bytes32 internal constant MULTI_DEPOSITOR_VAULT_PARAMETERS_SLOT =
0xe5669a0cf4b353071b0fa74e3cea85f64b33cd9eee158e4f6614aca797ff3a00;
_DEPLOY_DELEGATE
Address of the deploy delegate
address internal immutable _DEPLOY_DELEGATE;
Functions
constructor
constructor(address initialOwner, Authority initialAuthority, address deployDelegate)
Sweepable(initialOwner, initialAuthority);
create
Create multi depositor vault
function create(
bytes32 salt,
string calldata description,
ERC20Parameters calldata erc20Params,
BaseVaultParameters calldata baseVaultParams,
FeeVaultParameters calldata feeVaultParams,
IBeforeTransferHook beforeTransferHook,
address expectedVaultAddress
) external override requiresAuth returns (address deployedVault);
Parameters
salt
bytes32
The salt used to generate the vault address
description
string
Vault description
erc20Params
ERC20Parameters
ERC20 parameters for deployment
baseVaultParams
BaseVaultParameters
Base vault parameters for deployment
feeVaultParams
FeeVaultParameters
Fee vault parameters for deployment
beforeTransferHook
IBeforeTransferHook
Before transfer hooks for deployment
expectedVaultAddress
address
Expected vault address to check against deployed vault address
Returns
deployedVault
address
Deployed vault address
getERC20Name
Get the ERC20 name of vault units
function getERC20Name() external view returns (string memory name);
Returns
name
string
The name of the vault ERC20 token
getERC20Symbol
Get the ERC20 symbol of vault units
function getERC20Symbol() external view returns (string memory symbol);
Returns
symbol
string
The symbol of the vault ERC20 token
multiDepositorVaultParameters
Get the vault parameters
function multiDepositorVaultParameters() external view returns (IBeforeTransferHook beforeTransferHook);
Returns
beforeTransferHook
IBeforeTransferHook
The hooks called before vault unit transfers
_deployVault
Deploy vault
function _deployVault(
bytes32 salt,
string calldata description,
ERC20Parameters calldata erc20Params,
BaseVaultParameters calldata baseVaultParams,
FeeVaultParameters calldata feeVaultParams,
IBeforeTransferHook beforeTransferHook
) internal returns (address deployed);
Parameters
salt
bytes32
The salt value to create vault
description
string
Vault description
erc20Params
ERC20Parameters
ERC20 parameters for vault deployment used in MultiDepositorVault
baseVaultParams
BaseVaultParameters
Parameters for vault deployment used in BaseVault
feeVaultParams
FeeVaultParameters
Parameters for vault deployment specific to FeeVault
beforeTransferHook
IBeforeTransferHook
Parameters for vault deployment specific to MultiDepositorVault
Returns
deployed
address
Deployed vault address
_storeERC20Parameters
Store ERC20 name and symbol in transient storage
function _storeERC20Parameters(ERC20Parameters calldata params) internal;
Parameters
params
ERC20Parameters
Struct containing ERC20 name and symbol
_storeMultiDepositorVaultParameters
Store beforeTransferHook address in transient storage
function _storeMultiDepositorVaultParameters(IBeforeTransferHook beforeTransferHook) internal;
Parameters
beforeTransferHook
IBeforeTransferHook
The hooks called before token transfers
_createVault
Create a new vault with delegate call
function _createVault(bytes32 salt) internal returns (address deployed);
Parameters
salt
bytes32
The salt value to create vault
Returns
deployed
address
Deployed vault address
_loadStringFromSlot
Load a short string from the given storage slot
function _loadStringFromSlot(uint256 slot) internal view returns (string memory);
Parameters
slot
uint256
Storage slot to read from
Returns
<none>
string
Decoded string
Last updated