本文整體分兩大模塊:
上半段,將從 2015 年起的首個 AA 提案出發(fā),系統(tǒng)整理目前為止的 Eip 提案主要內(nèi)容,期望由史出發(fā)挖掘 AA 歷史提案的歷程,并綜合性評價各方案優(yōu)缺點。
下半段,著重對比 EIP4337 提出之后面臨的市場低迷反饋,再深入分析如今即將被納入下個版本以太坊升級的 EIP7702,此提案一旦合并,將全方位改變鏈上應用形態(tài)。
EIP-7702 具有劃時代的改變,且聽十四君細細講來
1、賬號抽象的背景
1.1 賬號抽象的意義定位
以太坊創(chuàng)始人 vitalik 在 2023 年年底再次更新 ETH 發(fā)展路線圖,但其中針對賬號抽象的設定,并未改過。如今的主流模式也正是從 EIP-4337,步入到下一個階段 VoluntaryEOA Conversion(自愿轉(zhuǎn)換 EOA 賬號)。
By popular demand, an updated roadmap diagram for 2023! pic.twitter.com/oxo58A2KuG
— vitalik.eth (@VitalikButerin) December 30, 2023
在 EIP4337 推出一年多以來(在 2023.3.1 號丹佛的 WalletCon 上,官宣由以太坊基金會開發(fā)人員設計實現(xiàn)的 ERC-4337 的核心合約已經(jīng)通過了 OpenZeppelin 的審計,被認為是正式推出的歷史節(jié)點)。
始終是只得到用戶的廣泛認可,但并不被廣泛使用,如此矛盾的市場環(huán)境下,讓 EIP-7702 的進度被大幅提前,乃至已經(jīng)被確認將在下一次升級被合并其中。
1.2 賬號抽象的市場現(xiàn)狀
無需多言,直接看數(shù)據(jù)吧。
經(jīng)過一年半的發(fā)展,EIP4337 在主流鏈賬號的集合下,僅僅有 1200W 的地址數(shù),其中最為讓人驚訝的是在以太坊主網(wǎng)上,活躍地址僅僅 6,764 個,或許統(tǒng)計維度有所問題,但至少與 EOA 與 CA 的地址數(shù)相差甚廣,要知道以太坊主網(wǎng)上獨立地址數(shù)已經(jīng)達到 2 億 7 千萬(數(shù)據(jù)源于:https://etherscan.io/chart/address)。
可以說在主網(wǎng)上 EIP4337 是毫無實質(zhì)性發(fā)展。


(圖表數(shù)據(jù)來源:https://dune.com/niftytable/account-abstraction)
不過,這并不磨滅 AA 的本質(zhì)價值,因為他從一開始的 EIP4337 的設計就注定了,他面對主網(wǎng)嚴重的往前兼容性問題上無法做好,所以伴隨著各類 L2 層鏈的普遍嵌入原生 AA,EIP4337 的地址數(shù)在 L2 上獲得爆發(fā),其中 base 和 polygon 鏈的 7 月月度活躍用戶分別是 100W 和 300W,倒也頗為可觀。
所以,并不是 EIP4337 設計錯了,他有很多優(yōu)點,我們一會會系統(tǒng)的總結(jié),如今的現(xiàn)狀是源于主網(wǎng)與 L2 之間的差異,他們需要用各自適合的方案。
2、賬號抽象是什么?
賬戶抽象,聽著很費解,但其實本質(zhì)解決的是產(chǎn)權(quán)分離的問題。
EVM 架構(gòu)(即以太坊虛擬機)中有兩種賬戶,外部賬戶(EOA)和合約賬戶(Contract Account),外部賬戶的所有權(quán)和簽名權(quán)其實上是同一個體單位持有的。持有私鑰的人不只擁有這個賬戶的「所有權(quán)」,同時還有權(quán)利「簽名轉(zhuǎn)移所有資產(chǎn)」。
這是由以太坊賬號交易結(jié)構(gòu)決定的
從下圖的結(jié)構(gòu)中可以發(fā)現(xiàn),其實以太坊的標準交易是沒有 From 方的,那么我做了一次資金轉(zhuǎn)賬,具體消費的是什么地址上的資金?實際是是通過其 VRS 參數(shù)(即用戶簽名)反解析出 From 地址的。
這里涉及到 ECDSA 等非對稱加密,單向門限函數(shù)等概念,咱們不做展開,總之這里是由密碼學來保障安全性,當然這也就造成了如今的產(chǎn)權(quán)合并的 EOA 地址窘境。
而 EIP4337 的核心效果,就是在交易字段里增加了 Sender Address 字段,從而能讓私鑰與被操作的地址分離開。


那為什么產(chǎn)權(quán)分離這么重要呢?
因為外部賬戶(EOA)設計會衍伸出更多的問題:
- 私鑰難保護:用戶失去私鑰(遺失、黑客攻擊、密碼學上的被破解)意味著地失去所有資產(chǎn)。
- 簽名算法少:原生協(xié)議在驗證交易上只能使用 ECDSA 簽名和驗簽算法。
- 簽名權(quán)限高:無原生多簽(多簽只能通過智能合約實現(xiàn)協(xié)作),單簽即可執(zhí)行任意操作。
- 交易手續(xù)費只能通過 ETH 支付,并不支持批量交易。
- 交易隱私泄露:一對一交易容易分析賬戶持有者的隱私信息。
上訴的約束讓普通用戶很難使用以太坊:
首先,使用以太坊上的任何應用,用戶都必須持有以太(并承擔以太價格波動的風險)。
其次,用戶需要處理復雜的費用邏輯,Gas price、Gas limit、事務阻塞(Nonce 順序)這些概念對用戶來說過于復雜。
最后,雖然許多區(qū)塊鏈錢包或應用試圖通過產(chǎn)品優(yōu)化提高用戶體驗,但它們的實際效果甚微。
所以破局之道在于實現(xiàn)賬戶抽象,將所有權(quán)(Owner)和簽名權(quán)(Signer)解耦(Decoupling),從而才能逐個解決上述問題。
其實歷史的方案有很多,最終都會匯聚到兩種路線
3、AA 歷史提案脈絡梳理


問題的解法看似有很多的 EIP 提案,但歸根究底,就是兩種核心思路,所以過往每一個沒有被通過的 EIP,其考慮的問題也就匯聚成了現(xiàn)在方案的破局之道。
3.1 第一種路線是讓 EOA 地址變?yōu)?CA 地址
早在 2015 年 11 月 15 日,圍繞 EIP-101,Vitalik 就提出以合約作為賬戶的新結(jié)構(gòu)。將地址改為只有代碼和存儲空間,改變手續(xù)費支持由 ERC20 支付,通過預編譯合約將原生代幣改為類 ERC20 來存余額(可具備代扣授權(quán)等功能),將交易字段精簡到只有 to、startgas、data 和 code。
現(xiàn)在看來,簡直是大躍進式變革,會大幅改動底層設計,讓每個賬戶地址都擁有自己的「代碼」邏輯(其實也正是現(xiàn)在 EIP-7702 要做到的效果)。
還能衍生出其他的功能,比如
- 讓交易使用更多加密算法,可以由各地址內(nèi)部 Code 來指定驗簽鑒權(quán)方法
- 具備抗量子攻擊特性,因為代碼具備升級特性。
- 讓以太幣具備與 ERC20 合約一致的功能特性,核心效果有了代扣授權(quán),從而無需原生幣的損耗
- 提升賬戶的自定義空間,兼容社交恢復、sbt 支持、密鑰找回等
沒有繼續(xù)推進的原因也很簡單,顯然是步伐太大,對于當前交易哈希沖突問題,安全性隱患考慮不周所以一直擱置,但每個優(yōu)點的理念都成為后續(xù) EIP4337 以及 EIP7702 的核心功能之一。
后來還有一系列 EIP 試圖完善這種邏輯
EIP-859:主鏈賬戶抽象 –2018-01-30
試圖解決 Code 的部署問題,核心作用是,如果出現(xiàn)了若交易方合約未部署,則使用交易附帶 code 參數(shù)執(zhí)行合約錢包部署,其次還提出新的 PAYGAS 操作碼,除了支付 gas 外,也成為一筆交易的參數(shù)中驗證部分與執(zhí)行部分的分隔符。
雖然當時無疾而終,但是這也成了現(xiàn)在 EIP7702 的核心邏輯之一,EIP7702 的每一筆交易結(jié)合特殊的交易結(jié)構(gòu),可以附帶一定的代碼,從而在本次交易中讓 EOA 地址擁有合約能力。
EIP-7702:設置 EOA 賬戶代碼 2024-05-07
這也是本文后續(xù)討論機制的核心 EIP,由 Vitalik 發(fā)表了 EIP-7702 作為 EIP-3074 的替代方案(2024-05-07)。因此 EIP-3074 被棄用,EIP-7702 被確定在即將到來的 ETH Prague/Electra(Pectra)硬分叉中納入,具體內(nèi)容咱們在下文展開。
3.2 第二種路線是讓 EOA 地址驅(qū)動 CA 地址
EIP-3074:增加 AUTH 和 AUTHCALL 操作碼 –2020-10-15
在 EVM 中加入兩個新的 OpCodes AUTH 和 AUTHCALL ,讓 EOA 能透過這兩個 opcode 授權(quán)合約代替 EOA 的身份去呼叫其他合約。
結(jié)合下圖,概括來說一個 EOA 能將一則已簽的消息(交易)送至自己信任的合約(稱作 Invoker)上,此 Invoker 合約可以利用 AUTH 和 AUTHCALL 操作碼來代替這個 EOA 送出這筆交易。
EIP-4337:用交易內(nèi)存池實現(xiàn)賬戶抽象 –2021-09-29
總之,他受到 MEV 的啟發(fā)進行設計,其核心價值是可以完全避免共識層協(xié)議更改。
eip4337 提出新的事務對象UserOperation
,用戶將此對象發(fā)送到內(nèi)存池中,由bundlers
從礦工維度批量打包交付合約執(zhí)行交易事務,本質(zhì)上是把底層的交易與帳戶運作拉到合約層面執(zhí)行。
EIP-5189:通過背書人來操作抽象賬戶—2022-06-29
這算是優(yōu)化了 EIP4337 的邏輯,是面對惡意的Bundler
通過建立資金罰款背書 endorser 的機制來防止 Dos 阻塞攻擊。
3.3 其他用于支持 AA 的提案
EIP-2718:新交易類型的包裝信封 –2020-06-13
這倒是一個已經(jīng) Final 的提案,他定義一個新的交易類型,作為未來新增的交易類型的信封。
最終效果是,當引入新的交易類型時, 通過特定編碼來區(qū)分這是哪一種交易,讓其只需有向后兼容性,而無需往前兼容。最常見的例子就是 EIP1559 了,他區(qū)分了交易的手續(xù)費,使用了新的交易類型編碼,又不影響最初的 legacy 的交易類型。
EIP-3607:讓EOA
地址不可部署合約 –2021-06-10
這是是 AA 路徑上的補充方案,用于防止合約部署地址與 EOA 地址沖突的問題。他會控制合約生成方法,讓系統(tǒng)不允許將代碼部署到已經(jīng)是 EOA 地址的地址上。這個風險其實很小,畢竟以太坊地址有 160 位長,雖然存在用私鑰碰撞出指定合約地址私鑰的方法,但以比特幣全算力投入估計,也還需要一年的時間。
3.4 如何理解賬號抽象發(fā)展歷程?
首先需要理解轉(zhuǎn)為 CA 后的價值
基本上也就是 EIP-4337 的實際效果,他可以實現(xiàn)


但是,EIP-4337 的核心缺點是違背人性動機原則。
他看起來是更好了,但是陷入了一種市場發(fā)展的死循環(huán),Dapp 很多還不兼容,那用戶就不樂意使用 CA 地址,甚至使用 CA 有更高的交易成本(普通轉(zhuǎn)賬場景,也會交易費用翻倍),也太依賴于 Dapp 本身的兼容性。
所以在以太坊主網(wǎng)上迄今為止始終沒有得到普及。
成本就是用戶最重要衡量的標準,必須降低成本。
但是要真正降低 GAS,就必須以太坊本身做軟分叉升級,修改 GAS 計算或者修改操作碼的 GAS 消耗等模塊,然而既然要軟分叉,那何不直接考慮 EIP-7702 呢?
4、全面解析 EIP-7702
4.1 EIP-7702 是什么
它通過新的交易類型來區(qū)分,可以允許 EOA 在單筆交易中臨時具備智能合約的功能,進而支持業(yè)務上進行批量交易、無 Gas 交易和自定義權(quán)限管理等,且無需引入新的 EVM opCode(影響往前兼容性)。
他可以讓用戶在不部署智能合約的情況下,就可以獲得大部分 AA 的能力,甚至可以提供第三方代用戶發(fā)起交易的能力,且不需要用戶提供私鑰,只需簽名授權(quán)的信息。
4.2 數(shù)據(jù)結(jié)構(gòu)
他定義了新的交易類型 0x04,該交易類型的 TransactionPayload 是下列內(nèi)容的 RLP 編碼序列化結(jié)果
rlp([ chain_id, // 鏈 ID,用于防止重放攻擊。 nonce, // 交易計數(shù)器,確保交易唯一性。 max_priority_fee_per_gas, //1559 交易費用 max_fee_per_gas, //1559 交易費用 gas_limit, destination, // 交易目標地址 value, data, access_list, // 訪問列表,用于 EIP-2929 中的 Gas 優(yōu)化。 authorization_list, signature_y_parity, // 3 個簽名參數(shù),用于驗證交易簽名。 signature_r, signature_s ])
重要的是其中新增了 authorization_list 對象,存儲簽名者希望在其 EOA 中執(zhí)行的代碼,用戶簽署交易的同時也簽署要執(zhí)行的合約代碼,他作為二維列表存在,說明可以批量存放多個操作信息,執(zhí)行批量操作。
authorization_list = [[chain_id, address, nonce, y_parity, r, s], ...]
4.3 交易生命周期
4.3.1 驗證階段
在執(zhí)行交易的開始階段,對于每個 authorization_list 的 [chain_id, address, nonce, y_parity, r, s]
元組:
- 從簽名 r、s 中采用 ecrecover 恢復出簽名者地址(注意這是以太坊本身的機制,所以該 EIP 沒有改變簽名算法)。
authority = ecrecover(keccak(MAGIC || rlp([chain_id, address, nonce])), y_parity, r, s]
(與之前解簽名得出 from 地址類似,這里得出的是針對這個 list 的局部簽名地址) - 驗證鏈 ID(防分叉鏈重放)。
- 驗證
authority
簽名者的代碼是否為空或已經(jīng)委托(驗證交易是否屬于有效 7702 交易,后續(xù)會通過 delegation 機制去代理執(zhí)行交易)。 - 驗證
authority
簽名者的 nonce(防authority
的簽名重放)。 - 設置
authority
簽名者的代碼為0xef0100 || address
(用于繞過 EIP3607 防碰撞策略的) - 增加
authority
簽名者的 nonce(防局部簽名重放)。 - 將
authority
簽名者賬戶添加到已訪問地址列表中(轉(zhuǎn)熱地址,降低查詢存儲的 gas 費)
4.3.2 執(zhí)行操作階段
要執(zhí)行的合約代碼以及操作指令在哪里?
「新」版本僅更改了代碼部署方面的行為。
它不再將帳戶代碼設置為contract_code
,而是從authorization_list
中檢索代碼address
并將該代碼設置為帳戶代碼。
所以,當需要執(zhí)行授權(quán)代碼時,從authorization_list
的 address
字段指定的地址加載代碼,并在簽名者賬戶的上下文中執(zhí)行。
這意味著用戶的合約代碼實際上是存儲在鏈上的某個特定地址,而不是直接包含在交易中。
而操作指令和相關參數(shù)則存儲在交易負載的data
字段中。
4.4 EIP-7702 有什么價值?
他對于 Web3 錢包的全鏈路都會有變化,用戶體驗也因此巨變,因為 EOA 發(fā)起的普通交易也可以類似合約執(zhí)行多種邏輯,比如批量 transfer。對于 CeFi 場景會影響交易鑒別,也影響沖提歸集手續(xù)費
由于其出現(xiàn),打破了很多曾經(jīng)的定勢,比如:
- 打破了賬戶余額只能因源自該賬戶的交易而減少的不變量。
- 打破了交易執(zhí)行開始后 EOA nonce 增加 1 的不變量(可能同時增加多個)。
- 打破了 tx.origin 和 msg.sender 兩個比對的防護邏輯,很多過往的合約有風險了。
- 打破了 EOA 本身無法發(fā)出事件的現(xiàn)狀,對部分鏈上事件識別監(jiān)聽可能需要注意。
- 打破了 EOA 地址接受 ERC20、721、1155 等資產(chǎn)必然成功的現(xiàn)狀(因為回調(diào)機制,可能失敗)
4.5 對比 EIP-7702 和 EIP-4337
1. EIP-7702 的優(yōu)勢
- gas 更低,因為無需經(jīng)過 entrypoint 模塊,減少鏈上操作。
- 用戶遷移成本更低,無需提前部署鏈上合約做為主體
- 與 Eip4337 相比,同樣會有代碼委托執(zhí)行,也同樣會有兩種方式:
完全委托(Full Delegation)
- 完全委托是指將某個操作的全部權(quán)限委托給一個特定地址。例如,用戶可以將所有 ERC-20 代幣的管理權(quán)限委托給一個智能合約地址,從而使得這個智能合約可以代表用戶執(zhí)行所有相關操作。
受保護的委托(Protected Delegation)
- 受保護的委托是指在委托的過程中增加一些限制和保護措施,確保委托操作的安全性和可控性。
- 例如,用戶可以僅將部分 ERC-20 代幣的管理權(quán)限委托給一個智能合約,或者設置一些限制條件(如每天最多花費總余額的 1%)。
2. EIP-7702 的缺點
他的核心缺點是屬于軟分叉升級,需要大家共識推動,并且改動巨大,對鏈上生態(tài)影響太廣,十四君初步評估下來,就有以下挑戰(zhàn),但是挑戰(zhàn)也就是市場的機會:
- 自由度極高,難以被審計,用戶會更需求靠譜的錢包承擔安全防護的保護。
- 對原架構(gòu)變化過大,雖然用不同交易類型區(qū)分,但是很多基建尤其鏈上不可改合約都無法直接適配。
- 對 EOA 地址提供了合約能力,但對應的存儲空間無法留存。
- 單獨交易的成本稍微提高,因為會大量增加 Calldata 的部分,估算調(diào)用的總成本將是
16(gas) * 15(字節(jié)) = 240
(gas)calldata 成本,加上 EIP-3860 的成本2 * 15 = 30
,再加上大約 的運行時成本150
。因此,僅僅準備賬戶哪怕什么都不做,就要增加 500 的 Gas 了。 - 「如果接收者簽署了沒有接收功能的代碼,發(fā)送者在嘗試發(fā)送資產(chǎn)時可能會面臨 DoS。」見案例。這個問題其實是 EOA A 簽署了它不應該簽署的東西——一個設置了錯誤實現(xiàn)(沒有
receive()
)的可重放文件。 - 鏈上 沖提邏輯可能不一致,比如當轉(zhuǎn)移 ERC-20 代幣時,如果接收方賬戶有代碼,則代幣合約將調(diào)用
onERC20Received
接收方賬戶。如果onERC20Received
還原或返回錯誤的值,則令牌傳輸將還原。 - 另外如果 EOA 可以發(fā)出事件,會不會有什么問題?一些基礎設施可能需要注意。
這些還只是十四君基于目前 EIP7702 提案內(nèi)容,以及對應的官方論壇討論總結(jié)出的一些缺點,最終還需要基于最終的實現(xiàn)代碼才能分析完全。
參考如下:
https://eips.ethereum.org/EIPS/eip-7702https://ethereum-magicians.org/t/eip-set-eoa-account-code-for-one-transaction/19923https://github.com/ethereum/EIPs/pull/8527
5、 全文總結(jié)
本文看似篇幅宏大,實際上文字內(nèi)容只有 6k 余字,中間涉及的很多往期 EIP 解讀,都在文中鏈接可以拓展,我就不進而追溯了。
目前看,賬戶抽象,確實只能放在第六模塊,即修復一切,也即最后在推行,如今大幅加快 EIP7702 的進度,更多帶來的還是對系統(tǒng)安全性的挑戰(zhàn),可以預料到,最終他會實現(xiàn),畢竟以太坊合并,修改共識算法這樣的顛覆性事件都可以發(fā)生,又談何區(qū)區(qū)新的交易類型呢。
但是這一次顛覆的內(nèi)容太多了,打破多個鏈上不可能的潛規(guī)則,也打破了大多數(shù) Dapp 的應用邏輯,但是他死死的占住了最核心的一點,就是用戶的成本更低了!對比 EIP4337 近乎翻倍的交易成本而言。
用戶本身還是 EOA 地址,只是在需要的時候才去驅(qū)動和使用 CA 邏輯,所以持有成本低了。無需先轉(zhuǎn)換出鏈上 CA 身份再做操作,等于用戶無需注冊了。
用戶可以輕松用 EOA 做到多交易并行,比如授權(quán)代扣和執(zhí)行代扣兩種合一,這樣對用戶交易成本本身就低了,而對于 Dapp 而言,尤其是需要做鏈上企業(yè)級管理的項目方,比如交易所等更是顛覆性的優(yōu)化,批量歸集一旦原生態(tài)實現(xiàn),基本交易所成本可以瞬間減少一半以上,最終也可以惠及用戶。
所以,雖然他改變了很多,但占據(jù)成本這個維度,就值得全部 Dapp 去研究和適配,因為這一次,用戶必然站在了 EIP7702 的一邊。