Czym jest abstrakcja konta (ERC-4337)?

·7 min czytania·Autor: SSP Editorial Team
Diagram portfela smart kontraktowego z UserOperation przepływającą przez bundlera

Jeśli przez ostatnie kilka lat spędziłeś trochę czasu w okolicach Ethereum, prawdopodobnie słyszałeś hasło „account abstraction" — często w parze z nazwą kodową ERC-4337. Brzmi to akademicko, ale stojąca za tym idea jest naprawdę praktyczna: twój portfel Ethereum powinien zachowywać się jak mały kawałek oprogramowania, który możesz dostosować, a nie jak pojedynczy klucz prywatny z interfejsem typu „bierzesz lub zostawiasz".

W tym artykule wyjaśnimy, co ERC-4337 faktycznie zmienia, cztery nowe pojęcia żargonowe, które wprowadza (UserOperation, EntryPoint, bundler, paymaster), co umożliwia w praktyce i jak odnosi się to do podejścia multisig stosowanego przez SSP. Nie jest wymagana wcześniejsza wiedza o smart kontraktach — wystarczy ciekawość, jak portfele kryptowalutowe działają pod maską.

Problem, który ERC-4337 miał rozwiązać

Przed abstrakcją konta każdy portfel Ethereum był tym, co nazywamy kontem zewnętrznie posiadanym — EOA. EOA jest banalnie prosty: jeden klucz prywatny kontroluje jeden adres, a każda akcja podejmowana przez ten adres musi być podpisana dokładnie tym kluczem.

Ta prostota niesie ze sobą ostre krawędzie:

  • Brak odzyskiwania. Stracisz klucz — stracisz środki. Nie ma linku „zapomniałem hasła", nie ma zaufanej osoby, która mogłaby za ciebie poręczyć, nie ma odblokowania z opóźnieniem czasowym. Klucz jest kontem.
  • Brak grupowania. Chcesz zatwierdzić token, a następnie go wymienić? To dwie osobne transakcje, dwa osobne podpisy, dwie osobne opłaty za gas. Nie da się powiedzieć „zrób to razem albo wcale".
  • Brak natywnej abstrakcji konta wielopodpisowego. Jeśli chciałeś mieć wielu sygnatariuszy, musiałeś wdrożyć kontrakt (jak Safe, dawniej Gnosis Safe), a następnie zlecać EOA wysyłanie transakcji do tego kontraktu. Kontrakt był multisigiem, ale konto wchodzące w interakcję ze światem nadal było pod spodem jednokluczowym EOA. Doświadczenie użytkownika zawsze było drugiej kategorii w porównaniu z normalnym portfelem.
  • Gas zawsze płacony w ETH, zawsze płacony przez nadawcę. Żadna dApp nie mogła zapłacić twojego gasu. Brak płacenia gasu w USDC. Brak wyjątków.

Deweloperzy od lat omijali te ograniczenia za pomocą rozbudowanych wzorców kontraktów. ERC-4337 wreszcie dał im ustandaryzowane wyjście — bez konieczności wprowadzania jakichkolwiek zmian w protokole bazowym Ethereum.

Co wprowadza ERC-4337

ERC-4337 nie zmienia tego, jak Ethereum działa na poziomie protokołu — to właśnie jego sprytna sztuczka. Zamiast tego definiuje cztery nowe role, które razem symulują „portfele smart kontraktowe jako obywateli pierwszej kategorii" całkowicie w przestrzeni użytkownika. Gdy poznasz te cztery słowa, cały standard wskakuje na swoje miejsce.

UserOperation. To nowy obiekt „podpisanej intencji", który zastępuje surową transakcję dla portfela AA. Tam, gdzie EOA produkuje transakcję podpisaną swoim jednym kluczem, portfel AA produkuje UserOperation — ustrukturyzowane żądanie, które mówi „to konto chce zrobić X, oto autoryzacja, oto jak to opłacić". UserOperation mógłby powiedzieć „przelej 100 USDC do Alicji, autoryzowane podpisami z tych dwóch urządzeń, a dApp pokryje gas".

