Krypto i portfele

Narzędzie do sprawdzania wniosków o podpis

Działa lokalnieNowe

Samo narzędzie jest w języku angielskim; na tej stronie znajdziesz wyjaśnienia w Twoim języku.

Użyj Narzędzie do sprawdzania wniosków o podpis

Jak to działa

Wklej treść dokumentu, który portfel lub strona internetowa prosi Cię o podpisanie, a zobaczysz w prostym języku, na co to upoważnia. Zatwierdzenia tokenów, zezwolenia, podpisy Permit2 oraz wpisy w Seaport, które wiążą się z wypłatą środków na rzecz innej osoby, są zaznaczone na czerwono.

Działa całkowicie w przeglądarce: żadne wprowadzone dane nie są przesyłane.

Jak korzystać z Narzędzie do sprawdzania wniosków o podpis

  1. Skopiuj surowe żądanie. Wprowadź dokładnie ten tekst, który masz podpisać: plik JSON zgodny ze standardem EIP-712, dane 0x transakcji, cały obiekt transakcji, żądanie JSON-RPC lub treść komunikatu.
  2. Wklej i sprawdź. Wklej to do pola. Sprawdzanie rozpocznie się po wklejeniu; możesz też nacisnąć przycisk „Sprawdź” lub skrót klawiszowy Ctrl+Enter.
  3. Sprawdź, jak to zostało przeczytane. W pierwszym wierszu podano, jako jaki typ odczytano dane wejściowe, na przykład obiekt transakcji. Jeśli jest to nieprawidłowe, wybierz właściwy typ w polu „Odczytaj dane wejściowe jako”.
  4. Zapoznaj się z kolorową ilustracją. Odznaka, tytuł i streszczenie w przystępny sposób wyjaśniają, jakie możliwości daje podpisanie umowy. Lista poniżej zawiera oznaczenia; te najpoważniejsze są pogrubione.
  5. Sprawdź pola. Sprawdź w tabeli pozycje „spender” lub „operator”, „token”, „kwota”, „termin ważności” oraz „łańcuch”. Aby wyświetlić wartości surowe, otwórz sekcję „Argumenty zdekodowane” lub „Pola komunikatu”.
  6. Zdecyduj i podziel się tym. Jeśli nie znasz osoby dokonującej płatności, odrzuć prośbę w swoim portfelu i sprawdź te adresy w eksploratorze bloków. Raport „Copy” zawiera podsumowanie w postaci zwykłego tekstu z usuniętymi linkami.

Przykład

Podpis „Permit2” w celu uzyskania nieograniczonego limitu USDC

