// Функція для створення нового обмінника // отримує на вхід адрес ERC-20 токена, повертає адрес нового конракту обмінника function createExchange(address _tokenAddress) public returns (address) { // Перевірка, чи не являється адрес токена нульовим адресом // якщо так, створює помилку require(_tokenAddress != address(0), "invalid token address"); // Перевірка на наявність вже існуючого контракта обміну для певного токена // Використовується для того, щоб не створювати багато різних контрактів для одного і того самого токена require(tokenToExchange[_tokenAddress] == address(0), "exchange already exist"); // Створюємо екземпляр контракта обміну // в конструктор передаєм адрес токена Exchange exchange = new Exchange(_tokenAddress); // Зберігаємо в "маппінг" адрес токена і адрес нового контракту обміну tokenToExchange[_tokenAddress] = address(exchange); // Додаємо в масив адрес токену tokenAddresses.push(_tokenAddress); // Повертаєм адрес нового контракту обміну return address(exchange); }
0.7.1