EIP-7702將重塑以太坊生態 帳戶抽象進入新紀元

深入解讀以太坊帳戶抽象賽道的過去與未來

前言

本文分爲兩大部分:

第一部分從2015年的首個AA提案出發,系統梳理了目前爲止的主要EIP提案內容,探討AA歷史提案的發展歷程,並對各方案進行綜合評價。

第二部分重點對比EIP4337推出後面臨的市場反應,以及深入分析即將納入以太坊下一版本升級的EIP7702。這一提案一旦合並,將徹底改變鏈上應用形態。

EIP-7702具有劃時代意義,讓我們一起來深入了解。

深入解讀以太坊帳號抽象賽道的過去與未來

1. 帳戶抽象的背景

1.1 帳戶抽象的意義定位

以太坊創始人Vitalik在2023年底再次更新ETH發展路線圖,但對帳戶抽象的定位並未改變。當前主流模式正從EIP-4337過渡到下一階段的"自願轉換EOA帳戶"。

1.2 帳戶抽象的市場現狀

經過一年半的發展,EIP4337在主流鏈上的總地址數僅1200萬,其中以太坊主網上的活躍地址僅6,764個,與EOA和CA地址數相差甚遠。以太坊主網獨立地址數已達2.7億,可以說EIP4337在主網上發展緩慢。

不過這並不影響AA的本質價值。EIP4337的設計注定了其在主網上難以很好地向前兼容。隨着各類L2鏈普遍嵌入原生AA,EIP4337的地址數在L2上獲得爆發,如Base和Polygon鏈的7月月活分別達到100萬和300萬,表現不俗。

因此,EIP4337的設計並非錯誤,它有諸多優點。當前現狀源於主網與L2之間的差異,它們需要各自適合的方案。

深入解讀以太坊帳號抽象賽道的過去與未來

2. 什麼是帳戶抽象?

帳戶抽象本質上是解決產權分離的問題。

EVM架構中有兩種帳戶類型:外部帳戶(EOA)和合約帳戶(CA)。在外部帳戶中,所有權和籤名權由同一實體持有。擁有私鑰的人不僅擁有帳戶"所有權",還有權"籤名轉移所有資產"。

這是由以太坊帳戶交易結構決定的。從交易結構可以看出,標準交易實際上沒有From字段。資金轉帳時,具體消費的地址是通過VRS參數(即用戶籤名)反向解析得出的。

而EIP4337的核心效果,就是在交易字段中增加了Sender Address,從而實現私鑰與被操作地址的分離。

產權分離如此重要的原因在於,外部帳戶(EOA)設計會衍生出諸多問題:

  1. 私鑰難以保護:丟失私鑰意味着失去所有資產。

  2. 籤名算法單一:原生協議驗證交易只能使用ECDSA算法。

  3. 籤名權限過高:無原生多籤功能,單籤即可執行任意操作。

  4. 交易手續費只能用ETH支付,不支持批量交易。

  5. 交易隱私容易泄露:一對一交易易分析帳戶持有者信息。

這些限制讓普通用戶難以使用以太坊:

首先,用戶必須持有以太幣並承擔價格波動風險。

其次,用戶需要處理復雜的費用邏輯,如Gas price、Gas limit、交易阻塞等概念。

最後,區塊鏈錢包或應用試圖通過產品優化提升用戶體驗,但效果有限。

因此,解決方案在於實現帳戶抽象,將所有權(Owner)和籤名權(Signer)解耦,從而逐步解決上述問題。

歷史上有多種方案,最終歸結爲兩條路線。

深入解讀以太坊帳號抽象賽道的過去與未來

3. AA歷史提案脈絡梳理

問題的解決方案看似有很多EIP提案,但歸根結底就是兩種核心思路。每個未通過的EIP考慮的問題,都匯聚成了現有方案的突破點。

3.1 第一種路線:將EOA地址變爲CA地址

早在2015年11月,Vitalik就在EIP-101中提出以合約作爲帳戶的新結構。將地址改爲只有代碼和存儲空間,支持ERC20支付手續費,通過預編譯合約將原生代幣改爲類ERC20存儲餘額,將交易字段精簡爲to、startgas、data和code。

