從4337到7702:深入解讀以太坊帳號抽象賽道的過去與未來

avatar
十四君
3個月前
本文約5613字,閱讀全文需要約8分鐘
EIP7702這次顛覆得太多了,打破多個臉上不可能潛規則。

前言

本文整體分兩大模組:

上半段,將從 2015 年起的首個 AA 提案出發,系統整理目前為止的 Eip 提案主要內容,期望由史出發挖掘 AA 歷史提案的歷程,並綜合性評價各方案優缺點。

下半段,著重於對比 EIP 4337 提出之後面臨的市場低迷反饋,再深入分析如今即將被納入下個版本以太坊升級的 EIP 7702 ,此提案一旦合併,將全方位改變鏈上應用形態

EIP-7702 有劃時代的改變,且聽十四君細細講來

1、帳號抽象的背景

1.1 帳號抽象的意義

定位以太坊創辦人 vitalik 在 2023 年底再次更新ETH 發展路線圖,但其中針對帳號抽象的設定,並未改過。如今的主流模式也正是從 EIP-4337 ,踏入到下一個階段 VoluntaryEOA Conversion(自願轉換 EOA 帳號)。

從4337到7702:深入解讀以太坊帳號抽象賽道的過去與未來 https://x.com/VitalikButerin/status/1741190491578810445

在EIP 4337 推出一年多以來(在2023.3.1 號丹佛的WalletCon 上,官方宣布由以太坊基金會開發人員設計實現的ERC-4337 的核心合約已經通過了OpenZeppelin 的審計,被認為是正式推出的歷史節點)。

始終是只得到用戶的廣泛認可,但並不被廣泛使用,如此矛盾的市場環境下,讓 EIP-7702 的進度被大幅提前,乃至已經被確認將在下一次升級被合併其中。

1.2 帳號抽象的市場現狀

無需多言,直接看數據吧。

