Create2Impl.sol 899 B

12345678910111213141516171819202122232425262728293031323334
  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(
  7. uint256 value,
  8. bytes32 salt,
  9. bytes memory code
  10. ) public {
  11. Create2.deploy(value, salt, code);
  12. }
  13. function deployERC1820Implementer(uint256 value, bytes32 salt) public {
  14. Create2.deploy(value, salt, type(ERC1820Implementer).creationCode);
  15. }
  16. function computeAddress(bytes32 salt, bytes32 codeHash) public view returns (address) {
  17. return Create2.computeAddress(salt, codeHash);
  18. }
  19. function computeAddressWithDeployer(
  20. bytes32 salt,
  21. bytes32 codeHash,
  22. address deployer
  23. ) public pure returns (address) {
  24. return Create2.computeAddress(salt, codeHash, deployer);
  25. }
  26. receive() external payable {}
  27. }