pcaversaccio / createx

Factory smart contract to make easier and safer usage of the `CREATE` and `CREATE2` EVM opcodes as well as of `CREATE3`-based (i.e. without an initcode factor) contract creations.

Home Page:https://createx.rocks

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

πŸ“‹ Unit and Fuzzing Tests

pcaversaccio opened this issue Β· comments

Functions

public Functions

CREATE

  • function deployCreate(bytes) payable returns (address) (assigned: @pcaversaccio, PR: #14)
  • function deployCreateAndInit(bytes,bytes,tuple(uint256,uint256)) payable returns (address) (assigned: @pcaversaccio, PR: #14)
  • function deployCreateAndInit(bytes,bytes,tuple(uint256,uint256),address) payable returns (address) (assigned: @pcaversaccio, PR: #14)
  • function deployCreateClone(address,bytes) payable returns (address) (address)` (assigned: @pcaversaccio, PR: #14)
  • function computeCreateAddress(uint256) view returns (address) (address)` (assigned: @pcaversaccio, PR: #14)
  • function computeCreateAddress(address,uint256) view returns (address) (address)` (assigned: @pcaversaccio, PR: #14)

CREATE2

  • function deployCreate2(bytes32,bytes) payable returns (address) (assigned: @pcaversaccio, PR: #17)
  • function deployCreate2(bytes) payable returns (address) (assigned: @pcaversaccio, PR: #17)
  • function deployCreate2AndInit(bytes32,bytes,bytes,tuple(uint256,uint256),address) payable returns (address) (assigned: @pcaversaccio, PR: #17)
  • function deployCreate2AndInit(bytes,bytes,tuple(uint256,uint256)) payable returns (address) (assigned: @pcaversaccio, PR: #17)
  • function deployCreate2AndInit(bytes,bytes,tuple(uint256,uint256),address) payable returns (address) (assigned: @pcaversaccio, PR: #17)
  • function deployCreate2AndInit(bytes32,bytes,bytes,tuple(uint256,uint256)) payable returns (address) (assigned: @pcaversaccio, PR: #17)
  • function deployCreate2Clone(bytes32,address,bytes) payable returns (address) (assigned: @pcaversaccio, PR: #17)
  • function deployCreate2Clone(address,bytes) payable returns (address) (assigned: @pcaversaccio, PR: #17)
  • function computeCreate2Address(bytes32,bytes32) view returns (address) (assigned: @pcaversaccio, PR: #17)
  • function computeCreate2Address(bytes32,bytes32,address) pure returns (address) (assigned: @pcaversaccio, PR: #17)

CREATE3

  • function computeCreate3Address(bytes32,address) pure returns (address) (assigned: @pcaversaccio, PR: #18)
  • function computeCreate3Address(bytes32) view returns (address) (assigned: @pcaversaccio, PR: #18)
  • function deployCreate3(bytes) payable returns (address) (assigned: @pcaversaccio, PR: #18)
  • function deployCreate3(bytes32,bytes) payable returns (address) (assigned: @pcaversaccio, PR: #18)
  • function deployCreate3AndInit(bytes32,bytes,bytes,tuple(uint256,uint256)) payable returns (address) (assigned: @pcaversaccio, PR: #18)
  • function deployCreate3AndInit(bytes,bytes,tuple(uint256,uint256)) payable returns (address) (assigned: @pcaversaccio, PR: #18)
  • function deployCreate3AndInit(bytes32,bytes,bytes,tuple(uint256,uint256),address) payable returns (address) (assigned: @pcaversaccio, PR: #18)
  • function deployCreate3AndInit(bytes,bytes,tuple(uint256,uint256),address) payable returns (address) (assigned: @pcaversaccio, PR: #18)

internal Functions

  • function _guard(bytes32) view returns (bytes32) (assigned: @pcaversaccio, PR: #13)
  • function _parseSalt(bytes32) view returns (SenderBytes,RedeployProtectionFlag) (assigned: @pcaversaccio, PR: #11)
  • function _efficientHash(bytes32,bytes32) pure returns (bytes32) (assigned: @mds1, PR: #9)
  • function _generateSalt() view returns (bytes32) (assigned: @mds1, PR: #9)
  • function _requireSuccessfulContractCreation(address) view (assigned: @mds1, PR: #9)
  • function _requireSuccessfulContractCreation(bool,address) view (assigned: @mds1, PR: #9)
  • function _requireSuccessfulContractInitialisation(bool,bytes,address) view (assigned: @pcaversaccio, PR: #11)

Each function is considered tested if all unit and fuzz tests have been added.

  • I would like to propose one statefulFuzz (a.k.a. invariant) test (assigned: @pcaversaccio, PR: #17):
function statefulFuzz_NoEtherBalance() public {
    assertEq(createXAddr.balance, 0);
}