Как добавить кастомный токен в MEW web
3 минут на чтение
Любой токен ERC20 можно добавить в локальный интерфейс MEW, следуя этим инструкциям.
Убедитесь, что он уже не установлен в постоянном списке токенов
Сначала вы должны убедиться, что вашего токена нет в нашем интерфейсе по умолчанию.
Шаг 2. Чтобы найти необходимый токен, выполните поиск по нашему списку токенов по умолчанию.
Шаг 3. Если вы не видите ваш токен, продолжайте следовать инструкциям в данной статье.
Поиск информации о токене
Для добавления токена в наш интерфейс вам понадобятся три параметра: адрес контракта, число десятичных знаков и символ. Всю эту информацию можно найти с помощью проводника блокчейна Ethereum, например Etherscan.io или Ethplorer.io. Мы покажем, как ее найти через Etherscan.io.
Шаг 1. Направляйтесь на Etherscan.
Шаг 2. Если у вас есть баланс токена, который вы хотите добавить, выполните поиск вашего публичного адреса (0x…) в поисковом поле.
Шаг 3. Найдите ваш токен в выпадающем списке балансов токенов. Выберите токен, и вы попадете на экран информации о токене.
Шаг 4. Здесь вы найдете адрес контракта токена и количество десятичных знаков в правой части интерфейса. Запомните число десятичных знаков, а затем нажмите на адрес договора, чтобы перейти на главный экран токена.
Шаг 5. Скопируйте этот адрес и вернитесь на MEW. В верхней части списка токенов нажмите «+ Кастомные токены», чтобы открыть экран добавления своих токенов.
Шаг 6. Вставьте адрес контракта в верхнее поле, укажите символ токена (аббревиатуру) во втором поле и введите количество десятичных знаков в последнее поле. Затем нажмите «Сохранить». Все готово!
Распространенные проблемы
«Токен уже существует!»
Если вы увидите эту ошибку, то ее можно легко исправить. Введите информацию о своем токене еще раз, но поставьте «2» после символа. Например, если символ токена — «XYZ», то укажите «XYZ2».
Если вы все еще видите эту ошибку после сохранения токена с измененным символом, то возможно, что ваш токен уже находится в списке токенов по умолчанию. Попробуйте снова поискать его символ в списке токенов. Если он отображается с нулевым балансом, но на etherscan.io есть положительный баланс, то вам, возможно, придется поменять узел ETH в верхнем правом углу.
Мои добавленные токены исчезают!
Если токены, которые вы добавили, исчезают при каждом доступе к нашему интерфейсу, убедитесь, что у вас не установлено программное обеспечение для очистки кэша (например, CCleaner). Ваша пользовательская информация о токене хранится локально в вашем браузере, поэтому эта программа удалит эту информацию, и вам нужно будет добавлять токен при каждом доступе к кошельку.
Смарт контракты Ethereum: пишем простой контракт для ICO
В последнее время ко мне поступает огромное количество запросов за помощью в разработке смартконтракта для проведения ICO, при этом у меня не хватает времени, чтобы помочь каждому. Поэтому я решил написать этот небольшой пост (ссылка на видео в конце поста), в котором описываю очень простой смартконтракт для проведения crowdsale, который вы можете использовать в своих проектах.
Для экономии времени я написал контракт заранее. Давайте разберем его по шагам.
Смартконтракт является программой написанной на языке программирования. В нашем случае на языке Solidity. Для разработки простых контрактов я использую онлайн редактор и компилятор Remix.
Признаком хорошего тона считается начинать любую программу, в т.ч. и смартконтракт, с указания лицензии, на основе которой она распространяется. В нашем случае это GPL. Также можно указать себя в качестве автора контракта, конечно, если вы не пишете контракт для какого-нибудь скамового проекта, где стесняетесь указать себя в качестве автора.
Сразу после идет строка, которая указывает, какую версию компиллятора следует использовать. Если этой строки не будет, то смартконтракт не скомпилируется.
Далее идет непосредственно исходный код самого смартконтракта, который я структурировал в виде иерархии контрактов, каждый из которых реализует законченную функциональность. Это упрощает понимание и последующее использование кода в ваших контрактах.
Прежде всего следует понимать, что после загрузки смартконтракта в виртуальную машину Ethereum вы будете взаимодействовать с ним на общих основаниях, как и все остальные пользователи. Логично, что мы, как команда проекта, хотели бы находиться в привилегированных условиях, которые должны как минимум выражаться в том, что контракт должен сформировать именно на командные токены и конечно же отдал именно нам собранный эфир. Для этого контракт должен знать своего владельца и именно за это отвечает контракт «owned».
Контракт «owned» содержит лишь одно публичное поле «owner», значение которого инициализируется в конструкторе значением поля «sender» глобальной структуры «msg», таким образом, изначально владельцем контракта становится тот, кто осуществил его деплой.
Логично предусмотреть возможность смены владельца на случай, если наш private key будет скомпрометирован, для этого предусмотрена функция «changeOwner», которая получает в качестве параметра адрес нового владельца. Следует обратить на модификатор «onlyOwner», который определен внутри этого же смартконтракта. Модификаторы представляют собой очень удобную конструкцию, позволяющую сгруппировать и присвоить название условиям вызова функций смартконтракта. Модификатор «onlyOwner» проверяет, что вызов функции осуществляется с адреса, который сохранен в поле «owner».
Контракт «owned» полностью работоспособен и предельно прост, однако несет в себе одну скрытую угрозу, ведь при вызове функции «changeOwner» мы можем по ошибке указать несуществующий адрес, а значит, потеряем контроль над контрактом. Чтобы исправить этот недостаток, достаточно ввести еще поле, назовем его «candidate», а при вызове функции «changeOwner» будем сохранять новое значение сначала в «candidate», а перемещать его в «owner» будем, как только кандидат подтвердит свое вступление в права, вызвав со своего адресу функцию «confirmOwner».
Следующий в иерархии контракт – «Crowdsale», отвечает непосредственно за сбор средств и выдачу токенов и наследует рассмотренный ранее контракт «owned».
Особое внимание следует обратить на следующие элементы контракта:
Конструктор смартконтракта «Crowdsale» предельно прост. Прежде всего инициализируется значение поля «totalSupply». Наш контракт выпускает 21 миллион токенов, из которых 20 миллионов сразу будут перемещены на баланс смартконтракта. Будем считать, что токены с адреса смартконтракта как раз и доступны для продажи. Оставшиеся токены, в нашем случае 1 миллион, будут записаны на адрес владельца контракта. Ну и в конце конструктора испускается событие «Transfer», которое помещается в блокчейн и информирует пользователей контракта о том, что с баланса контракта на баланс владельца контракта переведено соответствующее количество токенов. Именно испускание этого события позволит etherscan.io корректно отобразить держателей токенов и их балансы.
Ну и самая главная функция смартконтракта «Crowdsale», так называемая fallback функция, которая вызывается каждый раз, когда эфир поступает на адрес нашего смартконтракта. В самом начале осуществляется проверка, что на балансе смартконтракта есть хоть какое-то количество токенов для продажи. Далее устанавливаем фиксированную цену токенов – 5000 штук за 1 эфир. Затем вычисляем, сколько токенов необходимо отправить отправителю эфира. Количество переданных в транзакции средств записано в поле «value» глобальной структуры «msg» и указано оно в «wei», поэтому при определении количества токенов осуществляем перевод «wei» в «ether».
Затем осуществляется проверка того, что на балансе смартконтракта есть достаточное количество токенов для продажи. Если запрошено больше токенов, чем есть у смартконтракта, то будем переводить все оставшиеся токены. Определяем стоимость в «wei» оставшихся токенов и возвращаем отправителю излишне переведенный эфир. Убеждаемся, что количество покупаемых токенов ненулевое, после чего записываем это количество токенов на баланс покупателя и списываем их с баланса смартконтракта. В конце не забываем испустить событие Transfer.
На этом собственно реализация функциональности сбора средств закончена, но теперь нужно сделать наш токен операбельным и реализовать еще некоторые функции стандарта ERC20. Это сделано в контракте «EasyToken», который наследуется от рассмотренного ранее контракта «Crowdsale».
Прежде всего определим 4 публичных поля, которые сейчас практически не используются никакими кошельками, но для порядка все же определим их. Здесь укажем полное и сокращенное наименование токена, а также количество дробных знаков. В нашем случае токен является неделимым, т.к. значение поля «decimals» установлено равным 0.
И наконец, единственной функцией смартконтракта «EasyToken», ради которой мы создавали этот контракт, является «transfer», которая также является частью стандарта ERC20 и позволит кошелькам пользователей осуществлять передачу токенов друг другу, переводить их на биржу и выводить их с нее. Реализация функции крайне проста, проверяется достаточность количества токенов на балансе отправителя, после чего баланс отправителя уменьшается, а баланс получателя увеличивается на запрошенное количество токенов. В конце испускается событие «Transfer». Теперь наш токен является операбельным и осталось сделать самое главное – предоставить владельцу контракта возможность вывести собранные эфиры. Это мы сделаем в контракте «EasyCrowdsale».
Функция «withdraw» имеет модификатор «onlyOwner», т.е. может быть вызвана только владельцем смартконтракта. Единственное, что она делает – переводит весь баланс смартконтракта на адрес владельца смартконтракта.
Несмотря на то, что рассмотренный нами смартконтракт является полностью функционально законченным и работоспособным, использовать его в реальном проекте я бы не рекомендовал. Чрезмерное упрощение логики контракта привело к тому, что такой контракт не обеспечивает защиту интересов инвесторов в должной мере, а именно, не устанавливает срок проведения crowdsale, не устанавливает минимальной границы сбора, не возвращает средства инвесторам в случае недостижения минимальной границы, а также содержит ряд известных уязвимостей на уровне компилятора языка Solidity, например, подвержен так называемой short address attack.
Многие из этих недостатков устранены в смартконтракте нашего проекта PROVER. Контракт PROOF загружен в Ethereum по этому адресу вместе с исходным кодом, с которым можно познакомиться. Можно даже проверить, как работает контракт, отправив на него реальный эфир, у нас как раз сейчас идет Pre-ICO:). На самом деле, мы будем рады, если вы присоединитесь к presale нашего проекта PROVER, который продлится до конца сентября. PROVER – это уникальная технология подтверждения подлинности видеоматериалов на базе блокчейн и видеоаналитики.
Как добавить любой токен в кошелек MetaMask: сети ERC20, BEP20?
После завершения установки кошелька MetaMask по умолчанию отображается только ETH (Ethereum). В вашей учетной записи не будут отображаться другие токены BEP20.
Также некоторые новые и малоизвестные токены могут даже не отображаться в результатах поиска. Вам придется вручную добавлять такие токены в свой кошелек.
Добавить токен очень просто, и это займет у Вас всего несколько секунд.
В этом руководстве мы расскажем Вам как добавить токены ERC20 (Ethereum Chain) и BEP20 (Binance Smart Chain) в кошелек MetaMask.
Как добавить токены в кошелек MetaMask
Перед добавлением токенов в свою учетную запись MetaMask убедитесь, что вы выбрали правильную сеть. То есть; если вы хотите добавить токен ERC20, выберите «Ethereum Mainnet». Если вы хотите добавить токен BEP20, выберите «Binance Smart Chain».
Теперь давайте добавим токены в учетную запись MetaMask.
Попробуйте строку поиска:
Примечание. Функция поиска работает только в сети «Ethereum Mainnet». То есть MetaMask отображает только стандартные токены ERC20 в результатах поиска. Чтобы добавить токены BEP20, вам необходимо использовать параметр пользовательского токена, который мы объяснили ниже.
Как мы уже говорили, на вкладке поиска будут отображаться только самые распространенные и популярные токены. Если токен, который вы ищете, не отображается, используйте опцию пользовательского токена.
Добавление пользовательских токенов в MetaMask
Чтобы добавить токен, нам нужен только адрес контракта соответствующего токена.
Какой адрес токена (адрес контракта) и где их найти?
Зайдите на Etherscan.io, чтобы узнать номер контракта токена ERC20.
Используйте BscScan, чтобы найти детали контракта токена BEP20.
Используйте соответствующие блок эксплореры, найдите имя токена и скопируйте номер контракта. Вы увидите детали адреса контракта под сводкой профиля.
Шаги по добавлению пользовательского токена ERC20 в MetaMask
Пример адреса контракта токена RSR: 0x8762db106b2c2a0bccb3a80d1ed41273552616e8
Как только информация получена; нажмите «Далее» и добавьте токен. Пользовательский токен ERC20 теперь добавлен в ваш кошелек.
Шаги по добавлению пользовательского токена BEP20 в MetaMask
Процедура добавления токенов BEP20 такая же, как указано выше. За исключением того, что вам нужно будет использовать BscScan, чтобы найти адрес контракта BEP20.
Чтобы это сработало, убедитесь, что вы выбрали смарт-цепочку Binance и подключились к ней. Только тогда кошелек может получить информацию о токене BEP20.
Вот и все. Вы успешно добавили свой любимый токен ERC20 и BEP20. Ваш недавно добавленный токен будет отображаться на главном экране в списке токенов.
Где я могу разместить свои токены ERC20?
Для каждого токена не существует отдельного адреса. Просто отправьте токены на свой адрес MetaMask Ethereum, и токены появятся.
Адреса ERC20 и BEP20 начинаются с 0x.
Вы можете использовать ту же процедуру для добавления любых пользовательских токенов ERC20 или BEP20. Просто убедитесь, что вы переключились на правильную сеть.
Для ERC20 вы должны быть в основной сети Ethereum. Для токенов BEP20 вам следует перейти на Binance Smart Chain.
Теперь вы можете подключить свой кошелек и торговать токенами на Uniswap.
Спасибо за прочтение. Если вам нравится это руководство, подпишитесь на нас в Telegram чате и в YouTube канале, чтобы получать больше обновлений.
Как определить адрес смарт-контракта до деплоя: использование CREATE2 для криптобиржи
Тема блокчейна не перестает быть источником не только всяческого хайпа, но и весьма ценных с технологической точки зрения идей. Посему не обошла она стороной и жителей солнечного города. Присматриваются люди, изучают, пытаются переложить свою экспертизу в традиционном инфобезе на блокчейн-системы. Пока что точечно: одна из разработок «Ростелеком-Солар» умеет проверять безопасность софта на базе блокчейна. А попутно возникают некоторые мысли по решению прикладных задач блокчейн-сообщества. Одним из таких лайфхаков – как определить адрес смарт-контракта до деплоя с помощью CREATE2 – сегодня хочу с вами поделиться под катом.
Опкод CREATE2 был добавлен в хард-форке Константинополь 28 февраля этого года. Как указано в EIP, этот опкод был введен в основном для каналов состояний (state channels). Однако, мы использовали его для решения другой проблемы.
На бирже есть пользователи с балансами. Каждому пользователю мы должны предоставить Ethereum-адрес, на который кто угодно сможет отправлять токены, тем самым пополняя свой аккаунт. Давайте назовем эти адреса «кошельками». Когда токены приходят на кошельки, мы должны отправить их на единый кошелек (hotwallet).
В следующих разделах я анализирую варианты решения этой задачи без CREATE2 и рассказываю, почему мы отказались от них. Если вам интересен только конечный результат, вы можете найти его в разделе «Итоговое решение».
Ethereum-адреса
Самое простое решение — генерировать новые ethereum-адреса для новых пользователей. Эти адреса и будут кошельками. Чтобы перевести токены из кошелька в hotwallet, необходимо подписать транзакцию вызовом функции transfer() с приватным ключом кошелька из бэкенда.
Этот подход имеет следующие преимущества:
Создавать отдельный смарт-контракт для каждого пользователя
Развертывание отдельного смарт-контракта для каждого пользователя позволяет не хранить приватные ключи от кошельков на сервере. Биржа вызовет этот умный контракт для передачи токенов в hotwallet.
От этого решения мы тоже отказались, поскольку пользователю нельзя показать адрес его кошелька без развертывания смарт-контракта (это на самом деле возможно, но довольно сложным образом с другими недостатками, которые мы не будем здесь обсуждать). На бирже пользователь может создать столько аккаунтов, сколько ему нужно, и каждому нужен собственный кошелек. Это означает, что нам нужно тратить деньги на деплой контракта, даже не будучи уверенными, что пользователь будет использовать эту учетную запись.
Опкод CREATE2
Чтобы устранить проблему предыдущего способа, мы решили использовать опкод CREATE2. CREATE2 позволяет заранее определить адрес, по которому будет развернут смарт-контракт. Адрес рассчитывается по следующей формуле:
Больше улучшений
Предыдущее решение все еще имеет один недостаток: вам нужно платить за развертывание умного контракта. Тем не менее, вы можете избавиться от этого. Для этого вы можете вызвать функцию transfer(), а затем selfdestruct() в конструкторе кошелька. И тогда газ за развертывание смарт-контракта будет возвращен.
Вопреки распространенному заблуждению, вы можете развернуть смарт-контракт по одному и тому же адресу несколько раз с опкодом CREATE2. Это связано с тем, что CREATE2 проверяет, что nonce целевого адреса равен нулю (ему присваивается значение «1» в начале конструктора). При этом функция selfdestruct() каждый раз сбрасывает nonce адреса. Таким образом, если вы снова вызовете CREATE2 с теми же аргументами, проверка на nonce пройдет.
Обратите внимание, что это решение аналогично варианту с ethereum-адресами, но без необходимости хранить приватные ключи. Стоимость перевода денег с кошелька на hotwallet примерно равна стоимости вызова функции transfer(), поскольку мы не платим за развертывание смарт-контракта.
Итоговое решение
Когда пользователь переводит токены на соответствующий адрес кошелька, наш бэкэнд видит событие Transfer с параметром _to, равным адресу кошелька. На этот момент уже возможно увеличить баланс пользователя на бирже до развертывания кошелька.
Когда на адресе кошелька накапливается достаточное количество токенов, мы можем перевести их все сразу в hotwallet. Для этого бекенд вызывает функцию фабрики смарт-контрактов, которая выполняет следующие действия:
Таким образом, вызывается конструктор смарт-контракта кошелька, который передает все свои токены на адрес hotwallet и затем самоуничтожается.
Полный код можно найти здесь. Обратите внимание, что это не наш продакшн-код, так как мы решили оптимизировать байт-код кошелька и записали его в опкодах.
Автор Павел Кондратенков, специалист в области Ethereum
В этом руководстве мы покажем, как залистить любой токен на Uniswap.
Все мы знаем, что криптовалюты можно покупать, продавать и обменивать на другие криптовалюты. Но для этого придется полагаться на централизованные биржи.
Проблема в том, что вы не можете торговать некоторыми монетами, пока биржа не решит их залистить. И хуже всего то, что период ожидания может быть долгим, а стоимость листинга на бирже слишком высока в зависимости от того, насколько популярна конкретная биржа.
Благодаря DeFi (децентрализованное финансирование) и всем DEX (децентрализованным биржам), которые доступны сегодня, любой может самостоятельно зарегистрировать токен и сделать его доступным для торговли. Никаких комиссий за листинг на бирже, никакого периода ожидания и никаких ненужных хлопот.
В настоящее время на DEX, например, Uniswap, можно добавлять только токены. В частности, токены ERC-20 (токены на основе Ethereum).
В этом руководстве мы продемонстрируем, как залистить токен на децентрализованную биржу Uniswap. Может ли это быть любой, к примеру, Ваш собственный токен ERC20, который вы хотите продать? Или это может быть ваш любимый токен, который пока нигде недоступен для торговли?
Прежде чем мы объясним, как листить токены, давайте сделаем краткий обзор на Uniswap и поймем, как работает листинг токенов!
Что такое Uniswap?
Любые токены ERC20 могут быть залистины и проданы на Uniswap. Это достигается засчет использования смарт контрактов.
Как работает листинг токенов?
Uniswap работает на рынке торговых пар. Каждая торговая пара управляется и защищается уникальным смарт-контрактом, который развертывается в сети Ethereum.
Кто угодно, включая Вас, может создать торговую пару и стать поставщиком ликвидности, поместив резервы в пул торговой пары.
После того, как пара развернута, пользователи могут начать обмен и обеспечить ликвидность. И все это без необходимости создавать учетную запись или проходить KYC.
Uniswap не полагается на ордера. Вместо этого он использует алгоритм, определяющий цену. Мы объясним принцип работы алгоритма и все его технические аспекты в отдельном руководстве, поэтому обязательно добавляйте наш сайт в закладки!
Uniswap предоставляет пользователям простой интерфейс для обмена между ETH и любыми токенами ERC20. Его лучше всего использовать, когда вы хотите быстро обменять токены по текущей рыночной цене.
Теперь, когда вы узнали, что такое Uniswap, и как он работает, давайте посмотрим, как разместить токены на этой бирже.
Требования для листинга токена ERC20 на Uniswap
Допустим, вы начали проект DeFi, у которого есть собственный токен ERC20, и вы хотите разместить его на Uniswap. Вот что вам понадобится:
Как добавить токен на Uniswap?
2) В правом верхнем углу вы увидите опцию «Connect to a wallet» («Подключиться к кошельку»). Нажмите на нее, выберите MetaMask или любой другой кошелек на Ваш выбор, разблокируйте его и нажмите «connect» («Подключиться»).
3) После подключения перейдите на https://app.uniswap.org/#/swap. Теперь нажмите «select a token» («выбрать токен») и найдите токен.
Поскольку это пользовательский токен, вы не найдете его в списке Uniswap по умолчанию. Вам нужно будет искать токен по его адресу.
Примечание. Любой желающий может создать, а также придумать название для любого токена ERC20 в Ethereum, включая создание фэйк версии существующих токенов.
Uniswap не проверяет подлинность токена. Он просто извлекает информацию о токене с указанного Вами адреса токена. Прежде чем взаимодействовать с токеном ERC20, проведите исследование и убедитесь, что адрес контракта токена правильный. Также перед обменом или предоставлением ликвидности обязательно проверьте аналитику токенов на Uniswap.info.
Вот как можно узнать адрес контракта токена:
Перейдите на Etherscan.io и найдите токен, который вы хотите добавить в Uniswap. Скопируйте адрес контракта и вставьте его в строку поиска Uniswap. Теперь токен появится там.
4) Теперь, если токен, который вы хотите залистить, уже кем-то добавлен, то Вы получите возможность обменяться им. В этом случае вам не нужно добавлять его снова.
Кроме того, если Вы видите такой вариант, как «Insufficient liquidity for this Trade» («Недостаточная ликвидность для этой Сделки»), тогда это означает, что токен еще не внесен в листинг или никто не предоставил достаточно ликвидности для этой пары.
Вы будете первым поставщиком ликвидности, и вот как развернуть свой токен за считанные минуты в этом случае.
Рекомендации по размещению токена ERC-20 (Ethereum) на Uniswap
Перейдите на https://app.uniswap.org/#/pool и нажмите «create a pair» («Создать пару»), где вы увидите следующее сообщение:
«You are the first liquidity provider. The ratio of tokens you add will set the price of this pool. Once you are happy with the rate click supply to review»
На Uniswap для листинга токена вам необходимо предоставить ликвидность. Вы не можете обеспечить ликвидность только для этого токена. Вам также нужно будет выбрать дополнительный токен для обеспечения ликвидности.
Это может быть ETH или эквивалентная сумма любого токена ERC20. То есть пара может быть либо ETH и токеном ERC 20, либо двумя токенами ERC 20.
Поскольку вы первым указываете токен, его значение совершенно произвольно. Соотношение, которое вы предоставляете, определяет цену токена.
Например, если вы предоставляете 1 ETH и 1 токен, это означает, что цена токена изначально установлена на 1 ETH. Если вы предоставляете 0,1 ETH и 1000 токенов XYZ, то цена XYZ устанавливается равной 10000 за 1 ETH или 0,0001 ETH за XYZ.
Создайте пару и добавьте ликвидность
Внизу экрана поставщика ликвидности вы найдете начальные цены и долю пула.
Примечание: любая транзакция, которую вы инициируете на Uniswap, будет стоить небольшую сумму ETH в качестве платы за газ.
После этого вы увидите сообщение: «Transaction submitted – View on Etherscan» («Транзакция отправлена - просмотр на Etherscan»).
Вы создали пару и обеспечили ликвидность.
Поздравляем! Вы только что добавили токен в Uniswap.
После успешного листинга токена пользователи могут начать переключаться между этой парой. Сообщите сообществу о листинге, чтобы они могли торговать и обеспечивать ликвидность.
Чтобы начать обмен, перейдите в раздел «swap» на бирже Uniswap. Вам все равно придется искать токен, используя адрес контракта.
По умолчанию он не будет отображаться в списке токенов во внешнем интерфейсе. Как только пара станет популярной и станет достаточно ликвидной, вы можете отправить запрос на включение вашего токена в список токенов внешнего интерфейса.
Кроме того, предоставляя ликвидность, вы получаете 0,3% от всех сделок по паре, пропорционально вашей доле в пуле.
Как поставщик ликвидности, мы надеемся, что вы понимаете, что такое непостоянная потеря. Также, как мы говорили в начале, любой проект может размещать токены на основе Ethereum на Uniswap.
Однако обязательно проведите исследование и будьте внимательны, прежде чем предоставлять ликвидность или обменивать токен на Uniswap.
Воспользуйтесь сайтом uniswap.info, на котором есть информация обо всех LP (пулах ликвидности) Uniswap pair.
Надеемся, вы научились добавлять собственные токены ERC-20 на биржу Uniswap. Теперь вы можете тороговать любыми любимыми токенами с малой капитализацией на Uniswap.






























