pragma solidity ^0.5.2; import "./TokenFactory.sol"; import "./MiniMeToken.sol"; /** * @dev This contract is used to generate clone contracts from a contract. * In solidity this is the way to create a contract from a contract of the * same class */ contract MiniMeTokenFactory is TokenFactory { /** * @notice Update the DApp by creating a new token with new functionalities * the msg.sender becomes the controller of this clone token * @param _parentToken Address of the token being cloned * @param _snapshotBlock Block of the parent token that will * determine the initial distribution of the clone token * @param _tokenName Name of the new token * @param _decimalUnits Number of decimals of the new token * @param _tokenSymbol Token Symbol for the new token * @param _transfersEnabled If true, tokens will be able to be transferred * @return The address of the new token contract */ function createCloneToken( address _parentToken, uint _snapshotBlock, string calldata _tokenName, uint8 _decimalUnits, string calldata _tokenSymbol, bool _transfersEnabled ) external returns (address payable) { MiniMeToken newToken = new MiniMeToken( address(this), _parentToken, _snapshotBlock, _tokenName, _decimalUnits, _tokenSymbol, _transfersEnabled ); newToken.changeController(msg.sender); return address(newToken); } }