EIP-7702: jak sprawdzić i cofnąć delegację portfela, zanim ktoś ją wykorzysta
Jeden podpis EIP-7702 może oddać kodowi kontraktu pełną kontrolę nad Twoim portfelem EVM. Tak opróżniono gorący portfel Binance 29 października. Wyjaśniamy, jak działa delegacja, jak sprawdzić, czy Twój adres ją ma, i jak ją cofnąć.

Najważniejsze wnioski
- EIP-7702 pozwala zwykłemu portfelowi EVM uruchamiać kod wskazanego kontraktu. Działa od upgrade'u Pectra w maju 2025
- Delegacja zostaje na koncie, dopóki jej nie zmienisz. Kod, który wskazuje, ma nieograniczony dostęp do konta
- Autoryzacja z chain ID 0 działa w każdej sieci EVM naraz, a nie tylko w tej, w której ją podpisałeś
- Strona, która prosi o podpis autoryzacji EIP-7702 dla nieznanego kontraktu, to czerwona flaga. Portfele nie powinny w ogóle udostępniać tego stronom
- Delegację sprawdzisz w narzędziu do sprawdzania delegacji albo po kodzie adresu: 0xef0100 na początku oznacza aktywną delegację
- Cofnięcie to delegacja na adres zerowy. Jeśli jednak na adresie siedzi sweeper, klucz już wyciekł i trzeba przejść na nowy portfel
Czym jest delegacja EIP-7702[1][5][2]
Zwykły portfel EVM, taki jak MetaMask czy Rabby, to EOA: adres z kluczem prywatnym i bez własnego kodu. EIP-7702 weszło w życie z upgrade'em Pectra 7 maja 2025 i pozwala takiemu adresowi podpisać autoryzację, która wskazuje kontrakt. Od tej chwili przy każdym wywołaniu Twój adres wykonuje kod tego kontraktu, jakby sam był smart kontraktem.
Autoryzacja zawiera trzy rzeczy: chain ID, adres kontraktu i nonce, czyli numer kolejnej transakcji konta. Po przyjęciu przez sieć w kodzie konta zapisuje się znacznik 0xef0100 i adres kontraktu.
Uczciwe zastosowania istnieją. MetaMask nazywa to smart account: kilka operacji w jednej transakcji albo opłata za gas pokryta przez kogoś innego. MetaMask podaje, że obsługuje taką funkcję tylko dla własnego kontraktu.
Dlaczego jeden podpis waży więcej niż approve[1][6]
Zwykłe approve daje kontraktowi prawo do jednego tokena, zwykle do określonej kwoty. Delegacja działa inaczej. Specyfikacja mówi wprost, że kod wskazany przez autoryzację ma nieograniczony dostęp do konta. Taki kod może wysłać ETH i każdy token, w każdej chwili.
Delegacja jest trwała: zostaje na koncie, dopóki nie podpiszesz nowej. Jeśli jest kilka ważnych autoryzacji, wygrywa ostatnia. Autoryzacja z chain ID 0 jest ważna w każdej sieci EVM, więc jeden podpis może otworzyć Twój adres naraz na Ethereum, Base i BNB Chain.
Autorzy EIP piszą, że nie ma bezpiecznego sposobu, by pozwolić stronom prosić o takie podpisy, i że to portfel ma takiego interfejsu nie udostępniać. Jeśli strona prosi Cię o podpis autoryzacji dla kontraktu, którego nie znasz, przerwij.
Według CoinDesk 29 października 2026 o 20:20 UTC atakujący wysłał jedną transakcję z 50 autoryzacjami podpisanymi przez gorący portfel Binance 14. Każda miała inny nonce, bo licznik portfela ciągle rósł od wypłat klientów. Sieć przyjęła tę jedną, która pasowała, i Binance 14 zaczął wykonywać kod sweepera. Cztery minuty później z portfela wyszło około 167 464 ETH i 63 tokeny. Delegacja trwała prawie cztery godziny, aż Binance ją cofnęło o 00:10 UTC.
Jak delegacja szkodzi zwykłym użytkownikom[5]
Według Wintermute w pierwszych tygodniach po Pectrze ponad 97% delegacji EIP-7702 wskazywało prawie identyczne kontrakty typu sweeper. Taki kontrakt automatycznie wyprowadza każde ETH, które wpłynie na adres. Złodzieje zakładają go na adresach, których klucze prywatne już przejęli.
Drugi scenariusz to phishing. Według Scam Sniffer jeden użytkownik Ethereum stracił 146 550 USD, gdy nieświadomie podpisał paczkę złośliwych transakcji EIP-7702. Wzór jest ten sam co przy drainerach z fałszywych airdropów: strona prosi o podpis, który wygląda niewinnie, a daje komuś kontrolę.
Jak sprawdzić, czy Twój adres ma delegację[4][3][2]
Najprościej użyć narzędzia do sprawdzania delegacji, takiego jak Delegation Checker opisany przez Curvegrid. Wpisujesz adres i dla każdej sieci widzisz stan: brak delegacji albo delegacja z linkiem do kontraktu. Narzędzie oznacza też kontrakty znane z kradzieży. Curvegrid zaznacza, że niektóre eksploratory nie pokazują delegacji wyraźnie.
Możesz też sprawdzić kod adresu w eksploratorze albo przez RPC. Zwykły portfel ma pusty kod, czyli 0x. Jeśli kod zaczyna się od 0xef0100, konto jest delegowane, a po tym prefiksie stoi adres kontraktu.
W MetaMask wejdź w Account details, a potem w Smart account. Zobaczysz tam przełącznik dla każdej sieci.
- Sprawdź każdy adres EVM, którego używasz, w każdej sieci osobno
- Kontrakt MetaMask albo innego portfela, który sam włączyłeś: w porządku
- Nieznany kontrakt albo kontrakt oznaczony jako złośliwy: cofnij delegację i sprawdź, czy klucz nie wyciekł
- Delegacji, której nie pamiętasz, nie zostawiaj na wszelki wypadek
Jak cofnąć delegację[1][3][2][4]
Cofnięcie to nowa autoryzacja wskazująca adres zerowy (0x0000…0000). Specyfikacja mówi, że wtedy kod konta wraca do pustego, a adres znowu jest zwykłym EOA. Zmiana delegacji nie czyści jednak danych, które kontrakt zapisał na koncie (storage), i protokół nie ma do tego osobnej funkcji.
W MetaMask wejdź w Account details i Smart account, wyłącz przełącznik dla danej sieci i potwierdź transakcję. To kosztuje niewielką opłatę za gas, a ponowne włączenie później kosztuje ją znowu. W innych portfelach bywa różnie: według Curvegrid wiele portfeli w ogóle nie potrafi wysłać transakcji, która cofa dowolną delegację.
Po cofnięciu sprawdź jeszcze raz. Kod adresu powinien znowu wynosić 0x.
Sprawdź, co zostało w głowie
Zaliczenie to 4 z 5 dobrych odpowiedzi.
Pytanie 1 z 5
Co robi delegacja EIP-7702 na zwykłym portfelu EVM?
Źródła
Materiały pierwotne wykorzystane do sprawdzenia informacji. Numer przy sekcji wskazuje powiązane źródło. Link nie oznacza rekomendacji opisywanego aktywa.
- 01EIP-7702: Set Code for EOAs (specyfikacja)
- 02MetaMask: How to switch to or revert from a smart account
- 03Alchemy: Undelegate a 7702 account
- 04Curvegrid (2026-02-13): A practical look at EIP-7702 and wallet delegation
- 05Benzinga (2025): Wintermute's CrimeEnjoyor to warn Ethereum users of wallet-draining attacks
- 06CoinDesk (2026-10-30): How an Ethereum upgrade helped drain part of Binance's $6 billion loss
Widzisz błąd albo nieaktualną informację? Napisz na kontakt@memecoiny.pl. Jak poprawiamy błędy
