- Регистрация
- 12.06.2018
- Сообщения
- 1 344
- Благодарностей
- 910
- Баллы
- 113
Всем привет. Данный текст является продолжением моей прошлой работы, посвящённой автоматизации работы с блокчейном, а именно "Работаем с блокчейном напрямую”. Если в ней речь шла про EVM сети, то сегодня будем рассматривать и делать транзакции в сети Tron.
Tron — это децентрализованная блокчейн-платформа, созданная для создания и управления смарт-контрактами, децентрализованных приложений (dApps) и цифровых активов, изначально ориентировалась на индустрию развлечений, но со временем значительно расширила свои возможности и стала важной частью экосистемы децентрализованных финансов (DeFi).
Основные особенности Tron:
Tron использует модель Proof of Stake (PoS), называемую DPoS (Delegated Proof of Stake), которая обеспечивает высокую скорость обработки транзакций и низкие комиссии. Это одно из главных преимуществ сети Tron по сравнению с такими блокчейнами, как Ethereum, где транзакции могут быть дороже и медленнее из-за ограничений пропускной способности.
Смарт-контракты и dApps.
Смарт-контракты в Tron работают на языке программирования Solidity, как и в сети Ethereum, что упрощает миграцию разработчиков между платформами. dApps, созданные на базе Tron, охватывают широкий спектр применения: от игр до финансовых сервисов.
Для совершения транзакций в сети Tron используется API trongrid.io - официальный API-интерфейс для взаимодействия с блокчейном Tron, который предоставляет разработчикам доступ к функциям сети, таким как отправка транзакций, проверка состояния блоков, работа со смарт-контрактами и многое другое.
В качестве примера по работе с транзакциями будем рассматривать сайт SunPump - платформа для запуска и торговли мемкоинами на блокчейне Tron, которая позволяет пользователям создавать и торговать токенами.
Перед тем, как продолжить, советую перечитать прошлую статью по работе с блокчейном, в которой содержатся технические аспекты касательно кодирования и декодирования данных. Там содержатся основы технической информации, необходимой для понимания всего процесса! Чтобы не дублировать информацию, дальнейшие шаги будут описаны без подробного описания технических нюансов. Поскольку мы будем работать с совместимым с EVM блокчейном 1го уровня, который использует виртуальную машину TRON для создания и развертывания смарт контрактов, то вся изложенная ранее информация будет подходить и к Трону.
Для начала откроем страницу с любым токеном и изучим информацию о нём:
https://sunpump.meme/token/TWNhT6DcXfqgGRguj5DBxgcxvMx7EwGkZj
Посмотрев хэши транзакций определяем смарт контракт, отвечающий за покупку/продажу.
https://tronscan.org/#/contract/TTfvyrAz86hbZk5iDpKD78pqLGgi8C7AAw/code
Нас интересуют функции purchaseToken и saleToken (покупка и продажа токенов соответственно):
Первая функция purchaseToken принимает 2 обязательных параметра token_address и AmountMin, т.е. адрес токена и минимальное количество токенов, а так же на эту функцию необходимо отправить TRX. Если в качестве второго параметра указать 0, то получим количество токенов по текущему курсу (т.к. этот контракт является клоном Uniswap, то курс расчитывается по специальной формуле внутри контракта в зависимости от ликвидности).
Вторая функция saleToken принимает 3 параметра token_address, tokenAmount и AmountMin – адрес токена, количество продаваемых токенов и сумма TRX для получения. Если в последнем параметре указать 0, то получим TRX из расчёта текущего курса токена при его продаже.
Но есть ещё один нюанс – при продаже токенов необходимо дать разрешение контракту биржи тратить токены с нашего счёта. Для этого используется функция Approve, которую необходимо вызвать перед продажей токенов.
Для реализации и автоматизации всех описанных действий естественно будем использовать ZennoPoster шаблон, выполняющий все необходимые действия.
В настройках указываем:
Для продажи токенов сначала необходимо узнать количество токенов на нашем кошельке. Для этого используем специальную функцию balanceOf, имеющуюся на каждом контракте токенов. Но эта транзакция не использует запись в блокчейн, соответственно является бесплатной, поэтому для данного запроса используем другой эндпоинт TriggerConstantContract и НЕ используем отправку транзакции в сеть через BroadcastTransaction.
После получения количества токенов необходимо дать разрешение контракту списывать токены с нашего кошелька, как было сказано выше, с помощью функции Approve. Данная функция принимает на вход 2 параметра – адрес того, кому мы разрешаем тратить наши токены (адрес биржи) и количество, которое мы разрешаем тратить - для простоты ставим максимальное значение (вообще ставить максимальное разрешение в функции Approve небезопасно, но это отдельная тема для разговора и для простоты ставим максимум).
После выдачи разрешения совершаем продажу, формируя транзакцию похожим образом. В качестве minAmount ставим 0, чтобы получить TRX по текущему курсу. Параметр callValue являющийся количеством переводимых TRX устанавливаем в 0 (как и в функции approve). После чего подписываем транзакцию, отправляем в сеть и проверяем txId. При подтверждении транзакции токены будут успешно проданы.
Подведение итогов.
Используя ZennoPoster и добавив минимальную логику для ожидания и отслеживания сигналов для покупки/продажи, получаем автоматизированный процесс по покупке/продаже токенов и извлечению потенциальной прибыли из этого процесса.
P.S. Перед api запросами принудительно выставлены паузы, т.к. при частых запросах можно словить временный бан от апи и ждать некоторое время для продолжения корректной работы.
P.P.S. Все необходимые библиотеки, находящиеся в папке dll, необходимо скопировать в папку ExternalAssemblies зеннопостера.
Tron — это децентрализованная блокчейн-платформа, созданная для создания и управления смарт-контрактами, децентрализованных приложений (dApps) и цифровых активов, изначально ориентировалась на индустрию развлечений, но со временем значительно расширила свои возможности и стала важной частью экосистемы децентрализованных финансов (DeFi).
Основные особенности Tron:
- Высокая скорость транзакций (до 2000 транзакций в секунду).
- Низкие комиссии за транзакции.
- Поддержка смарт-контрактов.
Tron использует модель Proof of Stake (PoS), называемую DPoS (Delegated Proof of Stake), которая обеспечивает высокую скорость обработки транзакций и низкие комиссии. Это одно из главных преимуществ сети Tron по сравнению с такими блокчейнами, как Ethereum, где транзакции могут быть дороже и медленнее из-за ограничений пропускной способности.
Смарт-контракты и dApps.
Смарт-контракты в Tron работают на языке программирования Solidity, как и в сети Ethereum, что упрощает миграцию разработчиков между платформами. dApps, созданные на базе Tron, охватывают широкий спектр применения: от игр до финансовых сервисов.
Для совершения транзакций в сети Tron используется API trongrid.io - официальный API-интерфейс для взаимодействия с блокчейном Tron, который предоставляет разработчикам доступ к функциям сети, таким как отправка транзакций, проверка состояния блоков, работа со смарт-контрактами и многое другое.
В качестве примера по работе с транзакциями будем рассматривать сайт SunPump - платформа для запуска и торговли мемкоинами на блокчейне Tron, которая позволяет пользователям создавать и торговать токенами.
Перед тем, как продолжить, советую перечитать прошлую статью по работе с блокчейном, в которой содержатся технические аспекты касательно кодирования и декодирования данных. Там содержатся основы технической информации, необходимой для понимания всего процесса! Чтобы не дублировать информацию, дальнейшие шаги будут описаны без подробного описания технических нюансов. Поскольку мы будем работать с совместимым с EVM блокчейном 1го уровня, который использует виртуальную машину TRON для создания и развертывания смарт контрактов, то вся изложенная ранее информация будет подходить и к Трону.
Для начала откроем страницу с любым токеном и изучим информацию о нём:
https://sunpump.meme/token/TWNhT6DcXfqgGRguj5DBxgcxvMx7EwGkZj
Посмотрев хэши транзакций определяем смарт контракт, отвечающий за покупку/продажу.
https://tronscan.org/#/contract/TTfvyrAz86hbZk5iDpKD78pqLGgi8C7AAw/code
Нас интересуют функции purchaseToken и saleToken (покупка и продажа токенов соответственно):
Первая функция purchaseToken принимает 2 обязательных параметра token_address и AmountMin, т.е. адрес токена и минимальное количество токенов, а так же на эту функцию необходимо отправить TRX. Если в качестве второго параметра указать 0, то получим количество токенов по текущему курсу (т.к. этот контракт является клоном Uniswap, то курс расчитывается по специальной формуле внутри контракта в зависимости от ликвидности).
Вторая функция saleToken принимает 3 параметра token_address, tokenAmount и AmountMin – адрес токена, количество продаваемых токенов и сумма TRX для получения. Если в последнем параметре указать 0, то получим TRX из расчёта текущего курса токена при его продаже.
Но есть ещё один нюанс – при продаже токенов необходимо дать разрешение контракту биржи тратить токены с нашего счёта. Для этого используется функция Approve, которую необходимо вызвать перед продажей токенов.
Для реализации и автоматизации всех описанных действий естественно будем использовать ZennoPoster шаблон, выполняющий все необходимые действия.
В настройках указываем:
- адрес контракта токена, который необходимо купить (берём на странице токена в адресной строке);
- количество TRX, на которое необходимо купить токен;
- тип операции (покупка/продажа);
- приватный ключ от кошелька.
Для продажи токенов сначала необходимо узнать количество токенов на нашем кошельке. Для этого используем специальную функцию balanceOf, имеющуюся на каждом контракте токенов. Но эта транзакция не использует запись в блокчейн, соответственно является бесплатной, поэтому для данного запроса используем другой эндпоинт TriggerConstantContract и НЕ используем отправку транзакции в сеть через BroadcastTransaction.
После получения количества токенов необходимо дать разрешение контракту списывать токены с нашего кошелька, как было сказано выше, с помощью функции Approve. Данная функция принимает на вход 2 параметра – адрес того, кому мы разрешаем тратить наши токены (адрес биржи) и количество, которое мы разрешаем тратить - для простоты ставим максимальное значение (вообще ставить максимальное разрешение в функции Approve небезопасно, но это отдельная тема для разговора и для простоты ставим максимум).
После выдачи разрешения совершаем продажу, формируя транзакцию похожим образом. В качестве minAmount ставим 0, чтобы получить TRX по текущему курсу. Параметр callValue являющийся количеством переводимых TRX устанавливаем в 0 (как и в функции approve). После чего подписываем транзакцию, отправляем в сеть и проверяем txId. При подтверждении транзакции токены будут успешно проданы.
Подведение итогов.
Используя ZennoPoster и добавив минимальную логику для ожидания и отслеживания сигналов для покупки/продажи, получаем автоматизированный процесс по покупке/продаже токенов и извлечению потенциальной прибыли из этого процесса.
P.S. Перед api запросами принудительно выставлены паузы, т.к. при частых запросах можно словить временный бан от апи и ждать некоторое время для продолжения корректной работы.
P.P.S. Все необходимые библиотеки, находящиеся в папке dll, необходимо скопировать в папку ExternalAssemblies зеннопостера.
Вложения
-
184,9 КБ Просмотры: 28
Последнее редактирование модератором: