AddressSetFactory
Title: AddressSetFactory
Author: Golem Foundation
Factory for deterministic AddressSet deployment via CREATE2
Final salt = keccak256(salt, owner). Ownership transfers to specified owner after deployment.
Note: security-contact: [email protected]
State Variables
addressSets
Tracks deployed AddressSets per deployer
mapping(address => AddressSetInfo[]) public addressSets
Functions
deploy
Deploy a new AddressSet with deterministic address
function deploy(bytes32 salt, address owner) external returns (address addressSet);
Parameters
| Name | Type | Description |
|---|---|---|
salt | bytes32 | Salt for CREATE2 address derivation |
owner | address | Address that will own the AddressSet |
Returns
| Name | Type | Description |
|---|---|---|
addressSet | address | Deployed AddressSet address |
predictAddress
Predict deployment address before calling deploy
function predictAddress(bytes32 salt, address owner) external view returns (address predicted);
Parameters
| Name | Type | Description |
|---|---|---|
salt | bytes32 | Salt for CREATE2 address derivation |
owner | address | Address that will own the AddressSet |
Returns
| Name | Type | Description |
|---|---|---|
predicted | address | Predicted deployment address |
getAddressSetsByDeployer
Returns all AddressSets deployed by a specific address
function getAddressSetsByDeployer(address deployer) external view returns (AddressSetInfo[] memory);
Parameters
| Name | Type | Description |
|---|---|---|
deployer | address | Deployer address |
_recordAddressSet
function _recordAddressSet(address owner, address deployedAddressSet, bytes32 salt) internal;
Events
AddressSetDeployed
Emitted when a new AddressSet is deployed
event AddressSetDeployed(address indexed deployer, address indexed addressSet, address indexed owner, bytes32 salt);
Parameters
| Name | Type | Description |
|---|---|---|
deployer | address | Address that called deploy |
addressSet | address | Deployed AddressSet address |
owner | address | Address that owns the AddressSet |
salt | bytes32 | Salt used for CREATE2 derivation |
Structs
AddressSetInfo
Information about a deployed AddressSet
struct AddressSetInfo {
address deployerAddress;
uint256 timestamp;
address owner;
address addressSet;
bytes32 salt;
}