OptionTokenFactory.sol
1 pragma solidity >=0.6.0; 2 pragma experimental ABIEncoderV2; 3 4 import "../deployment/Deployer.sol"; 5 import "../deployment/ManagedContract.sol"; 6 import "../interfaces/UnderlyingFeed.sol"; 7 import "./OptionToken.sol"; 8 9 contract OptionTokenFactory is ManagedContract { 10 11 address deployerAddr; 12 13 function initialize(Deployer deployer) override internal { 14 deployerAddr = address(deployer); 15 } 16 17 function create(string calldata symbol, address udlFeed) external returns (address) { 18 19 bytes memory sb1 = bytes(UnderlyingFeed(udlFeed).symbol()); 20 bytes memory sb2 = bytes(symbol); 21 for (uint i = 0; i < sb1.length; i++) { 22 if (sb1[i] != sb2[i]) { 23 revert("invalid feed"); 24 } 25 } 26 return address(new OptionToken(symbol, msg.sender, deployerAddr)); 27 } 28 }