Криптовалюти та гаманці

Перевірка запитів на підпис

Працює локальноНовий

Сам інструмент доступний англійською мовою; на цій сторінці наведено пояснення вашою мовою.

Використовуйте Перевірка запитів на підпис

Як це працює

Вставте те, що гаманець або сайт просить вас підписати, і побачте зрозумілою англійською, що саме це дозволить. Дозволи (approval) на токени, permits, підписи Permit2 та лоти Seaport, що платять комусь іншому, позначаються червоним.

Програма працює повністю у вашому браузері: жодні введені вами дані не завантажуються.

Як користуватися Перевірка запитів на підпис

  1. Скопіюйте запит без змін. Візьміть точний текст, який вас просять підписати: JSON EIP-712, дані 0x транзакції, весь об'єкт транзакції, запит JSON-RPC або текст повідомлення.
  2. Вставте й перевірте. Вставте його в поле. Перевірка починається одразу після вставлення; також можна натиснути Inspect (перевірити) або Ctrl+Enter.
  3. Перевірте, як розпізнано запис. Перший рядок повідомляє, як розпізнано введення, наприклад transaction object. Якщо це неправильно, виберіть потрібний тип у Read the input as (розпізнати як).
  4. Прочитайте кольорову плашку. Позначка, заголовок і підсумок зрозумілою англійською пояснюють, що дозволить підпис. Список під ними містить попередження; найсерйозніші виділено жирним.
  5. Перевірте поля. Подивіться в таблиці на spender або operator, токен, суму, термін дії та мережу. Відкрийте Decoded arguments або Message fields, щоб побачити сирі значення.
  6. Ухваліть рішення й поділіться. Якщо ви не знаєте spender, відхиліть запит у гаманці й перевірте адреси в оглядачі блоків. Copy report (копіювати звіт) дає текстовий підсумок зі знешкодженими (defanged) посиланнями.

Приклад

Підпис Permit2 на необмежений дозвіл USDC

Вхідні дані
{
  "types": {
    "EIP712Domain": [
      {
        "name": "name",
        "type": "string"
      },
      {
        "name": "chainId",
        "type": "uint256"
      },
      {
        "name": "verifyingContract",
        "type": "address"
      }
    ],
    "PermitSingle": [
      {
        "name": "details",
        "type": "PermitDetails"
      },
      {
        "name": "spender",
        "type": "address"
      },
      {
        "name": "sigDeadline",
        "type": "uint256"
      }
    ],
    "PermitDetails": [
      {
        "name": "token",
        "type": "address"
      },
      {
        "name": "amount",
        "type": "uint160"
      },
      {
        "name": "expiration",
        "type": "uint48"
      },
      {
        "name": "nonce",
        "type": "uint48"
      }
    ]
  },
  "primaryType": "PermitSingle",
  "domain": {
    "name": "Permit2",
    "chainId": 1,
    "verifyingContract": "0x000000000022D473030F116dDEE9F6B43aC78BA3"
  },
  "message": {
    "details": {
      "token": "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48",
      "amount": "1461501637330902918203684832716283019655932542975",
      "expiration": "281474976710655",
      "nonce": "0"
    },
    "spender": "0xbBbBBBBbbBBBbbbBbbBbbbbBBbBbbbbBbBbbBBbB",
    "sigDeadline": "115792089237316195423570985008687907853269984665640564039457584007913129639935"
  }
}
Вихідні дані (зафіксовано 2026-10-20)
Read as: EIP-712 typed data. Change this with “Read the input as”.

DangerousPermit2 PermitSingle: token allowance by signature (UNLIMITED)

Signing lets 0xbBbBBBBbbBBBbbbBbbBbbbbBBbBbbbbBbBbbBBbB move an unlimited amount of 0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48 (USDC token on Ethereum) out of your wallet through Permit2. The allowance never expires in practice. The spender submits this signature itself, so you will not see another prompt. Drainers favour Permit2 because many wallets have already approved Permit2 for apps such as Uniswap.

Unlimited amount: the spender can take your whole balance of the token.
The allowance never expires in practice.
The signature never expires in practice.
SPENDER	0xbBbBBBBbbBBBbbbBbbBbbbbBBbBbbbbBbBbbBBbB
TOKEN	0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48
USDC token on Ethereum

AMOUNT	Unlimited: 2^160−1, the Permit2 maximum (1461501637330902918203684832716283019655932542975)
ALLOWANCE EXPIRES	2^48−1 (Permit2 maximum): no practical expiry (beyond the year 5000)
NONCE	0
SIGNATURE VALID UNTIL (SIGDEADLINE)	2^256−1: no practical expiry (beyond the year 5000)
DOMAIN	name "Permit2"
CHAIN	Ethereum (chain ID 1)
VERIFYING CONTRACT	0x000000000022D473030F116dDEE9F6B43aC78BA3
Permit2 (Uniswap)