這一方案可謂大躍進式變革,會大幅改動底層設計,讓每個帳戶地址都擁有自己的"代碼"邏輯(正是EIP-7702要實現的效果)。

它還能衍生出其他功能,如:

  1. 讓交易使用更多加密算法,由各地址內部Code指定驗籤鑑權方法。

  2. 具備抗量子攻擊特性,因爲代碼可升級。

  3. 讓以太幣具備與ERC20合約一致的功能,如代扣授權。

  4. 提升帳戶的自定義空間,兼容社交恢復、SBT支持、密鑰找回等。

之所以未繼續推進,主要是步子邁得太大,對當前交易哈希衝突問題、安全性隱患考慮不周,但每個優點的理念都成爲後續EIP4337和EIP7702的核心功能之一。

後續還有一系列EIP試圖完善這一邏輯:

EIP-859:主鏈帳戶抽象(2018-01-30)

試圖解決Code的部署問題。核心作用是,如果交易方合約未部署,則使用交易附帶code參數執行合約錢包部署。還提出新的PAYGAS操作碼,除支付gas外,也作爲交易參數中驗證部分與執行部分的分隔符。

雖然當時未果,但這也成了EIP7702的核心邏輯之一。EIP7702的每筆交易結合特殊交易結構,可附帶一定代碼,讓EOA地址在本次交易中擁有合約能力。

EIP-7702:設置EOA帳戶代碼(2024-05-07)

這是本文後續討論的核心EIP,由Vitalik提出作爲EIP-3074的替代方案。EIP-3074被棄用,EIP-7702將在即將到來的ETH Prague/Electra(Pectra)硬分叉中納入。

3.2 第二種路線:讓EOA地址驅動CA地址

EIP-3074:增加AUTH和AUTHCALL操作碼(2020-10-15)

在EVM中加入兩個新的OpCode:AUTH和AUTHCALL,讓EOA能通過這兩個opcode授權合約代替EOA身分調用其他合約。

概括來說,EOA可將已籤名的消息(交易)發送至自己信任的合約(稱作Invoker),此Invoker合約可利用AUTH和AUTHCALL操作碼代替EOA發出交易。

EIP-4337:用交易內存池實現帳戶抽象(2021-09-29)

受MEV啓發設計,核心價值是完全避免共識層協議更改。

EIP4337提出新的事務對象UserOperation,用戶將此對象發送到內存池,由bundlers從礦工維度批量打包交付合約執行交易事務,本質上是將底層交易與帳戶運作拉到合約層面執行。

EIP-5189:通過背書人操作抽象帳戶(2022-06-29)

這是對EIP4337邏輯的優化,通過建立資金罰款背書endorser機制來防止惡意Bundler的DoS阻塞攻擊。

3.3 其他支持AA的提案

EIP-2718:新交易類型的包裝信封(2020-06-13)

這是一個已經Final的提案,定義新的交易類型作爲未來新增交易類型的信封。

最終效果是,引入新交易類型時,通過特定編碼區分交易類型,只需向後兼容,無需向前兼容。最常見的例子是EIP1559,它區分了交易手續費,使用新的交易類型編碼,又不影響最初的legacy交易類型。

EIP-3607:讓EOA地址不可部署合約(2021-06-10)

這是AA路徑上的補充方案,用於防止合約部署地址與EOA地址衝突。它會控制合約生成方法,不允許將代碼部署到已是EOA地址的地址上。這個風險其實很小,以太坊地址有160位長,雖然存在用私鑰碰撞出指定合約地址私鑰的方法,但以比特幣全算力投入估計也需要一年時間。

3.4 如何理解帳戶抽象發展歷程?

首先需理解轉爲CA後的價值,基本上就是EIP-4337的實際效果:

  1. 支持批量交易
  2. 支持社交恢復
  3. 支持自定義籤名驗證
  4. 無需原生代幣支付手續費
  5. 更細粒度的權限管理
  6. 可升級性

但是,EIP-4337的核心缺點是違背人性動機原則。

