как найти адрес токена
Как определить адрес смарт-контракта до деплоя: использование 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
Проверка и отслеживание токенов криптовалюты
Чтобы понять пришли ли токены криптовалюты, вначале нужно узнать, на каком именно блокчейне они созданы. Популярным платформами для создания цифровых монет являются Ethereum, NEO, Waves, Stellar. Стоит подчеркнуть, что примерно 95% всех цифровых монет находятся на площадке эфиририума. Поэтому будем рассматривать сервисы, которые предназначены именно для указанной криптовалюты, и где смотреть токены на базе этой виртуальной валюты.
Следует отметить, что не все кошельки Ethereum поддерживают Tokens. Чтобы их принять, нужен стандарт ERC-20. К ним относятся MyEtherWallet, Metamask и прочие. Так как при передаче цифровых монет используется эфириум-адрес, то не стоит указывать данные, находящиеся на бирже или данные мультивалютных кошельков, например, Cryptonator.
Как отслеживать свои токены криптовалюты?
Чаще всего этот вопрос возникает у пользователей, которые участвуют в бесплатной раздаче благодаря Airdrop и Bounty-кампаниям.
Если не знаете, где смотреть токены, после того, как решили заработать на ICO, например, можете воспользоваться одним из указанных ниже способов:
Каждый адрес содержит отдельно баланс эфира и токенов. При этом последние сформированы в удобный список, который можно развернуть. В этом выпадающем списке можно перейти на смарт-контракт присланных монет, где и будет информация о каком-либо токене, которая как раз и нужна для раздела «Add Custom Token» в MyEtherWallet. Может пригодиться, когда дело дойдет до вывода токенов из кошелька. Также в разделе «ERC20 Token Txns» можно посмотреть полный список всех переводов.
Чтобы более комфортно взаимодействовать с этим ресурсом, можно зарегистрироваться, что позволит постоянно отслеживать транзакции по выбранным кошелькам.
Работа с токенами на MyEtherWallet
Данный способ не является приоритетным, так как не всегда понятно, какой токен был начислен после участия в Airdrop. Поэтому рекомендуем использовать ресурсы указанные выше.
MyEtherWallet – в разделе «Send Ether & Tokens» войти с помощью кодовой фразы или же авторизоваться через Metamask, Mist и т.д. Далее, в разделе «Tokens Balances» нажимаем кнопку «Show All», после чего появится список, где стоит отыскать нужную монету. Если есть информация о каком-либо, ожидаемом токене (адрес смарт-контракта, обозначение, количество символов после запятой), то можно его добавить в «Add Custom».
Для того чтобы посмотреть информацию о том, какие цифровые монеты находятся на определенном адресе, стоит всего лишь воспользоваться сервисами Etherscan или Ethplorer. Далее, в поиске введите адрес кошелька и все. Или же можно посмотреть токены на MyetherWallet, и там найти искомый цифровой актив, из него же есть возможность сразу перейти на Etherscan либо Ethplorer.
Добавление пользовательских токенов в кошелек Solana (SOL): добавление токенов SPL и ERC20
В этом руководстве мы покажем, как найти и добавить любые пользовательские токены SPL и ERC20 в ваш кошелек Solana. Для этого мы будем использовать кошельки Sollet и Solflare.
SPL, известный как библиотека программ Solana, представляет собой набор сетевых программ, поддерживаемых командой Solana.
Одним из основных преимуществ Solana является то, что он значительно решает проблемы масштабируемости, встречающиеся в других блокчейнах. Он поддерживает большее количество транзакций в секунду со значительно более низкой комиссией.
Благодаря этому экосистема Solana стремительно растет, и в сети Solana реализуется большое количество хороших проектов.
Некоторые из популярных проектов, доступных на блокчейне Solana:
SRM (Serum), Waves, REN, RAMP, GRT (The Graph), OXY (Oxygen), KIN, RAY (Raydium), FIDA (Bonfida), MAPS, COPE, ROPE и т.д.
На Solana представлены не только токены SPL, но и токены ERC20, такие как USDT, LINK и проекты, построенные на другой экосистеме.
Токены на Solana
Так же, как пользователи могут создавать и развертывать свой собственный токен ERC20 в блокчейне Ethereum, любой может создать свой собственный токен SPL, используя программу токенов в блокчейне Solana.
Вы можете создавать и выпускать свои собственные взаимозаменяемые и невзаимозаменяемые токены (NFT) аналогично тому, как токены реализуются в сети ETH.
Скоро мы сделаем руководство о том, как вы можете создавать и запускать свои собственные токены SPL на блокчейне Solana.
На данный момент опытные пользователи могут ознакомиться со следующими ссылками и использовать указанные ниже инструменты для создания токенов SPL и управления ими.
Конфигурация и управление токеном SPL:
Это пояснение к утилите командной строки. Кроме того, в этом техническом документе есть руководство по интеграции кошелька с токеном SPL и список методов JSON RPC, доступных для использования с токеном SPL.
Также здесь есть пользовательский интерфейс, в котором вы можете создавать свои собственные токены и управлять ими. Это позволит вам создать новый токен SPL и редактировать существующие токены.
Создатель токена SPL:
Токены SPL (эквивалент Solana ERC-20) по сути такие же, как и токены ERC20. Это похоже на то, каким образом токены ERC20 реализованы в сети Ethereum.
Вы можете создать собственные токены Solana (токены SPL) всего за несколько минут, подключив свой кошелек. После создания вы можете выпустить токены, разместив их на DEX, например, Serum и Bonfida.
Затем пользователи могут подключить свои кошельки к этим DEX и начать торговать созданными вами токенами.
Хотя концепция пользовательских токенов Solana работает так же, как ERC20 на Ethereum, между ними есть некоторые отличия.
Пользовательские токены SPL
На кошельках Ethereum, таких как MetaMask и My Ether Wallet, вы можете отправлять / получать токены ERC 20 на свой публичный адрес ETH. Это невозможно сделать с токенами SPL.
Однако вы не можете отправлять токены SPL на адрес SOL, как вы это делаете с токенами ERC20, потому что каждый токен SPL в блокчейне Solana будет иметь свой собственный адрес в блокчейне.
В связи с этим вам придется добавлять каждый токен SPL отдельно, прежде чем вы сможете иметь их в своем кошельке.
Давайте посмотрим, как добавить пользовательские токены в ваш кошелек Solana.
Добавление пользовательских токенов SPL / ERC 20 в кошелек Solana
Оба кошелька дают пользователям возможность отправлять / получать SOL (собственный токен) и любые токены SPL.
Настройка кошелька
Поскольку оба кошелька являются клиентскими веб-кошельками, настроить их очень просто.
Кошелек Sollet
Перейдите на https://www.sollet.io/, и кошелек сгенерирует для вас seed фразу. Скопируйте ее, введите пароль и создайте новый кошелек.
Обязательно сохраните исходное слово резервной копии.
Кошелек Solflare
Перейдите на https://solflare.com/create-wallet и нажмите «Создать новый кошелек».
Вы можете создать кошелек с помощью файла Keystore или создать новый кошелек, подключив свой кошелек Ledger (Ledger Nano S или Nano X).
Если вы используете файл хранилища ключей, убедитесь, что вы выбрали надежный пароль. После установки пароля загрузите файл хранилища ключей.
Примечание. Если вы потеряете файл хранилища ключей или пароль, который вы использовали для его шифрования, все средства в этом кошельке будут потеряны безвозвратно.
Ни разработчики SolFlare, ни команда Solana не смогут помочь вам восстановить ваш кошелек. Поэтому убедитесь, что эта информация в безопасности.
После создания нового кошелька оба кошелька по умолчанию сгенерируют для вас новый адрес получения SOL.
Примечание. Не отправляйте и не получайте токены SPL на свой адрес SOL! Вы не получите свои токены, если отправите их на свой адрес SOL. Токены будут потеряны.
Также добавление каждого токена будет стоить небольшое количество SOL. Поэтому убедитесь, что в вашем кошельке достаточно SOL, чтобы покрыть комиссию.
Оба кошелька предоставят вам информацию о том, сколько SOL будет стоить добавление токена SPL.
Вы можете купить SOL на Binance или FTX.
Добавление токенов SPL / ERC20 в кошелек Solana аналогично добавлению пользовательских токенов в кошелек MetaMask.
Чтобы добавить токен в свой кошелек, вам нужно найти адрес контракта токена, также известный как mint address.
Прежде чем найти адрес токена, сначала убедитесь, что токен, который вы ищете, уже доступен в списке кошельков.
В кошельке Sollet щелкните значок +, чтобы добавить токены. Теперь во вкладке популярных токенов найдите токен, который вы хотите добавить.
В кошельке Solflare перейдите на вкладку токенов и нажмите «создать учетную запись токенов». Откроется всплывающее окно, на котором вы можете выбрать популярный токен из списка или ввести открытый ключ Mint.
Вы найдете как SPL, так и токены ERC20. Токены ERC20 в основном представляют собой wrapped токены в блокчейне Solana.
Если токен, который вы ищете, доступен в списке, выберите его и нажмите «Далее», чтобы добавить токен в свой кошелек.
Примечание. Как мы уже говорили, добавление каждого токена в ваш кошелек будет стоить 0,002039 SOL (минимум 0,0025 SOL за токен). Убедитесь, что у вас есть SOL для покрытия комиссии.
Если у вас нет SOL, при добавлении токена вы получите следующее сообщение об ошибке:
«Не удалось отправить транзакцию: сбой моделирования транзакции: попытка дебетования счета, но не обнаружена запись о предыдущем кредите»
Добавление пользовательских токенов
Если токен, который вы ищете, отсутствует в списке, вы можете добавить пользовательский токен вручную. Все, что вам нужно, это Mint адрес токена.
Поиск адреса токена:
Есть два способа найти Mint адрес:
Чтобы найти адрес токена SPL, используйте block explorer Solana: https://explorer.solana.com/
Чтобы найти адрес токена ERC20, используйте block explorer Ethereum: https://etherscan.io/
Используйте строку поиска, чтобы найти токен. Как только вы найдете токен, скопируйте его адрес.
Кроме того, вы также можете использовать такие сервисы, как CoinMarketCap и Coingecko, чтобы найти адрес токена.
Если вы не можете найти адрес токена с помощью поиска, попросите сообщество или разработчиков поделиться адресом.
Как только у вас будет адрес, вставьте его в раздел ручного ввода на кошельке Sollet. Также введите имя токена и символ (ticker).
В Solflare перейдите к пользовательскому токену и введите mint адрес.
После ввода нажмите «Добавить» / «Далее», чтобы добавить пользовательский токен в свой кошелек.
Подождите, пока контракт обновится. Затем вы увидите, что ваш токен SPL появится на главном экране вашего кошелька.
Готово! Теперь вы можете отправлять / получать / размещать токены SPL с помощью кошелька Solana.
В вашем кошельке Solana теперь будет отображаться адрес токена. Используйте его, чтобы внести этот конкретный токен SPL.
Получение SOL или любых других токенов SPL на этот адрес приведет к потере токенов.
Помните, что токены SPL будут генерировать разные адреса для каждого токена SPL.
Также, если вы удалите и восстановите свой кошелек SOL, все ваши добавленные вами SPL-токены также будут полностью восстановлены независимо от того, есть ли эти токены в вашей учетной записи.
Надеемся, данный материал будет вам полезен.
В этом руководстве мы покажем, как залистить любой токен на 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.