EIP-712 DIGEST (WHAT IS SIGNED)	0x579baa31b8f7279c82034e935d103d07caa27a817903937e201389d81d55984c
DOMAIN SEPARATOR	0x866a5aba21966af95d6c7ab78eb2b2fc913915c28be3b9aa07cc04ff903e3f28
MESSAGE HASH (HASHSTRUCT)	0xb646364eb4dc82faf68b61d79beb585797490532ff745845f3821e6f8573463c
PRIMARY TYPE	PermitSingle(PermitDetails details,address spender,uint256
…

Червона плашка: spender 0xbBbB…BBbB міг би переказати необмежену кількість USDC через Permit2, і ні дозвіл, ні підпис не мають терміну дії. Дайджест EIP-712 обчислюється.

Що перевіряється

СигналЩо це означає
Позначка ризику: Dangerous, Check carefully, Low risk або NoteDangerous (небезпечно) означає, що запит може передати токени чи NFT. Дозволи отримують її навіть для відомого застосунку, бо надані повноваження однакові. Відкликання, як-от approve із сумою 0, показується як Low risk (низький ризик).
Spender або operator червонимАдреса, яка отримала б право переміщати ваші активи. Кілька контрактів мають назви, як-от Permit2, Seaport і OpenSea conduit; будь-яку іншу адресу треба перевірити.
Необмежена сумаПоказується для 2^256−1 або будь-якого значення від 2^255, а в запитах Permit2 — для 2^160−1. Spender міг би забрати весь ваш баланс цього токена зараз і в майбутньому.
Сума з урахуванням десяткових знаків токенаДля USDC, USDT, DAI і WETH в Ethereum сире число перераховується, наприклад 1000000 стає 1 USDC. Для інших токенів ви бачите сире ціле число, прочитане з 18 і з 6 десятковими знаками.
Термін дії та дедлайнФактично безстроковий (після 5000 року), дійсний понад рік або вже прострочений. Permit чи дозвіл без терміну дії залишається придатним до використання ще довго після того, як ви про нього забудете.
Сліпий підпис 32-байтового хешуГаманець не може показати, що означає хеш, а з eth_sign це може бути транзакція чи permit. Підписуйте лише хеш, який ви створили самі.
Перевірки ордерів SeaportЛот за нульовою ціною, інші отримувачі отримують більше, ніж той, хто пропонує, або запропоновані предмети знову з'являються з іншим отримувачем: типово для фейкових лотів NFT, що платять зловмиснику.
Домен у Sign-In with EthereumПовідомлення для входу називає сайт, який запитує. Якщо цей домен не збігається точно з сайтом, на якому ви перебуваєте, підпис може дозволити комусь іншому увійти від вашого імені.
Два прочитання одного селектораapprove(address,uint256) — той самий виклик в ERC-20 і ERC-721. Якщо контракт не належить до небагатьох токенів, відомих інструменту, показуються обидва прочитання.

Ще кілька прикладів

Дозвіл на NFT для всієї колекції

Вхідні дані
0xa22cb465000000000000000000000000000000000000000000000000000000000000dead0000000000000000000000000000000000000000000000000000000000000001
Результат

Read as: transaction calldata (відомий селектор функції). Dangerous: setApprovalForAll: контроль над УСІМА вашими NFT у цій колекції. Operator 0x000000000000000000000000000000000000dEaD, Approved true, колекцію (to) не вказано.

Обмежений дозвіл USDC у транзакції

Вхідні дані
{"to":"0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48","data":"0x095ea7b3000000000000000000000000000000000000000000000000000000000000dead00000000000000000000000000000000000000000000000000000000000f4240","value":"0x0","chainId":1}
Результат

Read as: transaction object. Dangerous: ERC-20 approval. Підсумок повідомляє, що 0x000000000000000000000000000000000000dEaD міг би переказати до 1000000 одиниць токена USDC в Ethereum без повторного запиту. Таблиця показує Chain Ethereum (chain ID 1), Value 0 ETH (0 wei) і Amount 1000000 з приміткою 1 USDC (6 десяткових знаків).

Сліпий запит eth_sign

Вхідні дані
{"method":"eth_sign","params":["0x0000000000000000000000000000000000000001","0xabababababababababababababababababababababababababababababababab"]}
Результат

Read as: JSON-RPC eth_sign request. Dangerous: сліпий підпис 32-байтового хешу замість тексту, з попередженням, що більшість гаманців вимкнули або приховали eth_sign, бо ним користувалися дрейнери.

Часті запитання

Що перевіряє Signature Request Inspector?

Він декодує типізовані дані EIP-712, calldata транзакцій, об'єкти транзакцій і повідомлення personal_sign або eth_sign та обчислює дайджест EIP-712. Він позначає дозволи (approval) на токени, setApprovalForAll, permits EIP-2612 і DAI, підписи Permit2, ордери Seaport, що платять комусь, крім вас, і сліпі підписи 32-байтового хешу.

Чи може запит, не позначений червоним, усе одно бути шкідливим?

Так. Інструмент читає лише сам запит: він не бачить балансів, наявних дозволів і не знає, чи шкідливий контракт, а функції поза його таблицею показуються як невідомі. Дозволи для легітимних застосунків теж позначаються червоним, бо підпис у будь-якому разі надає ті самі повноваження.

Чи надсилається вставлений запит кудись?

Ні. Декодування й хешування виконуються у вашому браузері, і сторінка не робить мережевих запитів із вашими даними. Запит на підпис не містить секретів, але ніколи не вставляйте приватний ключ чи сид-фразу на жоден сайт.

Чи робить невелика сума дозвіл безпечним?

Вона обмежує те, що можна забрати, цією сумою, але spender може скористатися нею будь-коли, не питаючи вас знову. Тому інструмент усе одно показує дозвіл на 1 USDC як Dangerous. Дозволяйте лише потрібну суму і лише перевіреному spender.

Чому для одного approve я бачу прочитання ERC-20 і ERC-721?

Обидва стандарти використовують ту саму назву функції й типи аргументів, тож самі дані 0x не показують, який із них це. Вставте всю транзакцію з адресою to і перевірте в оглядачі блоків, чи цей контракт — токен чи колекція NFT.

Я вже підписав запит, який тут червоний. Що тепер?

Дійте швидко. Відкличте ончейн-дозволи й перенесіть залишок на новий гаманець. Підписаний permit, яким ще не скористалися, не показується як дозвіл, тож перенесення токенів — безпечніший крок. Екстрений посібник (Emergency Guide) наводить порядок дій.

Пояснення термінів

Дослідження PhishDestroy