看似更好,卻陷入市場發展的死循環:很多Dapp還不兼容,用戶不願使用CA地址,使用CA反而有更高交易成本(普通轉帳場景,交易費用翻倍),過度依賴Dapp本身的兼容性。

所以在以太坊主網上至今未得到普及。

成本是用戶最重要的衡量標準,必須降低成本。

但要真正降低GAS,就必須以太坊本身做軟分叉升級,修改GAS計算或操作碼的GAS消耗等模塊。既然要軟分叉,不如直接考慮EIP-7702。

深入解讀以太坊帳號抽象賽道的過去與未來

4. 全面解析EIP-7702

4.1 EIP-7702是什麼

它通過新的交易類型,允許EOA在單筆交易中臨時具備智能合約功能,支持批量交易、無Gas交易和自定義權限管理等,且無需引入新的EVM opCode(影響向前兼容性)。

用戶無需部署智能合約,就可獲得大部分AA能力,甚至可提供第三方代用戶發起交易的能力,且不需用戶提供私鑰,只需籤名授權信息。

4.2 數據結構

定義新的交易類型0x04,TransactionPayload是以下內容的RLP編碼序列化結果:

rlp([chain_id, nonce, max_priority_fee_per_gas, max_fee_per_gas, gas_limit, destination, value, data, access_list, authorization_list, signature_y_parity, signature_r, signature_s])

重要的是新增了authorization_list對象,存儲籤名者希望在其EOA中執行的代碼。用戶簽署交易的同時也簽署要執行的合約代碼,作爲二維列表存在,可批量存放多個操作信息,執行批量操作。

authorization_list = [[chain_id, address, nonce, y_parity, r, s], ...]

4.3 交易生命週期

4.3.1 驗證階段

交易執行開始時,對每個authorization_list的[chain_id, address, nonce, y_parity, r, s]元組:

  1. 從籤名r、s中用ecrecover恢復籤名者地址。
  2. 驗證鏈ID(防分叉鏈重放)。
  3. 驗證authority籤名者的代碼是否爲空或已委托。
  4. 驗證authority籤名者的nonce(防authority籤名重放)。
  5. 設置authority籤名者的代碼爲0xef0100 || address(繞過EIP3607防碰撞策略)。
  6. 增加authority籤名者的nonce(防局部籤名重放)。
  7. 將authority籤名者帳戶添加到已訪問地址列表(轉熱地址,降低查詢存儲gas費)。

4.3.2 執行操作階段

"新"版本僅更改了代碼部署行爲。

不再將account_code設爲contract_code,而是從authorization_list中檢索address指定的代碼並設爲account_code。

執行授權代碼時,從authorization_list的address字段指定地址加載代碼,在籤名者帳戶上下文中執行。

這意味着用戶合約代碼實際存儲在鏈上特定地址,而非直接包含在交

ETH3.17%
查看原文
此頁面可能包含第三方內容,僅供參考(非陳述或保證),不應被視為 Gate 認可其觀點表述,也不得被視為財務或專業建議。詳見聲明
  • 讚賞
  • 7
  • 分享
留言
0/400
逼仓小能手vip
· 07-25 01:53
特么的7702又整啥活儿
回復0
GasWastervip
· 07-24 18:03
天哪,又一个EIP... 去年在失败交易上花了2个以太坊,现在他们告诉我这个?
查看原文回復0
进场姿势研究员vip
· 07-24 15:19
AA没几天热度又来了
回復0
MetaMuskRatvip
· 07-22 06:03
又开始吹AA,区块链的旧瓶装新酒了吧
回復0
WenAirdropvip
· 07-22 05:57
区块链熬夜冲锋狗
回復0
Crypto冒险家vip
· 07-22 05:56
韭菜进化论 第7702集开播了
回復0
StakeOrRegretvip
· 07-22 05:47
有点干 还能再水点不
回復0
交易,隨時隨地
qrCode
掃碼下載 Gate APP
社群列表
繁體中文
  • 简体中文
  • English
  • Tiếng Việt
  • 繁體中文
  • Español
  • Русский
  • Français (Afrique)
  • Português (Portugal)
  • Bahasa Indonesia
  • 日本語
  • بالعربية
  • Українська
  • Português (Brasil)