Как работать со смарт-контрактами и блокчейном напрямую: на примере фарминга ликвидности
Смарт-контракты – основа всех приложений на блокчейне. Они похожи на алгоритм где правила работы строго прописаны в блокчейне. Смарт-контракт прозрачен, условия его выполнения доступны - их можно посмотреть через Etherscan или BCScan. При соблюдении условий контракт автоматически выполняется.
Например ты трейдишь токены на PancakeSwap. Когда ты отправляешь транзакцию, ‘за кулисами“ начинают работать смарт-контракты. Они и проводят трейд. Получается сайт PancakeSwap на котором мы нажимаем кнопки, выбираем токены - выступает посредником. Сайт передает команды смарт-контрактам, они выполняют логику - меняют наши токены между собой.
Получается имеем два способа работы с блокчейном:
- Через интерфейс (сайт)
- Напрямую через смарт-контракты
Плюсы работы со смарт-контрактами напрямую
- Разработчики всегда сначала внедряют контракты, а затем уже пользовательский интерфейс. Использование контракта даст фору, например первым войти в пулы, если пользовательский интерфейс еще не готов.
- Сайт может быть перегружен. Только криптаны, знающие как работать со смарт-контрактами смогут пользоваться всем как обычно.
- Если проект закроется, они удалят веб-сайт, но никогда не смогут удалить смарт-контракты. Если ты знаешь как разблокировать/продать/и т.д. через смарт-контракты, возможно, спасешь часть денег.
Но нужен же пример из реальной жизни. Мы перевели и адаптировали эту статью. Автор оригинала занимался фармингом через смарт-контракты на свежезапущенном Algo-стейблкоине. Фарминг работает так - участники пула вкладывают средства (Обеспечивают ликвидность), чтобы другие люди могли трейдить пару токенов, например BTC-ETH. За это они получают часть комиссии с транзакций.
В случае автора никто не мог зайти в пул, потому что на сайте (в пользовательском интерфейсе была ошибка). Через Etherscan автор нашел контракт фарминга. Затем поставил свои токены раньше всех. В итоге он получил 65% доли пула в течение первых 2 часов и вышел с профитом 25 ETH.
Пример: Фармим награды, стейкая ликвидность на PancakeSwap
Для простоты, рассмотрим пример с PancakeSwap. У них самый распространенный фарминг-контракт.
В каждом проекте будут свои фарминг-контракты, но попробовав несколько раз, ты быстро освоишься и сможешь применить эти методы для ферм, которых никогда не видел.
Итак, большинство фарминг-пулов будут использовать два контракта:
- Контракт Стейкинга. Стейкаешь токены, чтобы получать награды. Обычно это некий токен ликвидности. Для примера возьмём CAKE-BNB токен ликвидности.
- Контракт Фарминга. Он отвечает за стейкинг, анстейкинг, выводы и прочее. Его ещё называют MasterChef contract.
Как найти контракты Стейкинга и Фарминга
Я предполагаю, что у тебя уже есть базовое понимание Etherscan или BSCScan. Если нет, то вот хороший видос по теме
Иногда проект будет публиковать контракты открыто. Если нет, можно немного покопаться в BSCScan, чтобы найти их самостоятельно.
1. Контракт застейканного токена обычно - токен ликвидности (CAKE-LP). Можно найти его на PancakeSwap, выполнив поиск пары и зайдя в раздел "Информация о паре" в самом низу
2. Контракт Фарминга найти куда сложнее, если проект не даёт его открыто.
Обычно можно зайти в контракт -> токены вознаграждения (CAKE), а затем проверить "Топ держателей".
Ищем значок "контракт" рядом с этим Топом. Одним из них является фермерским контрактом, потому что в нем будет храниться большая часть наградных токенов.
Если ты нажмешь на сам контракт, то увидишь название "MasterChef" для PancakeSwap, или что-то подобное для других платформ.
Способ 1. Традиционный фарминг через интерфейс
Кратко разберём как фармить обычным способом. Если ты новичок, то вот полный разбор PancakeSwap.
Добавление ликвидности CAKE-BNB
Заходим на PancakeSwap в раздел Ликвидность и вписываем пару токенов.
Подтверждение пула CAKE-BNB
За кулисами мы даём разрешение на стейк токенов и использовании Фарминг-контракта.
Депозит токена LP в фарминг-контракт
Теперь, когда контракт получил разрешение тратить наши токены, мы вкладываем их в фарминг.
Сбор награды с фарминг-контракта
Чтобы собрать награды с Фарминга, нажимаем Harvest
Анстейк токены из фарминг-контракта
Анстейкнуть можно, нажав на “–”.
Способ 2. Фарминг для PRO через смарт-контракты
Мы будем работать по двум контрактам:
- Контракт стейкинга (CAKE-BNB LP): 0xa527a61703d82139f8a06bc30097cc9caa2df5a6
- Контракт Фарминга PancakeSwap/Masterchef Contract: 0x73feaa1ee314f8c655e354234017be2193c9e24e
Сначала добавь ликвидность CAKE-BNB LP на PancakeSwap. Выше мы разбирали как сделать это. Дальше будем работать напрямую через смарт-контракты.
Подтверждение использования токенов в Фарминг-контракте
Мы переходим на контракт стейкинга и даем разрешение на трату наших токенов.
Переходим к контракту CAKE-BNB и нажимаем write contract
Дальше коннектим Метамаск
После ищем “approve”. Там есть две строчки:
- spender: Контракт фарминга (0x73feaa1ee314f8c655e354234017be2193c9e24e)
- value: Подтверждение использования некоторого количества токенов. Вписываем огромное число, например 999999999999000000000000000000.
Что это за цифра!?: В поле вводится нужное вам количество токенов в единицах WEI. То есть количество токенов нужно умножить на 1000000000000000000 (1 с 18 нулями).
Например: если вам надо 420.69 токенов, вписывайте 420690000000000000000.
Затем нажимаем Write и подписываем транзакцию в Метамаске.
Депозит токенов LP в Фарминг-контракт
Когда мы подтвердили использование токенов, задепозитим их. Переходим на Фарминг-контракт, коннектим Метамаск и ищем deposit
Нужно ввести _pid (Пул ID) и сколько токенов депозитить. Чтобы найти _pid вам нужно нажать Read Contract и найти poolinfo. Перебором от 0 ищем пул, в котором указан адрес CAKE-BNB.
А именно: 0xa527a61703d82139f8a06bc30097cc9caa2df5a6. Здесь _pid это 1.
Мы получили _pid (Пул ID). Теперь если мы хотим застейкать 2 CAKE-BNB LP, пишем следующее:
Нажимаем Write и отправляем транзакцию.
Что делать если вышла ошибка
Здесь можешь быть несколько вариантов
- Вы неправильно подтвердили использование токенов
- _pid не верен
- У вас не хватает LP токенов, чтобы их застейкать
Остаётся исправить ошибки, отталкиваясь от своей проблемы.
Сбор наград через Фарминг-контракт
Когда мы подписали Masterchef контракт, сбор наградных токенов будет происходить каждый раз при депозите/выводе.
В контракте нет кнопки claim. Чтобы забрать награду, просто депозитим 0 токенов в контракт, указав номер пула (_pid). Но учти, что остальные контракты могут иметь такую функцию.
Анстейк токенов из Фарминг-контракта
Здесь просто - Ищем withdraw, затем вводим _pid и сколько токенов хотим вывести.
Проверка Input Data транзакции
Ты всегда можешь проверить входящие данные (Input Data) в своих транзакциях на BSCScan. Так ты узнаешь что творится за кулисами контракта и начнешь лучше понимать их работу.
Для этого открываем любую транзакцию, потом "все детали" и вот ваша Input Data. Нажимаем Decode Input Data и получаем конкретную информацию о типе транзакции.
Получилось?
Поздравляю, теперь ты понимаешь смарт-контракты лучше, чем 95% криптанов.
На первый взгляд выглядит сложно. Но я обещаю тебе, что чем больше ты будешь пробовать, тем комфортнее будет взаимодействовать непосредственно с контрактами.
Ты получишь огромное конкурентное преимущество, когда дело дойдет до фарминга и DeFi в целом.