Sprawdź poprawność adresów EIP-55, Bitcoin, TRON i Solana oraz wyświetl prawidłową formę sumy kontrolnej.
Narzędzie do sprawdzania wniosków o podpis
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
- 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.
- Wklej i sprawdź. Wklej to do pola. Sprawdzanie rozpocznie się po wklejeniu; możesz też nacisnąć przycisk „Sprawdź” lub skrót klawiszowy Ctrl+Enter.
- 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”.
- 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.
- 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”.
- 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
{
"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"
}
}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 Uwaga | Okreś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 strefie | Adres, 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 kwota | Dotyczy 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 przecinku | W 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 termin | W 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ów | Portfel 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 morskim | Oferta 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 Ethereum | Komunikat 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 selektora | Funkcja `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
0xa22cb465000000000000000000000000000000000000000000000000000000000000dead0000000000000000000000000000000000000000000000000000000000000001Odczyt: 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
{"to":"0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48","data":"0x095ea7b3000000000000000000000000000000000000000000000000000000000000dead00000000000000000000000000000000000000000000000000000000000f4240","value":"0x0","chainId":1}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
{"method":"eth_sign","params":["0x0000000000000000000000000000000000000001","0xabababababababababababababababababababababababababababababababab"]}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ń.