Create3Factory

Facilitates intent-based smart contract deployments at predictable addresses.

Write Methods

deploy()

This function deploys the smart contract that corresponds to the provided creation code and encoded constructor arguments. This deployment is only possible if the provided principal signed the message hash returned by getTransactionHash().

function deploy(
    address _principal,
    bytes memory _signature,
    bytes memory _creationCode,
    bytes memory _constructorArgsCode
) public payable {}

Read Methods

userNonces()

Given a principal address and a contract's creation code, this mapping returns the number of times the contract has been deployed for the principal through the Create3Factory contract. For example, if the smart contract in question has never been deployed for the given principal address, the current nonce would be zero.

mapping(address => mapping(bytes32 => uint256)) public userNonces;

getTransactionHash()

Given a principal address and a contract's creation code, this function returns the hash the principal account needs to sign to deploy the corresponding smart contract through the Create3Factory contract.

function getTransactionHash(
    address _principal, 
    bytes memory _creationCode
) public view returns (bytes32) {}

getAddress()

Given a principal address and a contract's creation code, this function returns the address the corresponding smart contract would have if it is deployed through the Create3Factory contract.

function getAddress(
    address _principal, 
    bytes memory _creationCode
) public view returns (address) {}

getBytecodeHash()

Given a contract's creation code, this function returns keccak256 hash of the provided bytecode.

function getBytecodeHash(
    bytes memory _creationCode
) public pure returns (bytes32) {}

getDeploymentHistory()

Given a principal address, this function returns a list of contract addresses that corresponds to all the contracts that have been deployed for the provided principal through the Create3Factory contract.

function getDeploymentHistory(
    address _principal
) public view returns (address[] memory) {}

Last updated