Factory
https://github.com/Into-the-Fathom/fathom-vaults-smart-contracts/blob/master/contracts/factory/packages/FactoryPackage.sol
Factory
is proxy, and its implementation is FactoryPackage
.
The FactoryPackage
contract is responsible for managing and deploying vaults with specific configurations. It maintains control over the vault's deployment template, fee structure, and also tracks all deployed vaults.
State Variables:
vaultPackage
: Address of the vault package used as the template for deploying new vaults.feeRecipient
: Address where collected fees are sent.feeBPS
: Basis points for calculating fees on transactions.vaults
: Dynamic array storing addresses of all vaults deployed by this factory.vaultCreators
: Mapping from vault address to the creator's address.
Set Functions
updateVaultPackage
updateVaultPackage
Arguments:
_vaultPackage
: New address for the vault package to update the template for future vault deployments.
updateFeeConfig
updateFeeConfig
Arguments:
_feeRecipient
: New address for receiving the fees collected from the operations._feeBPS
: New basis points for the fee, updating how the fee percentage is calculated.
deployVault
deployVault
Arguments:
_profitMaxUnlockTime
: The maximum time over which profits are unlocked in the deployed vault._assetType
: Type identifier of the asset, useful for handling different asset behaviors or requirements._asset
: Address of the asset (usually a token) that the vault will manage._name
: Human-readable name of the vault for identification._symbol
: Symbol of the vault's token._accountant
: Address of the accountant contract that manages fee assessments and other accounting tasks for the vault._admin
: Address that will have administrative privileges over the newly created vault.
Read Functions
getVaults
getVaults
Returns: An array of addresses representing all vaults that have been deployed by this factory.
getVaultCreator
getVaultCreator
Arguments:
_vault
: The address of the vault for which the creator's address is queried.
Returns: The address of the creator who initially deployed the specified vault.
protocolFeeConfig
protocolFeeConfig
Returns: A tuple containing the current fee basis points (
uint16
) and the address of the fee recipient. This provides a quick overview of how fees are being handled by the factory.
Events:
VaultPackageUpdated
VaultPackageUpdated
Parameters:
vaultPackage
(address indexed
): Emitted when the vault package address is updated.
FeeConfigUpdated
FeeConfigUpdated
Parameters:
feeRecipient
(address indexed
): Emitted when the fee recipient address is updated.feeBPS
(uint16 indexed
): Emitted when the fee percentage basis points are updated.
VaultDeployed
VaultDeployed
Parameters:
vault
(address indexed
): Address of the newly deployed vault.profitMaxUnlockTime
(uint32 indexed
): Profit unlock time for the vault.asset
(address indexed
): Asset managed by the vault.name
(string
): Name of the vault.symbol
(string
): Symbol of the vault’s token.accountant
(address
): Accountant contract address.admin
(address
): Admin address with privileges over the vault.
Last updated