GroupBuy Factory
//SPDX-License-Identifier: Unlicense
pragma solidity ^0.8.4;
import "@openzeppelin/contracts/access/Ownable.sol";
import "@openzeppelin/contracts/utils/Context.sol";
import "@openzeppelin/contracts/proxy/Clones.sol";
interface IGroupBuy {
function initialize(address token, uint threshold, uint deadline) external;
}
contract GroupBuyFactory is Context, Ownable {
event GroupBuyCreated(address groupBuy, address indexed token);
address groupBuyContract;
constructor(address groupBuyAddress) {
groupBuyContract = groupBuyAddress;
}
function createGroupBuy(address token, uint buySize, uint deadline) public onlyOwner() returns (address new_groupBuy) {
new_groupBuy = Clones.clone(groupBuyContract);
IGroupBuy(new_groupBuy).initialize(token, buySize, deadline);
emit GroupBuyCreated(new_groupBuy, token);
Ownable(new_groupBuy).transferOwnership(owner());
}
}
Last updated