Account abstraction
Programowalne podejście do konta blockchain, w którym zasady autoryzacji nie muszą ograniczać się do jednego klucza prywatnego i jednej standardowej transakcji.
Jaki problem rozwiązuje account abstraction
Standardowe konto użytkownika na Ethereum, czyli EOA, działa bardzo prosto: kto ma klucz prywatny, ten może podpisywać transakcje. Każda transakcja wymaga też ETH na gaz.
Ten model jest prosty, ale sztywny. Nie ma wbudowanego odzyskiwania konta, limitów dziennych, wielu podpisujących, płacenia gazu w USDC ani sesji z ograniczonym zakresem uprawnień.
Account abstraction przenosi część logiki konta do kodu. Dzięki temu konto może mieć reguły podobne do produktu finansowego albo aplikacji, a nie tylko do surowego klucza kryptograficznego.
Co może umożliwić smart account
Account abstraction nie jest jedną funkcją. To zestaw możliwości wynikających z programowalnej logiki konta.
- Batching, czyli wykonanie kilku operacji w jednej akcji, na przykład approve + swap + stake.
- Social recovery, czyli odzyskiwanie dostępu przez zaufane osoby, urządzenia lub moduły.
- Paymaster, czyli opłacenie gazu przez aplikację albo rozliczenie kosztu w innym tokenie.
- Session keys, czyli tymczasowe klucze z ograniczeniami, na przykład dla gry albo bota.
- Wielu podpisujących, limity wydatków i własne reguły bezpieczeństwa.
Jak działa ERC-4337
ERC-4337 to najbardziej znane podejście do account abstraction na Ethereum bez zmiany warstwy konsensusu. Zamiast zwykłych transakcji użytkownik tworzy UserOperation, czyli strukturę opisującą intencję wykonania akcji.
UserOperation trafia do osobnego przepływu obsługiwanego przez bundlerów. Bundler zbiera wiele takich operacji i wysyła zwykłą transakcję Ethereum do kontraktu EntryPoint.
EntryPoint sprawdza operację, wywołuje logikę walidacji smart accountu i wykonuje akcję, jeśli reguły konta ją dopuszczają. To właśnie w tej logice można obsługiwać multisig, passkeys, social recovery albo niestandardowe podpisy.
Najważniejsze elementy ERC-4337
- UserOperation
- Opis intencji użytkownika, parametrów gazu i podpisu. Nie jest zwykłą transakcją EOA.
- Bundler
- Usługa, która zbiera operacje użytkowników i wysyła je onchain jako transakcję do EntryPoint.
- EntryPoint
- Kontrakt koordynujący walidację i wykonanie operacji smart accountów.
- Smart account
- Konto kontraktowe z własną logiką autoryzacji, recovery i wykonywania akcji.
- Paymaster
- Kontrakt, który może sponsorować gaz albo obsłużyć płatność za gaz w innym modelu.
Czym różni się EIP-7702
EIP-7702 podchodzi do problemu inaczej niż ERC-4337. Zamiast od razu przenosić użytkownika do nowego konta kontraktowego, pozwala istniejącemu EOA tymczasowo zachowywać się jak smart account.
To może ułatwić wdrożenie funkcji account abstraction bez natychmiastowej migracji na nowy adres. Dla użytkownika ważne jest to, że część nowych funkcji może pojawić się w znanych portfelach bez całkowitej zmiany sposobu używania konta.
Ten model nie oznacza jednak, że wszystkie ryzyka znikają. Delegowana logika nadal musi być bezpieczna, a użytkownik musi rozumieć, komu i czemu daje uprawnienia.
Przykłady zastosowań
- Nowy użytkownik korzysta z aplikacji, a pierwszą transakcję opłaca za niego dapp przez paymaster.
- Portfel łączy approve i swap w jedną operację, zamiast wymuszać dwie osobne transakcje.
- Gracz daje aplikacji session key, który działa tylko przez 24 godziny i tylko w konkretnej grze.
- Konto ma social recovery, więc utrata jednego urządzenia nie musi oznaczać utraty środków.
Najczęstsze błędne założenia
- Account abstraction nie jest jednym standardem ani jednym gotowym produktem.
- Smart account nie jest automatycznie bezpieczniejszy od EOA. Zależy od kodu, modułów i konfiguracji.
- ERC-4337 nie zawsze jest tańszy od zwykłego EOA. Dodatkowe wywołania kontraktów mogą zwiększyć koszt gazu.
- Paymaster nie oznacza darmowych transakcji w sensie ekonomicznym. Ktoś nadal pokrywa koszt gazu.
- Zainstalowanie złośliwego modułu może być tak groźne jak utrata klucza prywatnego.
Więcej funkcji oznacza większą powierzchnię ataku
Account abstraction może mocno poprawić UX portfeli, ale dodaje nowe elementy zaufania: bundlerów, paymasterów, moduły, delegowaną logikę i kontrakty smart accountów. Przed użyciem portfela tego typu sprawdzaj, kto odpowiada za kod i jakie uprawnienia instalujesz.