Dane wejściowe
{
  "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"
  }
}
Wynik (zarejestrowany 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
…

Czerwona tablica: podmiot wydający 0xbBbB…BBbB może przesyłać nieograniczoną ilość USDC za pośrednictwem Permit2, a ani limit, ani podpis nie tracą ważności. Obliczany jest skrót EIP-712.

Co jest sprawdzane

SygnałCo to oznacza
Oznaczenie ryzyka: Niebezpieczne, Sprawdź dokładnie, Niskie ryzyko lub UwagaOkreślenie „niebezpieczne” oznacza, że żądanie może spowodować przekazanie tokenów lub NFT. Nawet w przypadku znanej aplikacji wymagane jest wyrażenie zgody, ponieważ przyznane uprawnienia są takie same. Cofnięcie zgody, np. zatwierdzenie z kwotą 0, jest oznaczone jako „niskie ryzyko”.
Podmiot wydający lub podmiot prowadzący działalność w czerwonej strefieAdres, który uzyskałby uprawnienia do przeniesienia Twoich aktywów. Wymieniono kilka kontraktów, takich jak Permit2, Seaport i kanał OpenSea; każdy inny adres należy sprawdzić.
Nieograniczona kwotaDotyczy to wartości 2^256−1 oraz każdej wartości równej 2^255 lub większej, a także żądań typu Permit2 dla wartości 2^160−1. Płatnik mógłby przejąć całe saldo tego tokenu, zarówno teraz, jak i w przyszłości.
Kwota z ułamkową liczbą miejsc po przecinkuW przypadku tokenów USDC, USDT, DAI i WETH w sieci Ethereum wartość liczbowa jest przeliczana – na przykład 1000000 staje się 1 USDC. W przypadku innych tokenów wyświetlana jest wartość liczbowa w postaci liczby całkowitej z 18 cyframi i 6 miejscami po przecinku.
Wygasanie i terminW praktyce nigdy nie traci ważności (nawet po roku 5000), jest ważne dłużej niż rok lub już straciło ważność. Zezwolenie lub przydział, które nigdy nie tracą ważności, można wykorzystać jeszcze długo po tym, jak o nich zapomnisz.
Podpis „na ślepo” skrótu o długości 32 bajtówPortfel nie jest w stanie wskazać, co oznacza dany hash, a w przypadku funkcji eth_sign może to być transakcja lub zezwolenie. Podpisuj wyłącznie hashe, które sam wygenerowałeś.
Kontrola zamówień w porcie morskimOferta z ceną zerową, sytuacja, w której inni odbiorcy otrzymują więcej niż osoba wystawiająca ofertę, lub ponowne pojawienie się oferowanych przedmiotów u innego odbiorcy: typowe cechy fałszywych ofert NFT, z których zyskuje atakujący.
Zaloguj się za pomocą domeny EthereumKomunikat logowania zawiera nazwę witryny, która wyświetla to zapytanie. Jeśli ta domena nie jest dokładnie tą samą witryną, na której się znajdujesz, podpis może spowodować, że ktoś inny zaloguje się pod twoim nazwiskiem.
Dwa odczyty jednego selektoraFunkcja `approve(address, uint256)` jest taka sama zarówno w standardzie ERC-20, jak i ERC-721. O ile kontrakt nie należy do nielicznej grupy tokenów rozpoznawanych przez narzędzie, wyświetlane są obie wartości.

Więcej przykładów

Zatwierdzenie NFT dla całej kolekcji

Dane wejściowe
0xa22cb465000000000000000000000000000000000000000000000000000000000000dead0000000000000000000000000000000000000000000000000000000000000001
Wynik

Odczyt: dane wywołania transakcji (znany selektor funkcji). Niebezpieczne: setApprovalForAll: kontrola nad WSZYSTKIMI Twoimi NFT w tej kolekcji. Operator 0x000000000000000000000000000000000000dEaD, zatwierdzono true, kolekcja (docelowa) nie podana.

Ograniczone zatwierdzenie kwoty w USDC w ramach transakcji

Dane wejściowe
{"to":"0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48","data":"0x095ea7b3000000000000000000000000000000000000000000000000000000000000dead00000000000000000000000000000000000000000000000000000000000f4240","value":"0x0","chainId":1}
Wynik

Odczyt: obiekt transakcji. Niebezpieczne: zatwierdzenie ERC-20. Z podsumowania wynika, że 0x000000000000000000000000000000000000dEaD może przesunąć do 1 000 000 jednostek tokenu USDC w sieci Ethereum bez ponownego pytania o zgodę. W tabeli widnieje łańcuch Ethereum (identyfikator łańcucha 1), wartość 0 ETH (0 wei) oraz kwota 1 000 000 z adnotacją 1 USDC (6 miejsc po przecinku).

Ślepe żądanie eth_sign

Dane wejściowe
{"method":"eth_sign","params":["0x0000000000000000000000000000000000000001","0xabababababababababababababababababababababababababababababababab"]}
Wynik

Odczyt: żądanie eth_sign w formacie JSON-RPC. Niebezpieczeństwo: ślepy podpis: 32-bajtowy skrót zamiast tekstu, wraz z informacją, że większość portfeli wyłączyła lub ukryła funkcję eth_sign, ponieważ wykorzystywali ją oszuści.

Najczęściej zadawane pytania

Co sprawdza narzędzie „Signature Request Inspector”?

Dekoduje dane typu EIP-712, dane wywołania transakcji, obiekty transakcji oraz komunikaty „personal_sign” lub „eth_sign” i oblicza skrót EIP-712. Zaznacza on zatwierdzenia tokenów, setApprovalForAll, zezwolenia EIP-2612 i DAI, podpisy Permit2, zlecenia Seaport, w ramach których płatność jest kierowana do osoby innej niż użytkownik, oraz podpisy ślepe na skrócie o długości 32 bajtów.

Czy prośba, która nie jest zaznaczona na czerwono, może mimo to być szkodliwa?

Tak. Narzędzie odczytuje wyłącznie samą prośbę: nie ma wglądu w salda, istniejące autoryzacje ani nie jest w stanie stwierdzić, czy umowa ma złośliwy charakter, a funkcje spoza jego tabeli są wyświetlane jako nieznane. Autoryzacje dla legalnych aplikacji są również oznaczone na czerwono, ponieważ podpis przyznaje takie same uprawnienia w obu przypadkach.

Czy wklejone żądanie jest gdzieś wysyłane?

Nie. Dekodowanie i generowanie skrótu odbywa się w przeglądarce, a strona nie wysyła żadnych żądań sieciowych zawierających wprowadzone przez Ciebie dane. Żądanie podpisu nie zawiera żadnych poufnych informacji, ale nigdy nie wklejaj klucza prywatnego ani frazy siewnej na żadnej stronie internetowej.

Czy niewielka ilość sprawia, że zatwierdzenie jest bezpieczne?

Ogranicza to kwotę, jaką można pobrać, do tej sumy, ale osoba dokonująca wydatków może z niej skorzystać w dowolnym momencie bez konieczności ponownego zwracania się do Ciebie o zgodę. Dlatego narzędzie nadal wyświetla zatwierdzenie kwoty 1 USDC jako „Niebezpieczne”. Zatwierdzaj tylko kwotę, której potrzebujesz, dla osoby dokonującej wydatków, którą sprawdziłeś.

Dlaczego przy jednym zatwierdzeniu widzę wartości ERC-20 i ERC-721?

Oba standardy wykorzystują tę samą nazwę funkcji i te same typy argumentów, więc sama wartość 0x nie pozwala określić, o który z nich chodzi. Wklej całą transakcję wraz z adresem odbiorcy i sprawdź w eksploratorze bloków, czy dany kontrakt dotyczy tokenu, czy kolekcji NFT.

Podpisałem już petycję, która jest tutaj zaznaczona na czerwono. Co teraz?

Działaj szybko. Cofnij upoważnienia w łańcuchu bloków i przenieś pozostałe środki do nowego portfela. Podpisane upoważnienie, które nie zostało jeszcze wykorzystane, nie jest wyświetlane jako upoważnienie, więc przeniesienie tokenów jest bezpieczniejszym rozwiązaniem. W przewodniku awaryjnym podano kolejność działań.

Objaśnienie terminów

Badania PhishDestroy