EIP-2612 (Permit) — стандарт Ethereum, за яким користувач дозволяє переказ токенів, підписавши повідомлення поза блокчейном, а не надсилаючи окрему транзакцію з дозволом. Задумували це заради економії газу: окрема транзакція approve не потрібна, підпис Permit передається разом зі справжнім переказом. А на практиці фішинг через підписи став головною причиною втрат криптовалюти у 2025–2026 роках.
Що насправді робить підпис Permit
Користувач підписує структуроване повідомлення EIP-712 такого змісту: «Я дозволяю адресі X витратити до Y токенів Z з моєї адреси; дозвіл діє до моменту T». Такий підпис — дійсний доказ для блокчейну: будь-хто, у кого він є, може надіслати його в контракт токена, і контракт визнає дозвіл без попередньої транзакції approve.
З погляду зручності це елегантно: один підпис, без газу, без окремої транзакції. З погляду безпеки — катастрофа: в інтерфейсі гаманця підпис має вигляд беззмістовного набору символів, і людина навіть не підозрює, що, підписуючи його, фактично віддає контроль над цим токеном на цій адресі.
Поява Permit2
Наприкінці 2022 року Uniswap запустила Permit2 — вдосконалену систему дозволів. Permit2 пропонує єдиний контракт дозволів, яким може користуватися будь-який застосунок, із точнішими налаштуваннями (ліміти на окрему транзакцію, пакетні операції, строки дії). Фішинг через підписи працює й тут, та ще й з ускладненням: підпис Permit2 може діяти одразу для багатьох токенів.
До середини 2024 року Permit2 став основним механізмом дозволів в Uniswap і багатьох інших dApp на Ethereum.
Як виглядає атака у 2026 році
Користувач потрапляє на фальшивий інтерфейс — клон DEX, фішингову сторінку «отримайте ейрдроп» або зламаний справжній dApp. Сайт просить підключити гаманець, а потім — поставити «підпис», а не провести транзакцію. У гаманці підпис виглядає як хеш або набір полів структурованих даних.
Якщо користувач підписує, зловмисник зберігає підпис і чекає — часто кілька днів — перш ніж ним скористатися. Затримка навмисна: так у голові людини не виникає зв'язку між «три дні тому я підписав щось дивне» і «мої USDC щойно зникли».
Що справді захищає
Три рівні:
По-перше, читайте кожен підпис поза блокчейном. Rabby Wallet, MetaMask (після оновлення травня 2024 року) та сучасна прошивка Ledger і Trezor показують поля підпису Permit у зрозумілому вигляді. Якщо в полі «spender» стоїть адреса, якої ви не знаєте, — не підписуйте.
По-друге, віддавайте перевагу агрегаторам DEX, які не покладаються лише на підписи для дозволів. 1inch використовує стандартний дозвіл через транзакцію в блокчейні (дорожче за газом і довше, зате дозвіл видно в історії транзакцій). Так само влаштовані й деякі менші DEX.
По-третє, регулярно відкликайте дозволи. Раз на квартал заходьте на revoke.cash і відкликайте всі дозволи Permit2, яких не можете впізнати. Це і є практичний «аудит ваших дозволів».
Застереження щодо апаратних гаманців
Апаратні гаманці показують підписи EIP-712, але по-різному. Ledger Nano S Plus виводить структуровані дані на маленький екран; Trezor Safe 5 — великим шрифтом на кольоровому сенсорному екрані. Хай який у вас пристрій, не поспішайте з підписами структурованих даних: атака вміщується в ту секунду-дві між думкою «начебто все гаразд, підтверджую» і усвідомленням «а це був шкідливий дозвіл».
Що почитати далі: setApprovalForAll, Фішинг, revoke.cash.