Kontrakt EntryPoint. Pojedynczy, kanoniczny, zaudytowany smart kontrakt wdrożony na Ethereum, który wie, jak odbierać UserOperations, weryfikować je zgodnie z regułami portfela AA, z którego pochodzą, i wykonywać wynikłe z nich akcje. Każdy portfel AA rozmawia z tym samym EntryPoint, co właśnie czyni ten standard standardem.

Bundler. Aktor off-chain (potraktuj go jako wyspecjalizowany rodzaj relayera), który nasłuchuje UserOperations w publicznym mempoolu, grupuje kilka z nich razem i przesyła pakiet do EntryPoint jako pojedynczą transakcję Ethereum. Bundler płaci faktyczny gas sieci i otrzymuje zwrot od UserOperations, które zgrupował.

Paymaster. Opcjonalny kontrakt, który może dobrowolnie zapłacić gas w imieniu użytkownika. Paymaster jest tym, co sprawia, że możliwe są „dApp płaci twój gas" lub „płać gas w USDC zamiast w ETH". Bez paymastera portfel AA użytkownika płaci swój własny gas; z paymasterem to on wkracza do akcji.

To cały słownik. Cała reszta to ozdoby.

Co abstrakcja konta umożliwia w praktyce

Powyższe cztery elementy brzmią abstrakcyjnie, dopóki nie zobaczysz, co odblokowują:

  • Sponsorowanie gasu. dApp może zapłacić gas za nowych użytkowników, aby nie musieli zdobywać ETH przed wykonaniem czegokolwiek. To ogromne udogodnienie dla onboardingu — nowi użytkownicy mogą się zarejestrować, zmintować NFT lub złożyć swój pierwszy trade bez konieczności przechodzenia najpierw przez rampę fiat-na-ETH. Argent, Safe i ZeroDev wszystkie wspierają dziś przepływy sponsorowania.
  • Odzyskiwanie społecznościowe. Możesz skonfigurować swój portfel tak, aby — jeśli stracisz swój główny klucz — kworum „strażników" (przyjaciele, rodzina, urządzenie sprzętowe w sejfie) mogło zrotować klucz w twoim imieniu. Logika odzyskiwania żyje w twoim kontrakcie portfela — żaden scentralizowany powiernik nie trzyma twoich pieniędzy, ale twoje pieniądze nie są trwale stracone, jeśli pojedyncze urządzenie zawiedzie.
  • Klucze sesyjne. dApp może poprosić twój portfel o klucz o ograniczonych uprawnieniach, zakresowo ograniczony do jednej aplikacji i jednego zestawu akcji, ważny przez kilka godzin. Podpisujesz raz swoim głównym kluczem, aby udzielić sesji, a następnie dApp może działać wewnątrz swojej piaskownicy bez proszenia cię o potwierdzenie przy każdym kliknięciu. Studia gier uwielbiają ten wzorzec.
  • Akcje zgrupowane. „Zatwierdź ten token I go wymień" staje się jednym podpisem, jedną UserOperation, jedną egzekucją. Jeśli jakikolwiek krok się nie powiedzie, cały pakiet jest cofnięty — koniec z na wpół ukończonymi transakcjami utkniętymi w niespójnym stanie.
  • Niestandardowe schematy podpisów. Chcesz portfela używającego passkey, enklawy sprzętowej lub schematu progowego 2-z-3? Logika weryfikacji żyje w kontrakcie portfela, więc możesz użyć dowolnej kryptografii, jaka ci się podoba, nie tylko standardowego dla EOA secp256k1 ECDSA.

Jak ma się to do modelu multisig SSP

SSP Wallet obiera inną drogę do osiągnięcia wielu tych samych celów. SSP używa multisig 2-of-2 BIP48 — dwóch niezależnych kluczy, na dwóch niezależnych urządzeniach, oba wymagane do podpisania jakiejkolwiek transakcji. ERC-4337 i multisig BIP48 to różne mechanizmy atakujące wspólny problem: żadne pojedyncze urządzenie nie powinno być pojedynczym punktem awarii.

