Create2Impl.sol 869 B

123456789101112131415161718192021222324252627282930
  1. // SPDX-License-Identifier: MIT
  2. pragma solidity ^0.8.0;
  3. import "../utils/Create2.sol";
  4. import "../utils/introspection/ERC1820Implementer.sol";
  5. contract Create2Impl {
  6. function deploy(uint256 value, bytes32 salt, bytes memory code) public {
  7. Create2.deploy(value, salt, code);
  8. }
  9. function deployERC1820Implementer(uint256 value, bytes32 salt) public {
  10. Create2.deploy(value, salt, type(ERC1820Implementer).creationCode);
  11. }
  12. function computeAddress(bytes32 salt, bytes32 codeHash) public view returns (address) {
  13. return Create2.computeAddress(salt, codeHash);
  14. }
  15. function computeAddressWithDeployer(
  16. bytes32 salt,
  17. bytes32 codeHash,
  18. address deployer
  19. ) public pure returns (address) {
  20. return Create2.computeAddress(salt, codeHash, deployer);
  21. }
  22. receive() external payable {}
  23. }