UserAccountFactory.sol
1 pragma solidity >=0.5.0 <0.7.0; 2 3 import "./Creator.sol"; 4 import "./UserAccount.sol"; 5 import "../cryptography/ECDSA.sol"; 6 7 contract UserAccountFactory is Creator { 8 9 constructor() public { 10 11 } 12 13 function create(uint256 _salt) external returns(address) { 14 // return newUserAccount(_salt, msg.sender); 15 } 16 17 function createSigned(uint256 _salt, bytes calldata _signature) external returns(address) { 18 // return newUserAccount(_salt, ECDSA.recover(keccak256(abi.encodePacked(address(this), _salt, msg.sender)), _signature)); 19 } 20 21 function predictUserAddress(uint256 _salt, address _owner) external view returns(address) { 22 // return _computeContractAddress(abi.encodePacked(type(UserAccount).creationCode, _owner, address(0), address(0)), bytes32(keccak256(abi.encodePacked(_owner, _salt)))); 23 } 24 25 function newUserAccount(uint256 _salt, address _owner) internal returns(address) { 26 //return _create2(0, abi.encodePacked(type(UserAccount).creationCode, _owner, address(0), address(0)), bytes32(keccak256(abi.encodePacked(_owner, _salt)))); 27 } 28 29 }