Files
uniswap-v2/contracts/UniswapFactory.sol
2019-08-29 16:10:44 -04:00

29 lines
912 B
Solidity

pragma solidity ^0.5.11;
import "./UniswapExchange.sol";
import "./interfaces/IUniswapExchange.sol";
contract UniswapFactory {
event NewExchange(address indexed token, address indexed exchange);
uint256 public tokenCount;
mapping (address => address) public getExchange;
mapping (address => address) internal getToken;
mapping (uint256 => address) internal getTokenWithId;
function createExchange(address token) public returns (address) {
require(token != address(0));
require(getExchange[token] == address(0), 'EXCHANGE_EXISTS');
UniswapExchange exchange = new UniswapExchange(token);
exchange.setup(token);
getExchange[token] = address(exchange);
getToken[address(exchange)] = token;
uint256 tokenId = tokenCount + 1;
tokenCount = tokenId;
getTokenWithId[tokenId] = token;
emit NewExchange(token, address(exchange));
return address(exchange);
}
}