Как работать со смарт-контрактами и блокчейном напрямую: на примере фарминга ликвидности

Смарт-контракты – основа всех приложений на блокчейне. Они похожи на алгоритм где правила работы строго прописаны в блокчейне. Смарт-контракт прозрачен, условия его выполнения доступны - их можно посмотреть через Etherscan или BCScan. При соблюдении условий контракт автоматически выполняется.

Например ты трейдишь токены на PancakeSwap. Когда ты отправляешь транзакцию, ‘за кулисами“ начинают работать смарт-контракты. Они и проводят трейд. Получается сайт PancakeSwap на котором мы нажимаем кнопки, выбираем токены - выступает посредником. Сайт передает команды смарт-контрактам, они выполняют логику - меняют наши токены между собой.

Получается имеем два способа работы с блокчейном:

  • Через интерфейс (сайт)
  • Напрямую через смарт-контракты

Плюсы работы со смарт-контрактами напрямую

  • Разработчики всегда сначала внедряют контракты, а затем уже пользовательский интерфейс. Использование контракта даст фору, например первым войти в пулы, если пользовательский интерфейс еще не готов.
  • Сайт может быть перегружен. Только криптаны, знающие как работать со смарт-контрактами смогут пользоваться всем как обычно.
  • Если проект закроется, они удалят веб-сайт, но никогда не смогут удалить смарт-контракты. Если ты знаешь как разблокировать/продать/и т.д. через смарт-контракты, возможно, спасешь часть денег.

Но нужен же пример из реальной жизни. Мы перевели и адаптировали эту статью. Автор оригинала занимался фармингом через смарт-контракты на свежезапущенном Algo-стейблкоине. Фарминг работает так - участники пула вкладывают средства (Обеспечивают ликвидность), чтобы другие люди могли трейдить пару токенов, например BTC-ETH. За это они получают часть комиссии с транзакций.

В случае автора никто не мог зайти в пул, потому что на сайте (в пользовательском интерфейсе была ошибка). Через Etherscan автор нашел контракт фарминга. Затем поставил свои токены раньше всех. В итоге он получил 65% доли пула в течение первых 2 часов и вышел с профитом 25 ETH.

Пример: Фармим награды, стейкая ликвидность на PancakeSwap

Для простоты, рассмотрим пример с PancakeSwap. У них самый распространенный фарминг-контракт.

В каждом проекте будут свои фарминг-контракты, но попробовав несколько раз, ты быстро освоишься и сможешь применить эти методы для ферм, которых никогда не видел.

Итак, большинство фарминг-пулов будут использовать два контракта:

  1. Контракт Стейкинга. Стейкаешь токены, чтобы получать награды. Обычно это некий токен ликвидности. Для примера возьмём CAKE-BNB токен ликвидности.
  2. Контракт Фарминга. Он отвечает за стейкинг, анстейкинг, выводы и прочее. Его ещё называют 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 и отправляем транзакцию.

Что делать если вышла ошибка

Здесь можешь быть несколько вариантов

  1. Вы неправильно подтвердили использование токенов
  2. _pid не верен
  3. У вас не хватает LP токенов, чтобы их застейкать

Остаётся исправить ошибки, отталкиваясь от своей проблемы.

Сбор наград через Фарминг-контракт

Когда мы подписали Masterchef контракт, сбор наградных токенов будет происходить каждый раз при депозите/выводе.

В контракте нет кнопки claim. Чтобы забрать награду, просто депозитим 0 токенов в контракт, указав номер пула (_pid). Но учти, что остальные контракты могут иметь такую функцию. 

Анстейк токенов из Фарминг-контракта

Здесь просто - Ищем withdraw, затем вводим _pid и сколько токенов хотим вывести.

Проверка Input Data транзакции

Ты всегда можешь проверить входящие данные (Input Data) в своих транзакциях на BSCScan. Так ты узнаешь что творится за кулисами контракта и начнешь лучше понимать их работу.

Для этого открываем любую транзакцию, потом "все детали" и вот ваша Input Data. Нажимаем Decode Input Data и получаем конкретную информацию о типе транзакции.

Получилось?

Поздравляю, теперь ты понимаешь смарт-контракты лучше, чем 95% криптанов.

На первый взгляд выглядит сложно. Но я обещаю тебе, что чем больше ты будешь пробовать, тем комфортнее будет взаимодействовать непосредственно с контрактами.

Ты получишь огромное конкурентное преимущество, когда дело дойдет до фарминга и DeFi в целом.