September 14, 2023

Как отозвать "Approve" в сети Starknet?

На днях я предоставил «Approve» маркетплейсу Flexing на несколько десятков $ETH, и у меня возник вопрос: а как же его отозвать?

Возможно, некоторым на ум придёт Revoke Cash, но он не поддерживает сеть Starknet, поэтому я продолжал поиски.

В конце концов, я наткнулся на Starkrekt, однако он работает не совсем правильно. Вкратце, у них есть список контрактов. Когда вы вставляете свой кошелек для проверки, они проверяют «Approv’ы» на всех контрактах из списка. Если вы предоставили разрешение какому-то мусорному контракту, который не в их списках, StarkRekt не увидит вашего разрешения, и вы не сможете его отозвать. Я уже предоставил им контракт Flexing, они должны скоро его добавить.

Но на этом я не остановился, и решил заглянуть в проводник сети StarkNet и посмотреть как выглядит моя транза с «Approv’ом».

Важно отметить, что функция «Approv’а» может быть как «approve», так и «increaseAllowance». С помощью моего руководства вы сможете снять разрешение любого типа.

Чтобы отозвать разрешение, вам нужно скопировать адрес получателя (spender), затем перейти на страницу контракта токена.

  • В моем случае это StarkGate: ETH Token
  • После перехода откройте вкладку «Read/Write Contract».

Далее:

  • Шаг 1: Переходим в раздел «Write».
  • Шаг 2: Подключаем свой кошелек.
  • Шаг 3: Открываем функцию «approve».
  • Шаг 4: Вводим адрес получателя (spender), скопированный ранее.
  • Шаг 5: В поле «amount» вводим 0.
  • Шаг 6: Нажимаем кнопку «Write».
  • Шаг 7: Подтверждаем транзакцию.

К слову, точно таким же образом можно давать разрешение на использование $ETH и создавать дешевые транзакции ($0,10-0,12 при 15 GWEI).

Через 5 минут, когда транзакция пройдет и отобразится в сканере, можно проверить, все ли вы сделали правильно:

  • Открываете раздел «Read».
  • Выбираете функцию «Allowance».
  • В поле «Owner» вставляете адрес своего кошелька.
  • В поле «Spender» вставляете адрес spender из первой транзакции с «Approv’ом».
  • Нажимаете "Query".

Если вы видите «Remaining 0», значит, вы успешно отменили «Approve».