VaultFactory
File:contracts/src/core/VaultFactory.solPattern: UUPS Upgradeable
Inherits:
Initializable, OwnableUpgradeable, UUPSUpgradeable
The VaultFactory is the entry point for vault creation. Any eligible leader calls createVault(), which validates their Argus reputation score, deploys a new ERC1967Proxy pointing to the CopyTradingVault implementation, registers it in the VaultRegistry, and emits VaultDeployed.
State Variables
| Variable | Type | Description |
|---|---|---|
vaultImplementation | address | Active implementation contract for new proxies |
registry | VaultRegistry | Central vault directory |
riskManager | RiskManager | Reputation gate for vault creation |
Events
VaultDeployed
Functions
initialize
createVault
RiskManager)
- Calls
riskManager.validateTrade(msg.sender)— reverts if Argus score < 600 - Encodes
CopyTradingVault.initialize(...)calldata - Deploys
ERC1967Proxywith the implementation and calldata - Calls
registry.registerVault(msg.sender, vaultAddress) - Emits
VaultDeployed(msg.sender, vaultAddress) - Returns the new vault proxy address
setVaultImplementation
setDependencies
VaultRegistry and RiskManager references.
Indexer Integration
The indexer’svaultFactory.listener.ts watches for VaultDeployed and triggers:
- On-chain reads:
vaultContract.vaultName()+vaultContract.baseAsset() - Pushes a
VaultDeployedPayloadtoVaultDeployedQueue - Starts listening to the new vault’s events immediately