📢 #Gate广场征文活动第三期# 正式啓動!
🎮 本期聚焦:Yooldo Games (ESPORTS)
✍️ 分享獨特見解 + 參與互動推廣,若同步參與 Gate 第 286 期 Launchpool、CandyDrop 或 Alpha 活動,即可獲得任意獎勵資格!
💡 內容創作 + 空投參與 = 雙重加分,大獎候選人就是你!
💰總獎池:4,464 枚 $ESPORTS
🏆 一等獎(1名):964 枚
🥈 二等獎(5名):每人 400 枚
🥉 三等獎(10名):每人 150 枚
🚀 參與方式:
在 Gate廣場發布不少於 300 字的原創文章
添加標籤: #Gate广场征文活动第三期#
每篇文章需 ≥3 個互動(點讚 / 評論 / 轉發)
發布參與 Launchpool / CandyDrop / Alpha 任一活動的截圖,作爲獲獎資格憑證
同步轉發至 X(推特)可增加獲獎概率,標籤:#GateSquare 👉 https://www.gate.com/questionnaire/6907
🎯 雙倍獎勵機會:參與第 286 期 Launchpool!
質押 BTC 或 ESPORTS,瓜分 803,571 枚 $ESPORTS,每小時發放
時間:7 月 21 日 20:00 – 7 月 25 日 20:00(UTC+8)
🧠 寫作方向建議:
Yooldo
EIP-7702: 以太坊帳戶抽象的終極方案與未來發展
深入解讀以太坊帳戶抽象賽道的過去與未來
前言
本文分爲兩大模塊:
上半部分從2015年第一個AA提案開始,系統梳理了目前爲止的主要EIP提案內容,回顧AA歷史提案歷程,並對各方案優缺點進行綜合評價。
下半部分重點對比EIP4337推出後面臨的市場反饋不佳的情況,深入分析即將納入以太坊下一版本升級的EIP7702,這一提案一旦合並將全方位改變鏈上應用形態。
EIP-7702具有劃時代意義,讓我們詳細了解一下。
1. 帳戶抽象的背景
1.1 帳戶抽象的意義定位
以太坊創始人Vitalik在2023年底再次更新ETH發展路線圖,但針對帳戶抽象的設定並未改變。目前主流模式正從EIP-4337向下一階段VoluntaryEOA Conversion(自願轉換EOA帳戶)過渡。
1.2 帳戶抽象的市場現狀
經過一年半發展,EIP4337在主流鏈上的帳戶總數僅1200萬,其中以太坊主網活躍地址只有6,764個,與EOA和CA地址數差距巨大。以太坊主網獨立地址數已達2.7億,可見EIP4337在主網上幾乎沒有實質性發展。
不過這並不影響AA的本質價值。EIP4337設計之初就注定難以解決主網兼容性問題,但在各類L2層鏈上得到普遍應用。其中Base和Polygon鏈7月月活用戶分別達到100萬和300萬,表現不俗。
因此,EIP4337設計本身並無問題,當前情況源於主網與L2之間的差異,它們需要採用不同的適用方案。
2. 什麼是帳戶抽象?
帳戶抽象本質上解決的是產權分離問題。
EVM架構中有兩種帳戶:外部帳戶(EOA)和合約帳戶(Contract Account)。EOA的所有權和籤名權實際上由同一主體持有。持有私鑰的人不僅擁有帳戶"所有權",還可以"籤名轉移所有資產"。
這是由以太坊帳戶交易結構決定的。標準交易結構中實際沒有From字段,資金轉帳是通過VRS參數(用戶籤名)反解析出From地址實現的。
EIP4337的核心效果就是在交易字段中增加Sender Address,從而實現私鑰與被操作地址的分離。
產權分離如此重要的原因在於,EOA設計會衍生出諸多問題:
私鑰難以保護:丟失私鑰意味着失去所有資產。
籤名算法單一:原生協議只能使用ECDSA算法驗證交易。
籤名權限過高:無原生多重籤名,單一籤名即可執行任意操作。
交易手續費只能用ETH支付,不支持批量交易。
交易隱私泄露:一對一交易易於分析帳戶持有者信息。
這些限制導致普通用戶難以使用以太坊:
首先,使用以太坊應用必須持有ETH並承擔價格波動風險。
其次,用戶需要處理復雜的費用邏輯,如Gas price、Gas limit、交易阻塞等概念。
最後,雖然許多區塊鏈錢包試圖通過產品優化提升用戶體驗,但效果有限。
因此,突破口在於實現帳戶抽象,將所有權(Owner)和籤名權(Signer)解耦,從而逐步解決上述問題。
歷史上有多種方案,最終歸結爲兩種路線。
3. AA歷史提案脈絡梳理
問題的解決方案看似有很多EIP提案,但歸根結底只有兩種核心思路。每個未通過的EIP考慮的問題都匯聚成了當前方案的突破點。
3.1 第一種路線:將EOA地址轉變爲CA地址
早在2015年11月15日,Vitalik就在EIP-101中提出以合約作爲帳戶的新結構。將地址改爲只有代碼和存儲空間,支持用ERC20支付手續費,通過預編譯合約將原生代幣改爲類ERC20存儲餘額,將交易字段精簡爲to、startgas、data和code。
這一方案可以衍生出多項功能:
交易可使用更多加密算法,由地址內部Code指定驗籤方法
具備抗量子攻擊特性,因代碼可升級
讓ETH具備與ERC20合約一致的功能,如代扣授權
提升帳戶自定義空間,兼容社交恢復、SBT支持、密鑰找回等
未能繼續推進的原因很簡單,步子邁得太大,對當前交易哈希衝突問題和安全性隱患考慮不周。但每個優點理念都成爲後續EIP4337和EIP7702的核心功能之一。
後續還有一系列EIP試圖完善這種邏輯:
EIP-859:主鏈帳戶抽象(2018-01-30)
試圖解決Code部署問題,核心是若交易方合約未部署則使用交易附帶code參數執行部署。還提出新的PAYGAS操作碼,作爲交易參數中驗證部分與執行部分的分隔符。
雖然當時無疾而終,但成爲EIP7702的核心邏輯之一。EIP7702的每筆交易可結合特殊交易結構附帶代碼,讓EOA地址在本次交易中具備合約能力。
EIP-7702:設置EOA帳戶代碼(2024-05-07)
這是本文後續討論的核心EIP,由Vitalik提出作爲EIP-3074的替代方案。EIP-3074被棄用,EIP-7702確定將在即將到來的ETH Prague/Electra硬分叉中納入。
3.2 第二種路線:讓EOA地址驅動CA地址
EIP-3074:增加AUTH和AUTHCALL操作碼(2020-10-15)
在EVM中加入兩個新操作碼AUTH和AUTHCALL,讓EOA能通過這兩個opcode授權合約代替EOA身分調用其他合約。
EOA可將已籤名消息(交易)發送至信任的合約(稱爲Invoker),此Invoker合約可利用AUTH和AUTHCALL操作碼代替EOA發送交易。
EIP-4337:用交易內存池實現帳戶抽象(2021-09-29)
受MEV啓發設計,核心價值是完全避免共識層協議更改。
提出新的交易對象UserOperation,用戶將此對象發送到內存池,由bundlers從礦工維度批量打包交付合約執行交易,本質上是將底層交易與帳戶運作拉到合約層面執行。
EIP-5189:通過背書人操作抽象帳戶(2022-06-29)
優化EIP4337邏輯,通過建立資金罰款背書endorser機制防止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的實際效果:
但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]元組:
從籤名r、s用ecrecover恢復籤名者地址。
驗證鏈ID(防分叉鏈重放)。
驗證authority籤名者代碼是否爲空或已委托。
驗證authority籤名者nonce(防authority籤名重放)。
設置authority籤名者代碼爲0xef0100 || address。
增加authority籤名者nonce(防局部籤名重放)。
將authority籤名者帳戶添加到已訪問地址列表。
4.3.2 執行操作階段
"新"版本僅更改代碼部署行爲。
不再將帳戶代碼設爲contract_code,而從authorization_list的address字段檢索代碼並設爲帳戶代碼。
執行授權代碼時,從authorization_list指定地址加載代碼,在籤名者帳戶上下文中執行。
用戶合約代碼實際存儲在鏈上特定地址,不直接包含在交易中。
操作指令和相關參數存儲在交易負載data字段。
4.4 EIP-7702的價值
對Web3錢包全鏈路有變化,用戶體驗巨變。EOA發起普通交易可類似合約執行多種邏輯,如批量transfer。影響CeFi場景交易鑑別、充提歸集手續費。
打破多個既有定勢:
帳戶餘額可因非源自該帳戶交易而減少。
交易執行開始後EOA nonce可能增加多個。
打破tx.origin和msg.sender比對防護邏輯,許多現有合約有風險。
EOA本身可發出事件,影響部分鏈上事件識別監聽。
EOA地址接收ERC20、721、1155等資產可能失敗(因回調機制)。
4.5 對比EIP-7702和EIP-4337
完全委托(Full Delegation)