Что такое EIP2612 Permit Signatures?
Как мы уже обсуждали в разделе Что такое апрувы токенов?, вы можете предоставлять апрувы с помощью функции approve()
на смарт-контракте токена. Это должно быть сделано с помощью onchain-транзакции, которая влечет за собой плату за газ каждый раз, когда предоставляется апрув.
Из-за необходимости платить за газ многие приложения предпочитают запрашивать неограниченные разрешения (апрувы), что означает, что вам нужно заплатить за газ только один раз. Это может быть риском для безопасности, поскольку приложение сохраняет этот неограниченный доступ на неопределенный срок. В идеале вы должны выдавать только ограниченный апрув, который покрывает конкретное количество токенов, необходимое для определенной транзакции. Но тогда вам придется платить за газ за каждый апрув.
EIP2612 пытается решить эту проблему, позволяя подписывать сообщение об одобрении offchain. Таким образом, вам не нужно будет отправлять onchain-транзакцию и вы сможете предоставить ограниченный апрув без оплаты за газ.
Как работают Permit Signatures?
EIP2612 является дополнением стандарта ERC20, что означает, что токены ERC20 могут реализовать эту дополнительную функциональность, но большинство токенов ее не поддерживают. Permit Signatures основаны на стандарте EIP712, который определяет стандартизированный способ подписи структурированных данных. Данные, которые необходимо подписать для Permit signatures, содержат ту же информацию, что и при выдаче апрувов onchain: authorised spender address (ASA) и количество токенов.
Затем эти данные и соответствующую подпись можно передать в функцию токена permit()
, которая проверяет подпись и "активирует" апрув onchain, после чего он становится таким же, как и обычный onchain апрув. Хотя этот вид подписи необходимо "активировать" onchain, onchain активация может быть совмещена с транзакцией, для которой вам нужен апрув, так что вам не нужно отправлять отдельную транзакцию.
Преимущества Permit Signatures
Как уже говорилось выше, основная проблема, которую решают Permit Signatures, заключается в том, что вы можете выдавать апрувы без необходимости отправлять отдельную транзакцию по утверждению. Это дает два важных преимущества:
- Уменьшение проблем для пользователей, поскольку им не нужно платить за газ или ждать, пока транзакция будет добыта.
- Снижение риска безопасности, так как можно выдавать ограниченное количество апрувов, которые покрывают только необходимое количество токенов для конкретных транзакций.
Недостатки Permit Signatures
Хотя Permit Signatures обладают рядом важных преимуществ, у них есть и недостатки. Один из них заключается в том, что они не поддерживаются большинством токенов, поэтому вы не можете рассчитывать на их доступность. Из-за ограниченной поддержки в токенах ERC20 они также не поддерживаются многими приложениями. Для того чтобы смарт-контракты поддерживали Permit Signatures, им необходимо специально реализовать эту поддержку, что создает дополнительные трудности для разработчиков.
Поскольку Permit Signatures - это offchain подписи, они также часто используются скамерами, чтобы обмануть пользователей и заставить их дать апрув. Многие кошельки, такие как MetaMask, теперь отображают предупреждение, когда вы подписываете onchain апрув, но для Permit Signatures такие предупреждения отсутствуют. Таким образом, может показаться, что вы просто подлючаете кошелёк на сайте, но на самом деле вы даете апрув.
Отмена Permit Signatures
Если вы подозреваете, что подписали Permit Signatures на мошенническом сайте, возможно, вы сможете отменить или обнулить подпись до того, как она будет активирована скамером. Обычно это очень сложно сделать, так как скамеры часто стараются активировать апрув как можно скорее. Как только апрув получен, его можно отозвать с панели апрувов.
Если вы хотите попробовать отменить потенциально мошенническую подпись, вы можете сделать это во вкладке Подписи на странице вашей учетной записи.
Важно еще раз отметить, что Permit Signatures находятся offchain, а это значит, что платформа вроде Revoke.cash никогда не сможет определить, что вы подписали. Поэтому все, что вы видите на вкладке Подписи на Revoke.cash, - это только потенциальные подписи, и вы должны пытаться отменить их, только если вы очень уверены, что подписали мошенническую Permit signature. Отменять подписи без необходимости не опасно, но это пустая трата газа.