Skip to main content

UVAFactoryV2 Contract

Factory for deploying new vault instances.

Overview

UVAFactoryV2 uses CREATE2 for deterministic vault addresses:

  • Predict addresses before deployment
  • Same salt + owner = same address on any chain
  • Immutable permission manager reference

Functions

createAccount

Deploy a new vault.

function createAccount(
address owner,
uint256 salt
) external returns (address)
ParameterTypeDescription
owneraddressVault owner address
saltuint256Unique salt for address derivation

Returns: Address of the deployed vault

getAccountAddress

Predict vault address before deployment.

function getAccountAddress(
address owner,
uint256 salt
) external view returns (address)

permissionManager

Get the permission manager address.

function permissionManager() external view returns (address)

Events

AccountCreated

event AccountCreated(
address indexed account,
address indexed owner,
uint256 salt
);

Address Derivation

The vault address is derived using CREATE2:

address = keccak256(
0xff,
factoryAddress,
keccak256(salt),
keccak256(initCode)
)

This allows:

  • Predicting addresses before deployment
  • Same address across EVM chains (with same factory)
  • Counterfactual wallet patterns