Jak cofnąć zgody na tokeny w Ethereum i innych sieciach EVM
Dowiedz się krok po kroku, jak cofać zgody w Ethereum i innych sieciach EVM, które zgody są ryzykowne, ile kosztuje ich cofnięcie i czego nie da się w ten sposób odwrócić.
Aby cofnąć zgody na tokeny w Ethereum lub innej sieci EVM, połącz portfel z zaufanym narzędziem do sprawdzania zgód (takim jak Revoke.cash lub narzędzie do zgód na tokeny w eksploratorze bloków), wybierz sieć, sprawdź, które kontrakty mogą wydawać twoje tokeny, i wyślij transakcję cofnięcia dla tych, których już nie używasz lub których nie rozpoznajesz. Każde cofnięcie to transakcja on-chain, która ustawia limit na zero i kosztuje niewielką opłatę za gas.
Zgody to jedno z najczęściej pomijanych zagrożeń w samodzielnym przechowywaniu. Za każdym razem, gdy handlujesz na zdecentralizowanej giełdzie lub korzystasz z aplikacji DeFi, prawdopodobnie dajesz kontraktowi uprawnienie do przenoszenia twoich tokenów. Te uprawnienia pozostają aktywne bezterminowo. Jeśli ten kontrakt zostanie później zaatakowany albo zatwierdziłeś złośliwy kontrakt, twoje tokeny mogą zostać zabrane bez żadnego kolejnego podpisu z twojej strony.
Jak działają zgody na tokeny
Tokeny ERC-20, standard dla większości tokenów w Ethereum, zawierają funkcję approve. Gdy zatwierdzasz kontrakt, ustawiasz limit (allowance): maksymalną kwotę danego tokena, jaką kontrakt może przelać z twojego adresu.
Wiele aplikacji prosi o nieograniczony limit, abyś nie musiał zatwierdzać ponownie przy każdej transakcji. To wygodne, ale oznacza, że kontrakt może w dowolnym momencie, teraz lub w przyszłości, przenieść całe twoje saldo tego tokena.
NFT działają podobnie. Funkcja setApprovalForAll daje operatorowi uprawnienie do przenoszenia każdego NFT z kolekcji, którą posiadasz, dlatego właśnie na nią celują drainery NFT.
Istnieje też nowszy mechanizm: podpisy permit. Niektóre tokeny i systemy (w tym Permit2 od Uniswap) pozwalają przyznać limit przez podpisanie wiadomości off-chain zamiast wysyłania transakcji. Takie podpisy wyglądają niewinnie, ale mogą autoryzować transfery. Nasz artykuł o ice phishingu i podpisach permit omawia to ryzyko.
Krok po kroku: jak cofnąć zgody
- 1Otwórz zaufane narzędzie bezpośrednio. Wpisz adres samodzielnie lub użyj zakładki. Znane opcje to Revoke.cash oraz narzędzie do sprawdzania zgód na tokeny w Etherscan i innych eksploratorach. Istnieją fałszywe strony do „revoke”, więc nigdy nie korzystaj z linków z wiadomości prywatnych ani reklam.
- 2Połącz portfel lub wklej swój adres. Wklejenie adresu pozwala przejrzeć zgody bez łączenia portfela. Połączenie jest potrzebne tylko do wysłania transakcji cofnięcia.
- 3Wybierz sieć. Zgody działają w obrębie danej sieci. Sprawdź Ethereum, a potem każdą sieć, z której korzystasz, np. Arbitrum, Optimism, Base, Polygon czy BNB Smart Chain.
- 4Przejrzyj listę. Przy każdej zgodzie zobaczysz token, uprawniony kontrakt, wysokość limitu i często datę jej udzielenia.
- 5Ustal, co cofnąć. W pierwszej kolejności zajmij się nieograniczonymi limitami, kontraktami, których nie rozpoznajesz, aplikacjami, z których już nie korzystasz, oraz każdym kontraktem powiązanym ze znanym exploitem.
- 6Kliknij „cofnij” i potwierdź w portfelu. Przeczytaj komunikat portfela: powinno to być wywołanie
approveustawiające limit na zero (lub, w przypadku NFT, wywołaniesetApprovalForAllz wartością false). - 7Powtórz dla każdej sieci. Następnie odśwież widok, aby potwierdzić, że zgody zniknęły.
Które zgody cofnąć w pierwszej kolejności
| Rodzaj zgody | Poziom ryzyka | Działanie |
|---|---|---|
| Nieograniczony limit dla nieznanego kontraktu | Wysoki | Cofnij natychmiast |
setApprovalForAll dla cennej kolekcji NFT | Wysoki | Cofnij, chyba że aktywnie wystawiasz NFT na sprzedaż |
| Nieograniczony limit dla aplikacji, której już nie używasz | Średni | Cofnij |
| Ograniczony limit dla renomowanej aplikacji, której często używasz | Niski | Zachowaj lub zmniejsz |
| Zgoda dla kontraktu powiązanego z exploitem | Wysoki | Cofnij natychmiast |
Czego cofnięcie nie zrobi
Cofnięcie to profilaktyka, a nie lekarstwo. Nie sprawi, że:
- Odzyskasz tokeny, które już zostały przelane.
- Będziesz chroniony, jeśli twoja fraza seed lub klucz prywatny zostały skradzione. W takim przypadku atakujący może podpisać wszystko; przenieś pozostałe aktywa do nowego portfela, jak opisano w artykule co zrobić natychmiast, gdy twój portfel zostanie przejęty.
- Niezawodnie anulujesz podpisy permit off-chain, które już złożyłeś. Podlegają one własnym zasadom wygasania i nonce, więc jeśli podpisałeś podejrzany permit, najbezpieczniej jest przenieść dotknięte tokeny do nowego portfela.
Jak ograniczyć ryzyko związane ze zgodami na przyszłość
- Ustawiaj własne limity. Wiele portfeli pozwala edytować kwotę w oknie zgody. Zatwierdzaj tylko tyle, ile zamierzasz wydać.
- Używaj osobnego portfela do eksperymentów. Miej portfel jednorazowy do nowych aplikacji, mintów i airdropów, a długoterminowe środki trzymaj w portfelu, który nigdy nie łączy się z nieznanymi stronami.
- Czytaj każdą prośbę o podpis. Jeśli strona prosi cię o podpisanie wiadomości, której nie rozumiesz, przerwij.
- Regularnie przeglądaj zgody. Co kilka miesięcy i po wypróbowaniu każdej nowej aplikacji.
- Sprawdzaj też połączone strony. Połączenie i zgoda to różne rzeczy; zobacz uprawnienia portfela i połączone strony.
Częste błędy
- Korzystanie z fałszywego narzędzia do cofania zgód znalezionego przez reklamę w wyszukiwarce lub odpowiedź w mediach społecznościowych.
- Cofnięcie zgód w Ethereum, ale zapomnienie o tym samym portfelu w sieciach warstwy 2.
- Założenie, że odłączenie strony w portfelu usuwa jej zgody. Tak nie jest.
- Ignorowanie tokenów o niskiej wartości; atakujący często zabierają wszystko, co się da.
Podsumowanie
Zgody na tokeny to stałe uprawnienia, które trwają długo po chwili, w której ich udzieliłeś. Ich sprawdzenie nic nie kosztuje, cofnięcie jest tanie, a robienie tego regularnie zamyka jedną z najczęstszych dróg wykorzystywanych przez drainery. Wpisz to w swoją rutynę, zatwierdzaj tylko to, czego potrzebujesz, a główne zasoby trzymaj w portfelu, który rzadko cokolwiek podpisuje.
Najczęściej zadawane pytania
Czym jest zgoda na token?
Zgoda na token to uprawnienie, które dajesz smart kontraktowi, aby mógł przenosić określony token z twojego portfela do ustalonej kwoty. Zdecentralizowane giełdy i inne aplikacje DeFi potrzebują zgód, aby działać. Uprawnienie pozostaje aktywne, dopóki go nie cofniesz lub limit nie zostanie wykorzystany, nawet jeśli nigdy więcej nie odwiedzisz aplikacji.
Czy cofnięcie zgody kosztuje gas?
Tak. Cofnięcie to transakcja on-chain, która ustawia limit na zero, więc płacisz zwykłą opłatę sieciową. W mainnecie Ethereum może być odczuwalna; w sieciach warstwy 2 zwykle jest niska. Przeglądanie zgód jest bezpłatne.
Czy cofnięcie zgody zwróci mi skradzione tokeny?
Nie. Cofnięcie zapobiega jedynie przyszłym transferom przez ten kontrakt. Tokenów, które już zostały zabrane, nie da się odzyskać przez cofnięcie zgody. Jeśli twoja fraza seed lub klucz prywatny zostały ujawnione, samo cofnięcie nie wystarczy; przenieś pozostałe środki do nowego portfela.
Jak często powinienem sprawdzać zgody na tokeny?
Dobrym nawykiem jest przeglądanie ich co kilka miesięcy oraz po każdej sesji, w której korzystałeś z nowej lub nieznanej aplikacji. Sprawdź je też natychmiast, jeśli podejrzewasz, że podpisałeś coś złośliwego.