Kilka uczciwych porównań:

  • Co je łączy. Oba eliminują tryb awarii „jeden klucz, jedna szansa" klasycznego portfela jednopodpisowego. Stracisz jeden czynnik — możesz odzyskać dostęp dzięki drugiemu. Skompromitujesz jeden czynnik (malware na laptopie, zgubiony telefon) — atakujący nadal nie może sam ruszyć środków.
  • Czym się różnią. BIP48 to zakorzeniony w Bitcoinie standard multisig, który działa na łańcuchach wspieranych przez SSP — Bitcoin, Ethereum, Litecoin i kilka innych — używając natywnych prymitywów multisig każdego łańcucha. ERC-4337 dotyczy wyłącznie Ethereum i żyje na warstwie smart kontraktów, więc przychodzi z możliwościami, których BIP48 natywnie nie ma (sponsorowanie gasu, klucze sesyjne), ale za cenę zakresu ograniczonego do Ethereum i narzutu wykonywania kontraktu.
  • Gdzie stoi dziś SSP. SSP jest zbudowany wokół modelu BIP48. Portfele ERC-4337 i multisig w stylu SSP nie są wrogami — to narzędzia komplementarne — i w zasadzie klucz multisig BIP48 mógłby zostać użyty jako sygnatariusz wewnątrz portfela AA. Nie jest to obecnie główna ścieżka SSP, a wolimy być uczciwi co do dzisiejszego produktu, niż obiecywać integracje, których jeszcze nie dostarczyliśmy.

Jeśli zastanawiałeś się „czy powinienem używać portfela AA, czy multisigu sprzętowego?", uczciwa odpowiedź brzmi: rozwiązują nakładające się problemy z różnymi kompromisami — a właściwa odpowiedź zależy od tego, jakie łańcuchy cię interesują.

Uczciwe kompromisy

Abstrakcja konta to autentyczny krok naprzód, ale nie jest darmowa, a każdy, kto mówi ci inaczej, coś ci sprzedaje.

  • Koszty gasu są wyższe. Każda UserOperation wykonuje kod kontraktu w EntryPoint i w twoim kontrakcie portfela. To ściśle więcej obliczeń niż transakcja podpisana przez EOA, co oznacza więcej gasu. Bundling amortyzuje część tego, ale w przeliczeniu na akcję zazwyczaj zapłacisz więcej niż zapłaciłby EOA.
  • Odzyskiwanie jest tak dobre, jak dobry jest kontrakt odzyskiwania. Odzyskiwanie społecznościowe i schematy strażników to potężne funkcje — i jednocześnie nowa powierzchnia ataku. Błąd w logice odzyskiwania lub zbiór strażników, który okazuje się zbyt mały, mogą być tak samo katastrofalne jak utrata klucza EOA. Trzymaj się zaudytowanych implementacji portfeli.
  • Paymastery tworzą relację zaufania. „dApp płaci gas" brzmi świetnie, ale oznacza, że paymaster widzi twoje UserOperations i w zasadzie może odmówić sponsorowania konkretnych transakcji. To inny model zaufania niż „płacisz swój własny gas, nikt nie może cię zablokować".
  • Mniej sprawdzony w warunkach skali. EOA zabezpieczyły biliony dolarów przez ponad dekadę. ERC-4337 wszedł na żywo w marcu 2023 i wciąż dojrzewa. W przypadku cold storage o wysokiej wartości konserwatywna odpowiedź (portfel sprzętowy, multisig, zaudytowane kontrakty) wciąż ma dłuższy track record.

Pogłębianie tematu

Aby zobaczyć perspektywę SSP na to, jak działa bezpieczeństwo wielokluczowe bez smart kontraktów, przeczytaj Czym jest multisig 2-of-2?.

Po kanoniczną specyfikację techniczną — w tym dokładną strukturę UserOperation, interfejs EntryPoint i uzasadnienie każdej decyzji projektowej — sam EIP jest źródłem pierwotnym: https://eips.ethereum.org/EIPS/eip-4337.

Udostępnij ten artykuł