EIP-7702: delegowanie kodu EOA i ryzyka
Dowiedz się, jak EIP-7702 pozwala EOA wskazać wdrożony kod, co podpisuje autoryzacja typu 4 oraz jakie uprawnienia i ryzyka sprawdzić.
W tym przewodnikuEIP-7702 zmienia ścieżkę wykonania konta, a nie klucz
Krótkie podsumowanie
EIP-7702 pozwala istniejącemu kontu zewnętrznemu (EOA) ustawić znacznik wskazujący wdrożony kod. Adres i klucz pozostają bez zmian, ale wywołania mogą uruchomić ten kod z uprawnieniami konta. Standard nie gwarantuje ograniczonych uprawnień ani bezpieczeństwa. Przed podpisaniem sprawdź kod docelowy i to, kto nim zarządza.
EIP-7702 zmienia ścieżkę wykonania konta, a nie klucz
Zwykłe EOA podpisuje transakcje kluczem prywatnym i nie ma kodu pod własnym adresem. EIP-7702 pozwala wskazać kod wdrożony gdzie indziej i uruchamiać go w kontekście konta. Adres, saldo i pamięć pozostają powiązane z EOA. Nie jest to migracja do nowego kontraktu ani wymiana klucza.
Specyfikacja EIP-7702 definiuje transakcję set-code typu 4 i listę autoryzacji; przewodnik Pectra w Ethereum.org opisuje wskaźnik do wdrożonego kodu. Etykieta „smart account” nie wyjaśnia zasad walidacji ani odzyskiwania dostępu. Sprawdź, kto kontroluje kod, może go aktualizować i jak wpływa on na aktywa oraz pamięć konta.
Transakcja typu 4 zawiera osobną autoryzację
Transakcję set-code identyfikuje bajt 0x04. Każdy wpis listy autoryzacji zawiera identyfikator łańcucha, adres kodu, nonce konta autoryzującego i jego podpis. Konto autoryzujące podpisuje wpis; nadawca osobno podpisuje transakcję zewnętrzną. Role mogą należeć do różnych kont.
Identyfikator łańcucha zwykle ogranicza autoryzację do jednej sieci. Wartość 0 pozwala na szerszy zakres na łańcuchach obsługujących EIP-7702, ale nie gwarantuje powodzenia: nonce i stan konta nadal muszą pasować. Sprawdź sieć, konto i pełny adres celu w podglądzie podpisu. Błędny nonce może sprawić, że wpis zostanie pominięty.
Dokumentacja transakcji Ethereum.org wymienia listę autoryzacji typu 4. Transakcja zewnętrzna nadal ma warunki gasu i płatnika. Type 4 różni się od ERC-4337-UserOperations i paymasterów opisanych w przewodniku po smart accountach.
Znacznik delegacji wskazuje kod, ale go nie zawiera
Znacznik składa się z prefiksu 0xef0100 i adresu celu. Klient rozpoznaje go i ładuje kod docelowy podczas wykonania; adres konta i adres kodu są różne. Kod pochodzi z bieżącego łańcucha, a ten sam adres może mieć na różnych sieciach inny kod lub nie mieć go wcale.
Kod działa w kontekście EOA i może używać jego pamięci, wysyłać ETH lub tokeny, wywoływać inne kontrakty i zmieniać stan. EIP-7702 sam nie ogranicza go do jednego tokenu ani określonej liczby działań. Jeśli celem jest proxy, sprawdź administratora, uprawnienia aktualizacji i procedurę zmiany kodu.
Delegowany kod może mieć szerokie uprawnienia
Błąd kontroli może pozwolić na transfery, zgody tokenów, dowolne wywołania lub zmiany pamięci. Uwagi bezpieczeństwa EIP wskazują, że delegowany kod może wiązać z podpisem ochronę przed powtórzeniem, cel, calldata, wartość ETH i warunki gasu. Bez tych danych sponsor może przesłać inne wywołanie albo doprowadzić do błędu.
Sprawdź walidację podpisów, wywoływane kontrakty, administratorów awaryjnych i aktualizacji oraz zgodność kodu ze zweryfikowanym źródłem. Przy operacjach łączonych, takich jak zgoda i wymiana, sprawdź oba wywołania i ogranicz zgodę do potrzebnej kwoty. Sama odznaka audytu nie potwierdza, że sprawdzono dokładnie adres i wersję z twojej prośby.
Błąd transakcji zewnętrznej może pozostawić delegację
Lista autoryzacji jest przetwarzana przed wykonaniem transakcji zewnętrznej. Według specyfikacji znaczniki już przetworzone nie są cofane, gdy wykonanie później zawiedzie lub nastąpi revert. Dlatego komunikat o błędzie nie gwarantuje powrotu konta do poprzedniego stanu. Sprawdź potwierdzenie i aktualny kod konta oddzielnie.
Autoryzacja może się powieść, a późniejsze wywołanie inicjalizacyjne zawieść, pozostawiając aktywną delegację. Sprawdź hash transakcji, konto autoryzujące, nonce i wskaźnik kodu przed ponowieniem; nonce może się zmienić i unieważnić wcześniejszy podpis.
Usunięcie delegacji nie czyści pozostałego stanu
Nowa autoryzacja może wskazać inny kod; autoryzacja adresu zerowego usuwa znacznik i pozostawia pusty kod konta. Nie kasuje jednak pamięci konta, zgód zapisanych w kontraktach ERC-20, wykonanych transferów ani zmian w zewnętrznych kontraktach. Allowance tokenu trzeba sprawdzić i w razie potrzeby cofnąć osobno.
Nowy kod może inaczej interpretować pamięć pozostawioną przez poprzedni. Sprawdź układ pamięci i plan migracji. W sprawie zgód przeczytaj przewodnik po approvals i allowance; przy ujawnionym kluczu skorzystaj z przewodnika odzyskiwania portfela, bo usunięcie kodu nie odzyskuje klucza.
Przed podpisaniem sprawdź łańcuch, cel i skutek błędu
Potwierdź w dokumentacji portfela obsługę EIP-7702 na wybranej sieci. Sprawdź identyfikator łańcucha, konto, adres celu, zweryfikowany kod i administratora proxy. Odróżnij podpis autoryzacji od nadawcy i płatnika transakcji zewnętrznej; sponsorowanie nie czyni kodu bezpiecznym.
Jeśli delegacja już działa, sprawdź aktualny znacznik i adres kodu, a nie tylko status transakcji. Przy niezgodności wstrzymaj dalsze wywołania i zgody. Mechanikę opłat omawia przewodnik po gasie Ethereum, a nonce i transakcje oczekujące — przewodnik po transakcjach oczekujących.
Oddziel funkcje standardu od obietnic portfela
EIP-7702 standaryzuje połączenie EOA z wdrożonym kodem. Grupowanie, sponsorowanie opłat, uprawnienia sesji i odzyskiwanie zależą od konkretnego kodu i usług, a nie od gwarancji protokołu. Ogłoszenie Pectra mainnet Ethereum Foundation opisuje możliwość zamiany lub cofnięcia autoryzacji. ERC-4337 to odrębny mechanizm.
Etykieta „smart account” nie wskazuje, kto ma klucz lub może zmienić kod i odzyskiwanie. Sprawdź konfigurację i wsparcie portfela przed zmianą konta z aktywami. Ten przewodnik opisuje mechanikę i nie poleca konkretnego portfela ani delegata.
Częste pytania
Q1Czy EIP-7702 zmienia EOA w zwykły smart contract wallet?
Pozwala delegować wywołania do kodu, ale nie dodaje automatycznie polityki portfela, odzyskiwania ani konkretnych uprawnień.
Q2Czy oba podpisy są takie same?
Nie. Konto autoryzujące podpisuje cel, identyfikator łańcucha i nonce; nadawca podpisuje osobno transakcję zewnętrzną.
Q3Czy usunięcie delegacji cofa zgody tokenów?
Nie. Allowance zapisany w kontrakcie tokenu jest osobny i wymaga oddzielnego sprawdzenia oraz cofnięcia.
Q4Co sprawdzić w celu delegacji?
Sprawdź dokładny adres i kod na bieżącym łańcuchu, zweryfikowane źródło, administratora aktualizacji oraz uprawnienia do aktywów i pamięci konta.
Źródła i dalsza lektura
Zgłoś problem
Przygotujemy e-mail z linkiem do tego artykułu. Mark otrzyma zgłoszenie dopiero po jego wysłaniu
Szybki test
Przeczytano? Sprawdź się w 3 pytaniach
Pytanie 01
Co może się stać po błędzie wykonania zewnętrznego po przetworzeniu autoryzacji?
Wybierz odpowiedź, aby zobaczyć wyjaśnienie
Słownik opcji
The process that requires an option writer to fulfill the contract after an exercise notice is allocated; it can create or remove an underlying position.
Czytaj szczegółowy przewodnikBid-ask spreadThe gap between the best displayed bid and ask, which is a practical trading cost and a signal of how uncertain an immediate fill may be.
Czytaj szczegółowy przewodnik0DTEAn option that expires on the current trading day; little time remains for the thesis to work, while gamma and execution risk can change quickly.
Czytaj szczegółowy przewodnik