Autor: Shijunjun

Předmluva

Tento článek je rozdělen do dvou hlavních modulů:

V první polovině, počínaje prvním návrhem AA v roce 2015, budeme systematicky třídit hlavní obsah dosavadních návrhů EIP, doufáme, že vykopeme historii historických návrhů AA a komplexně zhodnotíme výhody a nevýhody každého plánu.

Ve druhé polovině se soustředíme na porovnání zpětné vazby na pokles trhu, kterému čelíme po navržení EIP4337, a poté provedeme hloubkovou analýzu EIP7702, která bude zahrnuta do další verze upgradu Etherea, jakmile bude tento návrh sloučen. zcela změní formulář žádosti na řetězu.

EIP-7702 má epochální změny, poslouchejte prosím podrobné vysvětlení pana Shishi

1. Abstraktní pozadí účtu

1.1 Význam abstrakce účtu

Vitalik, zakladatel Etherea, znovu aktualizoval plán rozvoje ETH na konci roku 2023, ale nastavení abstrakce účtu se nezměnilo. Dnešní mainstreamový model také vstoupil do další fáze z EIP-4337, VoluntaryEOA Conversion (dobrovolná konverze účtu EOA).

https://x.com/VitalikButerin/status/1741190491578810445

Více než rok od spuštění EIP4337 (na WalletConu v Denveru dne 1. března 2023 bylo oficiálně oznámeno, že základní kontrakt ERC-4337 navržený a implementovaný vývojáři Ethereum Foundation prošel auditem OpenZeppelin a je považován za oficiální spuštění uzlu historie).

Vždy byl široce uznáván uživateli, ale není široce používán V tak rozporuplném tržním prostředí byl vývoj EIP-7702 velmi pokročilý a dokonce bylo potvrzeno, že bude začleněn do příští aktualizace.

1.2 Aktuální tržní stav abstrakce účtu

Bez dalších řečí se podívejme na data.

