Как взаимодействовать со смартконтрактами через Metamask в браузере Chrome
Давайте разберём этот процесс на примере DEX 1inch. На других ресурсах этапы будут аналогичными. Упрощенно весь процесс можно представить так:
- Выбор блокчейна (или использование по умолчанию) - если выбрана неверная сеть в Метамаск - сайт спросит вас разрешения переключить сеть. Без оплаты газа
- Подключение кошелька (передача прав на просмотр адресов и активов). Без оплаты газа
- Апрув (передача разрешения потратить средства в оговоренном размере). С оплатой газа
- Непосредственно транзакция (своп, стейк, добавление ликвидности и тд). С оплатой газа
А теперь пошагово
Далее соглашаетесь с условиями, можно перевыбрать сеть и выбираем кошелек, с помощью которого будем подключаться. 1inch является крупным агрегатором - поэтому у него имеются интеграции с практически всеми кошельками, но к сожалению не все сайты такие - многие делают интеграцию только с Метамаск - поэтому нам и приходится пользоваться в основном только этим кошельком в DeFi
На этом этапе у вас есть возможность выбрать, какие аккаунты вы будете подключать к этому сайту. Позднее вы сможете отменить это подключение в любой момент
Метамаск при каждом запросе подробно пишет, что требует смартконтракт и что ему нужно предоставить, а вы соглашаетесь или нет. В данном случае децентрализованной бирже нужно видеть, чего и сколько есть на вашем счёте, чтобы предложить вам выбор активов и варианты обмена. Это действие не записывается в блокчейне поэтому не требует оплаты газа (эта транзакция бесплатна)
Сразу давайте разберём и обратный процесс. Как отозвать разрешение конкретному сайту (смартконтракту) на просмотр счёта
Вариант 1 - когда вы находитесь на конкретном сайте можете проверить его статус подключения, просмотреть выданные вами разрешения и при необходимости отключить данный аккаунт (то есть отсоединить кошелек)
Вариант 2 - посмотреть весь список подключенных к Метамаск сайтов и удалить нужный (точнее не нужный вам)
На самом деле при каждой операции всё предельно подробно написано - главное не спешить и быть внимательным. Если вы не знаете английского, то сначала нужно включить русскую версию сайта (у 1inch она есть, потому что это русские ребята) или перевести сайт на русский с помощью Google Translate
В данном случае мы хотим начать обмен и поменять CAKE на BUSD. Как видно в окне обмена CAKE пока заблокирован, хотя на балансе он есть. Дело в том, что смартконтракт видит этот токен, но потратить его не может. Для этого вам нужно совершить апрувную транзакцию - разрешить смартконтракту тратить этот токен в определенных пределах (устанавливаете сами). Собственно это и написано подробно ниже. Нужно просто нажать кнопку
Любая транзакция подписывается вашим приватным ключом, который в данный момент находится в Metamask. И если предыдущая операция подключения кошелька не требовала записи в блокчейн, то всё что касается траты денег - записывается в блокчейн, а значит нужно оплатить майнерам комиссию за подтверждение транзакции
В данномс случае мы предоставляем смартконтракту право расходовать наши средства (конкретно токен CAKE), но мы можем изменить и разрешение и комиссию за транзакцию (например, если захотим её ускорить). Так же мы можем посмотреть все необходимые подробности операции, прежде чем подписывать
Никогда не торопитесь - всегда всё внимательно читайте, чтобы не терять свои деньги
Как изменить параметры апрува - то есть того разрешения, которое вы даете смартконтракту на трату ваших средств. Смартконтракт требует разрешение на чуть большую сумму, чем у вас есть, чтобы в следующий раз вас не тревожить и не списывать плату за газ. В Metamask вы можете изменить эту сумму как в большую сторону так и в меньшую, но не менее суммы транзакции - иначе она не пройдет
В Метамаск можно увеличить или уменьшить плату за газ - она ставится по умолчанию, но вы можете отредактировать эту величину до отправки транзакции. Например, если вы хотите ускорить транзакцию, если участвуете в токенсейле в формате FCFS (First Come First Serve) - для вас важна скорость. Редактируете приоритет и при повышении цены газа - ваша транзакция уходит быстрее. Есть и другой способ ускорить долгую транзакцию уже после её отправки - разберём его в отдельном материале
Можно ещё до подписи и отправки транзакции в блокчейн узнать все детали, если внимательно почитать. И даже посмотреть заранее, что за смартконтракт с вами пытается взаимодействовать
Допустим, что нас всё устроило, а что не устроило мы изменили перед отправкой. Транзакция подписана вашим приватным ключом через Метамаск и она отправилась в блокчейн. Как правило в сети BSC подтверждение проходит быстро и мы увидим такую картину - тут можно проверить транзакцию в блокчейне и расшифровать её
Апрув-транзакция отправлена, но это не значит что апрув успешно прошёл - если не будет никаких ошибок со смартконтрактом и сетью - то транзакция пройдет, если нет - придётся делать заново. Часто и оплачивать газ заново. Но если транзакция прошла - это значит мы дали разрешение смартконтракту потратить указанное количество токенов CAKE и теперь можно их и потратить
Заряжаем обмен. Тут сразу видно стоимость транзакции, но на 99% сайтов такой информации не будет
После нажатия на кнопку Обменять токены - непосредственно обмена вновь не происходит и выскакивает очередное окно, где нужно эту операцию подтвердить и даже тут можно изменить цену газа. Но не стоит расслабляться - большинство сайтов с вами не будут так няньчиться и не будет никаких тройных предупреждений - поэтому внимательно смотрите только то, что выдаёт вам Метамаск
И только по Metamask следует ориентироваться - он точно даст вам правильные цифры, укажет на тип операции (в данном случае это своп - обмен) и вы сможете изменить цену газа
После вот такого окна с указанием, что транзакция отправлена не стоит всё закрывать и идти спать - нужно дождаться подтверждение проведения транзакции.
Когда будет подтверждение - тогда можно считать, что транзакция ушла. Но в 99% случаев не стоит доверять информации об успешности транзакции, которая даётся вам на сайтах (в децентрализованных приложениях). Тут может быть масса глюков или даже откровенно мошеннические действия, вводящие вас в заблуждение. Всегда нужно открывать обозреватель блоков и там проверять
Только если в деталях транзакции написано вот так Success - и не Pending и не Indexing - это значит, что всё прошло успешно
Не забываем 👍
И подписаться на наш телеграм-канал https://t.me/alphahunterss