/ contracts / finance / OptionTokenFactory.sol
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  }