經過一年半的發展,EIP 4337 在主流鏈帳號的集合下,僅有1200 W 的位址數,其中最為讓人驚訝的是在以太坊主網上,活躍地址僅6, 764 個,或許統計維度有所問題,但至少與EOA 與CA 的地址數相差甚廣,要知道以太坊主網上獨立地址數已經達到2 億7 千萬(資料源自: https://etherscan.io/chart/address)。

可以說在主網上 EIP 4337 是毫無實質發展。

從4337到7702:深入解讀以太坊帳號抽象賽道的過去與未來

資料來源: https://dune.com/niftytable/account-abstraction)

不過,這並不磨滅AA 的本質價值,因為他從一開始的EIP 4337 的設計就注定了,他面對主網嚴重的往前兼容性問題上無法做好,所以伴隨著各類L2層鏈的普遍嵌入原生AA,EIP 4337 的位址數在L2上獲得爆發,其中base 和polygon 鏈的7 月月度活躍用戶分別是100 W 和300 W,倒也頗為可觀。

所以,並不是 EIP 4337 設計錯了,他有很多優點,我們一會系統的總結,如今的現狀是源自於主網與L2之間的差異,他們需要用各自適合的方案。

2、帳號抽像是什麼?

帳戶抽象,聽起來很費解,但其實本質解決的是產權分離的問題。

EVM 架構(即以太坊虛擬機器)中有兩種帳戶,外部帳戶(EOA)和合約帳戶(Contract Account),外部帳戶的所有權和簽名權其實上是同一個體單位持有的。持有私鑰的人不僅擁有這個帳戶的「所有權」,同時還有權利「簽名轉移所有資產」。

這是由以太坊帳號交易結構決定的

從下圖的架構可以發現,其實以太坊的標準交易是沒有 From 方的,那麼我做了一次資金轉賬,具體消費的是什麼地址上的資金?實際上是透過其 VRS 參數(即用戶簽章)反解析出 From 位址的。

這裡涉及到 ECDSA 等非對稱加密,單向門限函數等概念,咱們不做展開,總之這裡是由密碼學來保障安全性,當然這也就造成瞭如今的產權合併的 EOA 地址窘境。

而 EIP 4337 的核心效果,就是在交易字段裡增加了 Sender Address 字段,從而能讓私鑰與被操作的地址分開。

從4337到7702:深入解讀以太坊帳號抽象賽道的過去與未來

那為什麼產權分離這麼重要呢?

因為外部帳戶(EOA)設計會衍伸出更多的問題:

  • 私鑰難保護:使用者失去私鑰(遺失、駭客攻擊、密碼學上的被破解)意味著地失去所有資產。

  • 簽章演算法少:原生協定在驗證交易上只能使用ECDSA 簽章和驗簽演算法。

  • 簽章權限高:無原生多簽(多簽只能透過智慧合約實現協作),單簽即可執行任意操作。

  • 交易手續費只能透過ETH 支付,並不支援大量交易。

  • 交易隱私外洩:一對一交易容易分析帳戶持有者的隱私資訊。

上訴的約束讓一般使用者很難使用以太坊:

首先,使用以太坊上的任何應用,使用者都必須持有以太(並承擔以太價格波動的風險)。

其次,使用者需要處理複雜的費用邏輯,Gas price、Gas limit、交易阻塞(Nonce 順序)這些概念對使用者來說過於複雜。

最後,雖然許多區塊鏈錢包或應用程式試圖透過產品優化來提高用戶體驗,但它們的實際效果甚微。

所以破局之道在於實現帳戶抽象,將所有權(Owner)和簽章權(Signer)解耦(Decoupling),以便逐一解決上述問題。其實歷史的方案很多,最後都會匯集到兩種路線

3、AA 歷史提案脈絡梳理

從4337到7702:深入解讀以太坊帳號抽象賽道的過去與未來

問題的解法看似有很多的 EIP 提案,但歸根結底,就是兩種核心思路,所以過往每一個沒有被通過的 EIP,其考慮的問題也就匯聚成了現在方案的破局之道。

3.1 第一條路線是讓 EOA 地址變成 CA 地址

早在 2015 年 11 月 15 日,圍繞 EIP-101 ,Vitalik 就提出以合約作為帳戶的新結構。將地址改為只有程式碼和儲存空間,改變手續費支援由ERC 20 支付,透過預編譯合約將原生代幣改為類ERC 20 來存餘額(可具備代扣授權等功能),將交易欄位精簡到只有to、startgas、data 和code。現在看來,簡直是大躍進式變革,會大幅改動底層設計,讓每個帳戶位址都擁有自己的「代碼」邏輯(其實也正是現在 EIP-7702 要做到的效果)。還能衍生出其他的功能,例如

  • 讓交易使用更多加密演算法,可以由各位址內部 Code 來指定驗簽鑑權方法

  • 具備抗量子攻擊特性,因為程式碼具備升級特性。

  • 讓以太幣具備與 ERC 20 合約一致的功能特性,核心效果有了代扣授權,因此無需原生幣的損耗

  • 提升帳號的自訂空間,相容於社交恢復、sbt 支援、金鑰找回等

沒有繼續推進的原因也很簡單,顯然是步伐太大,對於當前交易哈希衝突問題,安全性隱患考慮不周所以一直擱置,但每個優點的理念都成為後續EIP 4337 以及EIP 7702 的核心功能之一。

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

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

試圖解決Code 的部署問題,核心作用是,如果出現了若交易方合約未部署,則使用交易附帶code 參數執行合約錢包部署,其次還提出新的PAYGAS 操作碼,除了支付gas 外,也成為一筆交易的參數中驗證部分與執行部分的分隔符號。雖然當時無疾而終,但這也成了現在 EIP 7702 的核心邏輯之一,EIP 7702 的每一筆交易結合特殊的交易結構,可以附帶一定的代碼,從而在本次交易中讓 EOA 地址擁有合約能力。

EIP-7702 :設定EOA 帳號代碼2024-05-07

這也是本文後續討論機制的核心 EIP,由 Vitalik 發表了EIP-7702 作為EIP-3074 的替代方案(2024-05-07)。因此 EIP-3074 被棄用,EIP-7702 被確定在即將到來的ETH Prague/Electra(Pectra)硬分叉中納入,具體內容咱們在下文展開。

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

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

在 EVM 中加入兩個新的 OpCodes AUTH 和 AUTHCALL ,讓 EOA 能透過這兩個 opcode 授權合約取代 EOA 的身份去呼叫其他合約。結合下圖,概括來說一個EOA 能將一則已簽的訊息(交易)送至自己信任的合約(稱作Invoker)上,此Invoker 合約可以利用AUTH 和AUTHCALL 操作碼來代替這個EOA 送出這筆交易。

EIP-4337 :用交易記憶體池實現帳戶抽象--2021-09-29

這方面我之前已經有許多文章深入分析其機制,可拓展閱讀:

總之,他受到 MEV 的啟發進行設計,其核心價值是可以完全避免共識層協議更改。

eip 4337 提出新的事務物件 UserOperation,使用者將此物件傳送到記憶體池中,由 bundlers 從礦工維度批量打包交付合約執行交易事務,本質上是把底層的交易與帳戶運作拉到合約層級執行。

EIP-5189 :透過背書人來操作抽象帳戶— 2022-06-29

這算是優化了 EIP 4337 的邏輯,是面對惡意的 Bundler 透過建立資金罰款背書 endorser 的機制來防止 Dos 阻塞攻擊。

3.3 其他用於支持 AA 的提案

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

這倒是一個已經 Final 的提案,他定義一個新的交易類型,作為未來新增的交易類型的信封。最終效果是,當引入新的交易類型時, 透過特定編碼來區分這是哪一種交易,讓其只需有向後相容性,而無需往前相容。最常見的例子就是 EIP 1559 了,他區分了交易的手續費,使用了新的交易類型編碼,又不影響最初的 legacy 的交易類型。

EIP-3607 :讓 EOA 位址無法部署合約--2021-06-10

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

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

首先需要理解轉為 CA 後的價值

基本上也就是 EIP-4337 的實際效果,他可以實現

從4337到7702:深入解讀以太坊帳號抽象賽道的過去與未來

但是,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 資料結構

他定義了新的交易類型0x 04 ,該交易類型的 TransactionPayload 是下列內容的 RLP 編碼序列化結果

從4337到7702:深入解讀以太坊帳號抽象賽道的過去與未來

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

從4337到7702:深入解讀以太坊帳號抽象賽道的過去與未來

4.3 交易生命週期

4.3.1 驗證階段

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

  1. 從簽章 r、s 中採用 ecrecover 恢復出簽章者位址(注意這是以太坊本身的機制,所以該 EIP 並沒有改變簽章演算法)。 authority = ecrecover(keccak(MAGIC || rlp([chain_id, address, nonce])), y_parity, r, s](與先前解簽名得出from 位址類似,這裡得出的是針對這個list 的局部簽章位址)

  2. 驗證鏈 ID(防分叉鏈重播)。

  3. 驗證 authority 簽署者的代碼是否為空或已委託(驗證交易是否屬於有效 7702 交易,後續會透過 delegation 機制去代理人執行交易)。

  4. 驗證 authority 簽署者的 nonce(防 authority 的簽章重播)。

  5. 設定 authority 簽署者的程式碼為0x ef 0100 || address(用來繞過 EIP 3607 防碰撞策略的)

  6. 增加 authority 簽署者的 nonce(防局部簽章重播)。

  7. 將 authority 簽署者帳戶新增至已存取位址清單(轉熱位址,降低查詢儲存的 gas 費用)

4.3.2 執行操作階段

要執行的合約程式碼以及操作指令在哪裡?

「新」版本僅更改了程式碼部署方面的行為。

它不再將帳戶代碼設為 contract_code,而是從 authorization_list 中檢索代碼 address 並將該代碼設定為帳戶代碼。

所以,當需要執行授權程式碼時,從 authorization_list 的address 欄位指定的位址載入程式碼,並在簽署者帳號的上下文中執行。

這意味著用戶的合約代碼實際上是儲存在鏈上的某個特定地址,而不是直接包含在交易中。

而操作指令和相關參數則儲存在交易負載的 data 欄位中。

4.4 EIP-7702 有什麼價值?

他對於Web3錢包的全連結都會有變化,使用者體驗也因此巨變,因為 EOA 發起的普通交易也可以類似合約執行多種邏輯,例如大量 transfer。對於 CeFi 場景會影響交易鑑別,也影響衝提歸集手續費由於其出現,打破了許多曾經的定勢,例如:

  1. 打破了帳戶餘額只能因源自該帳戶的交易而減少的不變量。

  2. 打破了交易執行開始後EOA nonce 增加 1 的不變量(可能同時增加多個)。

  3. 打破了 tx.origin 和 msg.sender 兩個比對的防護邏輯,很多過往的合約有風險了。

  4. 打破了 EOA 本身無法發出事件的現狀,對部分鏈上事件識別監聽可能需要注意。

  5. 打破了 EOA 位址接受 ERC 20、 721、 1155 等資產必然成功的現狀(因為回檔機制,可能失敗)

4.5 對比 EIP-7702 和 EIP-4337

1. EIP-7702 的優勢

  • gas 更低,因為無需經過 entrypoint 模組,減少鏈上操作。

  • 用戶遷移成本更低,無需提前部署鏈上合約做為主體

  • 與 Eip 4337 相比,同樣會有代碼委託執行,也同樣會有兩種方式:

完全委託(Full Delegation)

  • 完全委託是指將某個操作的全部權限委託給一個特定位址。例如,用戶可以將所有 ERC-20 代幣的管理權限委託給一個智慧合約地址,這使得這個智能合約可以代表用戶執行所有相關操作。

受保護的委託(Protected Delegation)

  • 受保護的委託是指在委託的過程中增加一些限制和保護措施,確保委託操作的安全性和可控制性。

  • 例如,使用者可以只將部分 ERC-20 代幣的管理權限委託給一個智慧合約,或設定一些限制條件(例如每天最多花費總餘額的 1% )。

2. EIP-7702 的缺點

他的核心缺點是屬於軟分叉升級,需要大家共識推動,並且改動巨大,對鏈上生態影響太廣,十四君初步評估下來,就有以下挑戰,但是挑戰也就是市場的機會:

  1. 自由度極高,難以審計,用戶會更需求可靠的皮夾承擔安全防護的保護。

  2. 對原架構變化過大,雖然用不同交易類型區分,但是許多基礎建設尤其鏈上不可改合約都無法直接適配。

  3. 對 EOA 位址提供了合約能力,但對應的儲存空間無法留存。

  4. 單獨交易的成本稍微提高,因為會大量增加Calldata 的部分,估算呼叫的總成本將是16 (gas) * 15 (位元組) = 240 (gas)calldata 成本,加上EIP-3860 的成本2 * 15 = 30 ,再加上大約的運行時成本150 。因此,光是準備帳戶哪怕什麼都不做,就要增加 500 的 Gas 了。

  5. 「如果接收者簽署了沒有接收功能的程式碼,發送者在嘗試發送資產時可能會面臨DoS。」請參閱案例。這個問題其實是EOA A 簽署了它不應該簽署的東西——一個設定了錯誤實現(沒有 receive())的可重播檔案。

  6. 鏈上沖提邏輯可能不一致,例如當轉移ERC-20 代幣時,如果接收方帳戶有代碼,則代幣合約將調用 onERC 20 Received 接收方帳戶。如果 onERC 20 Received 還原或傳回錯誤的值,則代幣傳輸將還原。

  7. 另外如果EOA 可以發出事件,會不會有什麼問題?一些基礎設施可能需要注意。

這些也只是十四君基於目前 EIP 7702 提案內容,以及對應的官方論壇討論總結出的一些缺點,最終還需要基於最終的實現代碼才能分析完全。參考如下:

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、 全文總結

本文看似篇幅宏大,其實文字內容只有 6 k 餘字,中間涉及的許多往期 EIP 解讀,都在文中連結可以拓展,我就不進而追溯了。

目前看,帳號抽象,確實只能放在第六模組,即修復一切,也即最後在推行,如今大幅加快EIP 7702 的進度,更多帶來的還是對系統安全性的挑戰,可以預料到,最後他會實現,畢竟以太坊合併,修改共識演算法這樣的顛覆事件都可以發生,又談何區區新的交易類型。

但這一次顛覆的內容太多了,打破多個鏈上不可能的潛規則,也打破了大多數Dapp 的應用邏輯,但是他死死的佔住了最核心的一點,就是用戶的成本更低了!對比 EIP 4337 近乎翻倍的交易成本而言。

使用者本身還是 EOA 位址,只是在需要的時候才去驅動和使用 CA 邏輯,所以持有成本低了。無需先轉換出鏈上 CA 身份再做操作,等於用戶無需註冊了。

使用者可以輕鬆用EOA 做到多交易並行,例如授權代扣和執行代扣兩種合一,這樣對用戶交易成本本身就低了,而對於Dapp 而言,尤其是需要做鏈上企業級管理的專案方,如交易所等更是顛覆性的最佳化,批量歸集一旦原生態實現,基本交易所成本可以瞬間減少一半以上,最終也可以惠及用戶。

所以,雖然他改變了很多,但佔據成本這個維度,就值得全部 Dapp 去研究和適配,因為這一次,用戶必然站在了 EIP 7702 的一邊。

原創文章,作者:十四君。轉載/內容合作/尋求報導請聯系 report@odaily.email;違規轉載法律必究。

ODAILY提醒,請廣大讀者樹立正確的貨幣觀念和投資理念,理性看待區塊鏈,切實提高風險意識; 對發現的違法犯罪線索,可積極向有關部門舉報反映。

推薦閱讀
星球精選