FluidContractFactory ​
A contract that allows deployers to deploy any contract by passing the contract data in bytes
The main objective of this contract is to avoid storing contract addresses in our protocols which requires 160 bits of storage Instead, we can just store the nonce & deployment of this address to calculate the address realtime using "AddressCalcs" library
FluidContractFactory__InvalidOperation ​
error FluidContractFactory__InvalidOperation()
Thrown when an invalid operation is attempted
LogContractDeployed ​
event LogContractDeployed(address addr, uint256 nonce)
Emitted when a new contract is deployed
Parameters ​
Name | Type | Description |
---|---|---|
addr | address | The address of the deployed contract |
nonce | uint256 | The nonce used for deployment |
LogUpdateDeployer ​
event LogUpdateDeployer(address deployer, uint16 count)
Emitted when a deployer's count is updated
Parameters ​
Name | Type | Description |
---|---|---|
deployer | address | The address of the deployer |
count | uint16 | The new count for the deployer |
deployer ​
mapping(address => uint16) deployer
Mapping to store the deployment count for each deployer
totalContracts ​
uint256 totalContracts
total number of contracts deployed
constructor ​
constructor(address owner_) public
Constructor to initialize the contract
Parameters ​
Name | Type | Description |
---|---|---|
owner_ | address | The address of the contract owner |
updateDeployer ​
function updateDeployer(address deployer_, uint16 count_) public
Updates the allowed deployments count for a specific deployer
Only callable by the contract owner
Parameters ​
Name | Type | Description |
---|---|---|
deployer_ | address | The address of the deployer |
count_ | uint16 | The new count for the deployer |
deployContract ​
function deployContract(bytes contractCode_) external returns (address contractAddress_)
Deploys a new contract
Decrements the deployer's allowed deployments count if not the owner
Parameters ​
Name | Type | Description |
---|---|---|
contractCode_ | bytes | The bytecode of the contract to deploy |
Return Values ​
Name | Type | Description |
---|---|---|
contractAddress_ | address | The address of the deployed contract |
getContractAddress ​
function getContractAddress(uint256 nonce_) public view returns (address contractAddress_)
Calculates the address of a contract for a given nonce
Parameters ​
Name | Type | Description |
---|---|---|
nonce_ | uint256 | The nonce to use for address calculation |
Return Values ​
Name | Type | Description |
---|---|---|
contractAddress_ | address | The calculated contract address |
_deploy ​
function _deploy(bytes bytecode_) internal returns (address address_)
Internal function to deploy a contract
Uses inline assembly for efficient deployment
Parameters ​
Name | Type | Description |
---|---|---|
bytecode_ | bytes | The bytecode of the contract to deploy |
Return Values ​
Name | Type | Description |
---|---|---|
address_ | address | The address of the deployed contract |