Po roce a půl vývoje má EIP4337 pouze 12 milionů adres ve sbírce účtů hlavního proudu. Nejpřekvapivější je, že na mainnetu Ethereum je pouze 6 764 aktivních adres. Možná je něco špatně se statistickým rozměrem , ale minimálně Mezi počtem adres v EOA a CA je obrovský rozdíl Musíte vědět, že počet nezávislých adres na mainnetu Ethereum dosáhl 270 milionů (zdroj dat: https://etherscan.io/chart/. adresa).

Dá se říci, že EIP4337 nemá na hlavní síti žádný zásadní vývoj.

(Zdroj dat grafu: https://dune.com/niftytable/account-abstraction)

To však nevymazává podstatnou hodnotu AA, protože od samého počátku návrhu EIP4337 bylo předurčeno k tomu, že si nemohl dobře počínat tváří v tvář vážným problémům s dopřednou kompatibilitou na hlavní síti, takže s vývojem různých Řetězce vrstvy L2 Počet adres EIP4337, které jsou univerzálně zabudované v nativním AA, na L2 prudce vzrostl. Měsíční aktivní uživatelé řetězců báze a polygonu v červenci činili 1 milion a 3 miliony, což je docela působivé.

Není to tedy tak, že by návrh EIP4337 měl mnoho výhod. Současná situace je dána rozdíly mezi hlavní sítí a L2 .

2. Co je to abstrakce účtu?

Abstrakce účtu zní zmateně, ale ve skutečnosti v podstatě řeší problém oddělení vlastnických práv.

V architektuře EVM existují dva typy účtů (tj. virtuální počítač Ethereum), externí účet (EOA) a smluvní účet (smluvní účet) Vlastnická a podpisová práva k externímu účtu jsou ve skutečnosti drženy stejnou osobou jednotka. Osoba držící soukromý klíč má nejen „vlastnictví“ účtu, ale má také právo „podepsat a převést všechna aktiva“.

To je určeno transakční strukturou účtu Ethereum

Jak je vidět ze struktury na obrázku níže, ve standardních transakcích Etherea ve skutečnosti není žádná strana From. Na jakou adresu jsem konkrétně spotřeboval prostředky? Ve skutečnosti je adresa From dekódována prostřednictvím jejího parametru VRS (tj. podpisu uživatele).

Jedná se o asymetrické šifrování jako je ECDSA, jednosměrná prahová funkce a další pojmy. Stručně řečeno, kryptografie se používá k zajištění bezpečnosti fúze.

Hlavním účinkem EIP4337 je přidání pole Adresa odesílatele do pole transakce, čímž se oddělí soukromý klíč od provozované adresy.

Proč je tedy oddělení vlastnických práv tak důležité?

Protože design externího účtu (EOA) způsobí další problémy:

  1. Soukromé klíče se obtížně chrání: uživatelé ztratí své soukromé klíče (ztráta, útok hackerů, kryptografické crackování) znamená ztrátu veškerého majetku.

  2. Málo podpisových algoritmů: Nativní protokol může k ověřování transakcí používat pouze algoritmy ECDSA pro ověřování podpisů a podpisů.

  3. Vysoká autorita podpisu: Neexistuje žádný nativní vícenásobný podpis (vícenásobný podpis může spolupracovat pouze prostřednictvím inteligentních smluv) a jakoukoli operaci lze provést pomocí jediného podpisu.

  4. Transakční poplatky lze platit pouze prostřednictvím ETH a dávkové transakce nejsou podporovány.

  5. Únik soukromí při transakcích: Jednotné transakce usnadňují analýzu soukromých informací majitele účtu.

Omezení přitažlivosti ztěžují běžným uživatelům používání Etherea:

Za prvé, pro použití jakékoli aplikace na Ethereu musí uživatelé držet ether (a nést riziko kolísání cen etheru).

Za druhé, uživatelé se musí vypořádat se složitou nákladovou logikou Koncepty ceny plynu, limitu plynu a blokování transakcí (objednávka Nonce) jsou pro uživatele příliš složité.

A konečně, ačkoli se mnoho blockchainových peněženek nebo aplikací snaží zlepšit uživatelskou zkušenost pomocí optimalizace produktu, jejich skutečné účinky jsou minimální.

Způsobem, jak situaci prolomit, je proto implementace abstrakce účtu a oddělení vlastnictví (Vlastník) a podpisových práv (Signer), aby bylo možné výše uvedené problémy vyřešit jeden po druhém.

Ve skutečnosti existuje mnoho historických plánů a nakonec se sblíží do dvou tras.

3. Projděte si historii návrhů AA

Zdá se, že existuje mnoho návrhů EIP na řešení tohoto problému, ale v konečné analýze existují dvě základní myšlenky, a proto se otázky zvažované v každém EIP, který nebyl v minulosti schválen, sblížily do řešení současného plánu.

3.1 První cestou je změna adresy EOA na adresu CA

Již 15. listopadu 2015 kolem EIP-101 navrhl Vitalik novou strukturu využívající smlouvy jako účty. Změňte adresu pouze na kód a úložný prostor, změňte manipulační poplatek na podporu platby ERC20, změňte nativní token na podobný ERC20, abyste ušetřili zůstatek prostřednictvím předkompilované smlouvy (může mít funkce, jako je autorizace srážkové daně), zefektivněte pole transakce to only to, startgas, data a code.

Nyní se zdá, že jde jednoduše o změnu ve stylu Great Leap Forward, která výrazně změní základní design tak, aby každá adresa účtu měla svou vlastní logiku „kódu“ (ve skutečnosti přesně toho se nyní EIP-7702 snaží dosáhnout ).

Lze odvodit i další funkce, jako např

  1. Umožněte transakcím používat více šifrovacích algoritmů a způsob ověření podpisu může být určen interním kódem každé adresy.

  2. Je odolný vůči kvantovým útokům, protože kód má vlastnosti upgradu.

  3. Nechte Ethereum mít stejné funkční vlastnosti jako kontrakt ERC20 a základní efekt má srážkovou autorizaci, takže není třeba ztratit nativní měnu.

  4. Vylepšete prostor pro přizpůsobení účtu, kompatibilní s obnovou sociálních sítí, podporou sbt, získáváním klíčů atd.

Důvod nepokračování je také velmi jednoduchý. Je zřejmé, že tempo je příliš velké. Vzhledem k aktuálnímu problému s konfliktem transakčních hashů a bezpečnostním rizikům bylo odloženo z důvodu nedostatečného zvážení se stala jednou ze základních funkcí následujících EIP4337 a EIP7702.

Později se objevila řada EIP, která se snažila tuto logiku zlepšit.

EIP-859: Abstrakce účtu hlavního řetězce--2018-01-30

Při pokusu o vyřešení problému nasazení kódu je základní funkcí to, že pokud není nasazena smlouva strany transakce, parametry kódu připojené k transakci se použijí k provedení nasazení peněženky smlouvy. Za druhé je také navržen nový operační kód PAYGAS. Kromě placení plynu se stává i transakcí Oddělovač mezi ověřovací částí a prováděcí částí parametrů transakce.

Ačkoli to tehdy skončilo marně, nyní se stalo jednou z hlavních logik EIP7702 Každá transakce EIP7702 je kombinována se speciální strukturou transakce a může být doprovázena určitým kódem, takže adresa EOA má smluvní schopnosti. tuto transakci.

EIP-7702: Nastavte kód účtu EOA 2024-05-07

Toto je také hlavní EIP mechanismu popsaného dále v tomto článku EIP-7702 byl publikován společností Vitalik jako alternativa k EIP-3074 (2024-05-07). Proto bylo EIP-3074 opuštěno a EIP-7702 bylo rozhodnuto zahrnout do nadcházejícího hard forku ETH Prague/Electra (Pectra). Podrobnosti rozvedeme níže.

3.2 Druhým způsobem je nechat adresu EOA řídit adresu CA

EIP-3074: Přidejte operační kódy AUTH a AUTHCALL--2020-10-15

Přidejte dva nové OpCodesAUTH a AUTHCALL do EVM, což společnosti EOA umožní volat jiné smlouvy prostřednictvím těchto dvou smluv o autorizaci operačních kódů namísto identity EOA.

V kombinaci s níže uvedeným obrázkem může EOA v souhrnu odeslat podepsanou zprávu (transakci) na smlouvu, které důvěřuje (nazývaná Invoker), může použít operační kódy AUTH a AUTHCALL k nahrazení tohoto EOA a odeslání tohoto obchodu.

EIP-4337: Použití fondu transakční paměti k implementaci abstrakce účtu--2021-09-29

Stručně řečeno, jeho návrh byl inspirován MEV a jeho základní hodnotou je, že se lze zcela vyhnout změnám protokolu konsensuální vrstvy.

eip4337 navrhl nový transakční objekt UserOperation Uživatel odešle tento objekt do paměťového fondu a svazovači zabalí a doručí smlouvu v dávkách z dimenze miner, aby provedli transakci úroveň smlouvy pro provedení.

EIP-5189: Provozní abstraktní účty prostřednictvím indosantů – 29. 6. 2022

To lze považovat za optimalizaci logiky EIP4337 Tváří v tvář škodlivému Bundleru zavádí mechanismus schvalování finančních sankcí, aby se zabránilo útokům blokujícím DoS.

3.3 Další návrhy na podporu AA

EIP-2718: Balící obálky pro nové typy transakcí--2020-06-13

Toto je konečný návrh, který definuje nový typ transakce jako obálku pro nové typy transakcí v budoucnu.

Čistým efektem je, že když je zaveden nový typ transakce, používá se specifické kódování k rozlišení, o jaký typ transakce se jedná, takže musí být pouze zpětně kompatibilní, ale nikoli dopředně kompatibilní. Nejběžnějším příkladem je EIP1559, který rozlišuje transakční poplatky a používá nové kódy typu transakce, aniž by ovlivnil původní typ transakce.

EIP-3607: Znepřístupnění adres EOA pro smluvní nasazení--2021-06-10

Toto je doplňkové řešení na cestě AA, které zabraňuje konfliktům mezi adresami pro nasazení smlouvy a adresami EOA. Ten bude řídit způsob generování smlouvy, aby systém neumožnil nasazení kódu na adresu, která je již adresou EOA. Toto riziko je ve skutečnosti velmi malé Koneckonců, adresa Ethereum je dlouhá 160 bitů I když existuje způsob, jak použít soukromý klíč ke kolizi se soukromým klíčem zadané adresy smlouvy, bude to stále trvat rok. výpočetní výkon bitcoinu.

3.4 Jak porozumět procesu vývoje abstrakce účtu?

Nejprve musíte pochopit hodnotu převodu na CA

V podstatě je to skutečný efekt EIP-4337, může toho dosáhnout

Hlavním nedostatkem EIP-4337 je však to, že porušuje principy lidské motivace.

Zdá se, že je to lepší, ale upadlo to do nekonečného cyklu vývoje trhu Mnoho Dapps není kompatibilních, takže uživatelé nejsou ochotni používat adresy CA, a dokonce i používání CA má vyšší transakční náklady (běžné scénáře převodu budou také poplatky za transakce. double) a také příliš spoléhá na kompatibilitu samotného Dapp.

Proto nebyl dosud na mainnetu Ethereum popularizován.

Cena je pro uživatele nejdůležitějším kritériem a náklady je třeba snížit.

Ale ke skutečnému snížení GAS musí samotné Ethereum provést upgrade soft forku, upravit výpočet GAS nebo upravit spotřebu GAS v operačním kódu a dalších modulech. Protože je však vyžadován soft fork, proč nezohlednit přímo EIP-7702?

4. Komplexní analýza EIP-7702

4.1 Co je EIP-7702

Vyznačuje se novými typy transakcí, které umožňují EOA dočasně mít funkci chytré smlouvy v jedné transakci, čímž podporuje dávkové transakce, transakce bez plynu, vlastní správu povolení atd. v podnikání, aniž by bylo nutné zavádět nový operační kód EVM (ovlivňující dopřednou kompatibilitu).

Umožňuje uživatelům získat většinu schopností AA bez nasazení inteligentních kontraktů a může dokonce poskytnout třetí straně možnost iniciovat transakce jménem uživatelů. Nevyžaduje od uživatelů poskytnutí soukromých klíčů, pouze informace o autorizaci podpisu.

4.2 Struktura dat

Definoval nový typ transakce 0x04 TransactionPayload tohoto typu transakce je výsledkem serializace kódování RLP následujícího obsahu

  • rlp([

    chain_id, //ID řetězce, používané k zabránění útokům opakovaného přehrávání.

    nonce, // Čítač transakcí pro zajištění jedinečnosti transakce.

    max_priority_fee_per_gas, //1559 transakční poplatek

    max_fee_per_gas, //1559 transakční poplatek

    gas_limit,

    cíl, //cílová adresa transakce

    hodnota,

    data,

    access_list, //Access list, používaný pro optimalizaci plynu v EIP-2929.

    autorizační_seznam,

    signature_y_parity, // 3 parametry podpisu, používané k ověření podpisu transakce.

    podpis_r,

    podpis_s

    ])

Důležité je, že je přidán objekt autorizačního seznamu pro uložení kódu, který chce podepisující provést ve svém EOA. Když uživatel podepíše transakci, podepíše také kód smlouvy, který má být proveden, existuje jako dvourozměrný seznam. označující, že informace o více operacích lze uložit v dávkách, proveďte dávkové operace.

  • autorizační_seznam = [[chain_id, address, nonce, y_parity, r, s], ...]

 

4.3 Životní cyklus transakce

4.3.1 Fáze ověřování

Na začátku provádění transakce pro každý [chain_id, address, nonce, y_parity, r, s] n-tice seznamu autorizací:

  1. Použijte ecrecover k obnovení adresy podepisujícího z podpisů r a s (všimněte si, že jde o mechanismus samotného Etherea, takže tento EIP nemění algoritmus podpisu). autorita = ecrecover(keccak(MAGIC || rlp([chain_id, adresa, nonce])), y_parity, r, s] (Podobně jako u předchozího dešifrování podpisu pro získání adresy od, zde je získán místní podpis adresa pro tento seznam)

  2. Ověřte ID řetězu (anti-fork chain replay).

  3. Ověřte, zda je kód podepisujícího oprávnění prázdný nebo zda byl delegován (ověřte, zda je transakce platnou transakcí 7702 a mechanismus delegování bude použit k provedení transakce později).

  4. Ověřte neexistenci podepisovatele oprávnění (abyste zabránili přehrání podpisu autority).

  5. Nastavte kód autoritního podpisu na adresu 0xef0100 || (používá se k obejití antikolizní politiky EIP3607)

  6. Zvyšte neexistenci osoby podepisující oprávnění (aby se zabránilo přehrání částečného podpisu).

  7. Přidejte účet autoritního podpisu do seznamu navštívených adres (převeďte horké adresy, abyste snížili poplatky za plyn za skladování dotazů)

4.3.2 Fáze operace provedení

Kde mají být provedeny smluvní kód a provozní pokyny?

"Nová" verze pouze mění chování týkající se nasazení kódu.

Místo nastavení kódu účtu na kód_smluvy získá adresu kódu ze seznamu autorizací a nastaví tento kód jako kód účtu.

Když je tedy potřeba provést autorizační kód, kód se načte z adresy zadané v poli adresy seznamu autorizací a provede se v kontextu účtu podepisujícího.

To znamená, že kód smlouvy uživatele je ve skutečnosti uložen na konkrétní adrese v řetězci, nikoli přímo součástí transakce.

Operační instrukce a související parametry jsou uloženy v datovém poli transakčního zatížení.

4.4 Jaká je hodnota EIP-7702?

Dojde ke změnám v celém odkazu peněženky Web3 a také se dramaticky změní uživatelská zkušenost, protože běžné transakce iniciované EOA mohou také provádět různé logiky podobné smlouvám, jako jsou dávkové převody. U scénářů CeFi to ovlivní identifikaci transakce a poplatky za výběr výběrů.

Díky jejímu vzniku bylo porušeno mnoho předchozích stereotypů, jako např.

  1. Prolomí invariant, že zůstatek na účtu lze snížit pouze transakcemi pocházejícími z tohoto účtu.

  2. Prolomí invariant, že se nonce EOA zvýší o 1 po zahájení provádění transakce (možná zvýšení více jednotek současně).

  3. Logika ochrany srovnání mezi tx.origin a msg.sender je narušena a mnoho minulých smluv je ohroženo.

  4. Narušuje status quo, že EOA sama nemůže vydávat události. Možná bude nutné věnovat pozornost identifikaci a sledování některých on-chain událostí.

  5. Narušuje status quo, že adresy EOA musí uspět při přijímání ERC20, 721, 1155 a dalších aktiv (může selhat kvůli mechanismu zpětného volání)

4.5 Srovnání mezi EIP-7702 a EIP-4337

1. Výhody EIP-7702

  • Plyn je nižší, protože není potřeba procházet vstupním modulem, což snižuje operace na řetězu.

  • Náklady na migraci uživatelů jsou nižší a není třeba předem nasazovat on-chain smlouvy jako předmět.

  • Ve srovnání s Eip4337 dojde také k provádění delegování kódu a budou existovat také dvě metody:

Plná delegace

  • Úplné delegování znamená delegování všech oprávnění pro operaci na konkrétní adresu. Uživatelé mohou například delegovat práva správy všech tokenů ERC-20 na adresu smart contract, takže tento smart kontrakt může provádět všechny související operace jménem uživatele.

Chráněná delegace

  • Chráněné delegování se týká přidání některých omezení a ochranných opatření během procesu delegování, aby byla zajištěna bezpečnost a ovladatelnost operace delegování.

  • Uživatelé mohou například na smart kontrakt delegovat správu pouze některých tokenů ERC-20 nebo nastavit určitá omezení (jako je maximální denní útrata ve výši 1 % z celkového zůstatku).

2. Nevýhody EIP-7702

Jeho základním nedostatkem je, že se jedná o upgrade soft forku, jehož propagaci vyžaduje souhlas všech, a změny jsou obrovské, což bude mít široký dopad na ekologii řetězce Na základě počátečního hodnocení čtrnáctého krále existují následující výzvy, ale výzvy jsou také tržními příležitostmi:

  1. Míra volnosti je extrémně vysoká a je obtížné ji kontrolovat. Uživatelé budou potřebovat spolehlivější peněženky, aby poskytovali bezpečnostní ochranu.

  2. Původní struktura se příliš změnila, i když se vyznačuje různými typy transakcí, mnoho infrastruktur, zejména neměnných kontraktů v řetězci, nelze přímo přizpůsobit.

  3. Možnosti smlouvy jsou poskytovány pro adresy EOA, ale odpovídající úložný prostor nelze zachovat.

  4. Náklady na samostatnou transakci jsou o něco vyšší, protože se výrazně zvýší část Calldata. Odhadovaná celková cena hovoru bude 16 (plyn) * 15 (bajtů) = 240 (plyn) náklady na data volání plus náklady na EIP-. 3860 2 * 15 = 30 plus přibližné náklady za běh 150. Proto jen příprava účtu, i když nic neuděláte, zvýší plyn o 500.

  5. "Pokud příjemce podepíše kód bez funkce příjmu, může odesílatel čelit DoS při pokusu o odeslání aktiva." Problém je ve skutečnosti v tom, že EOA A podepsal něco, co neměl - soubor, který lze znovu přehrát, s nesprávně nastavenou implementací (žádná metoda příjmu ()).

  6. Logika výběru v řetězci může být nekonzistentní Pokud například při převodu tokenů ERC-20 má účet příjemce kód, smlouva o tokenu bude pro účet příjemce volat onERC20Received. Pokud onERC20Received vrátí nebo vrátí nesprávnou hodnotu, přenos tokenu se vrátí zpět.

  7. Také, pokud EOA může vydávat události, nastanou nějaké problémy? Některá infrastruktura může vyžadovat pozornost.

Toto jsou jen některé nedostatky, které Shishijun shrnul na základě aktuálního obsahu návrhu EIP7702 a příslušných diskusí na oficiálním fóru. Nakonec je třeba jej plně analyzovat na základě konečného implementačního kódu.

Odkaz je následující:

  • https://eips.ethereum.org/EIPS/eip-7702

    https://ethereum-magicians.org/t/eip-set-eoa-account-code-for-one-transaction/19923

    https://github.com/ethereum/EIPs/pull/8527

5. Shrnutí plného textu

Tento článek se zdá být dlouhý, ale ve skutečnosti má textový obsah jen asi 6 000 slov. Mnoho předchozích interpretací EIP, které jsou v něm obsaženy, lze rozšířit pomocí odkazů v článku, takže se k tomu nebudu vracet.

V současné době lze abstrakci účtu skutečně umístit pouze do šestého modulu, který má vše opravit, to znamená, že je konečně implementován Nyní, když se pokrok EIP7702 výrazně zrychlil, přinese další výzvy pro zabezpečení systému. Dá se očekávat, že si to nakonec uvědomí Koneckonců, rušivé události, jako je fúze Etherea a modifikace konsenzuálního algoritmu, mohou nastat, takže co nové typy transakcí?

Tentokrát však došlo k příliš velkému podvratu, porušení nemožných skrytých pravidel na více řetězcích a porušení aplikační logiky většiny Dapps. To však pevně obsadilo hlavní bod, kterým je, že náklady pro uživatele jsou nižší. Ve srovnání s téměř dvojnásobnými transakčními náklady EIP4337.

Samotný uživatel je stále adresou EOA a řídí a používá logiku CA pouze v případě potřeby, takže náklady na držení jsou nízké. Před prováděním operací není nutné konvertovat identitu CA v řetězci, což znamená, že uživatelé se nemusí registrovat.

Uživatelé mohou snadno použít EOA k dosažení více transakcí paralelně, jako je autorizace zadržování a provádění zadržování v jedné, což snižuje transakční náklady pro uživatele pro Dapps, zejména pro ty, kteří vyžadují řízení na podnikové úrovni v rámci projektu, jako jsou burzy , provedli rušivé optimalizace Jakmile je dávková agregace realizována v původní ekologii, mohou být základní směnné náklady během okamžiku sníženy o více než polovinu, z čehož mohou mít nakonec prospěch uživatelé.

Proto, i když se hodně změnil, rozměr nákladů si zaslouží výzkum a přizpůsobení všemi Dapps, protože tentokrát musí být uživatelé na straně EIP7702.