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

進階9/12/2024, 1:51:56 AM
本文將從2015年起的首個AA提案出發,系統性地整理目前爲止的Eip提案主要內容,接着比較EIP4337提出之後面臨的市場低迷回饋,再深入分析如今即將被納入下個版本以太坊升級的EIP7702。

前言

本文整體分兩大模組:

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

下半段,着重在比較EIP4337提出之後面臨的市場低迷回饋,再深入分析如今即將被納入下個版本以太坊升級的EIP7702,此提案一旦合並,將全方位改變鏈上應用形態。

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

1、帳號抽象的背景

1.1 帳號抽象的意義定位

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


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

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

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

1.2 帳號抽象的市場現狀

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

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

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


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

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

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

2、帳號抽像是什麼?

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

所以破局之道在於實現帳戶抽象,將所有權(Owner)和籤章權(Signer)解耦(Decoupling),以便逐一解決上述問題。

其實歷史的方案很多,最後都會匯集到兩種路線

3、AA歷史提案脈絡梳理

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

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

早在2015年11月15日,圍繞EIP-101,Vitalik 就提出以合約作爲帳戶的新結構。將地址改爲只有程式碼和儲存空間,改變手續費支援由ERC20支付,透過預編譯合約將原生代幣改爲類ERC20來存餘額(可具備代扣授權等功能),將交易欄位精簡到只有to、 startgas、data和code。

現在看來,簡直是大躍進式變革,會大幅改動底層設計,讓每個帳戶位址都擁有自己的「代碼」邏輯(其實也正是現在EIP-7702要做到的效果)。

還能衍生出其他的功能,例如

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

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

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

提升帳號的自訂空間,相容於社交恢復、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-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 中加入兩個新的OpCodesAUTH和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的邏輯,是面對惡意的Bundler透過建立資金罰款背書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, //鏈ID,用於防止重播攻擊。

nonce, // 交易計數器,確保交易唯一性。

max_priority_fee_per_gas, //1559交易費用

max_fee_per_gas, //1559交易費用

gas_limit,

destination, //交易目標位址

value,

data,

access_list, //存取列表,用於EIP-2929中的Gas最佳化。

authorization_list,

signature_y_parity, // 3個籤章參數,用來驗證交易籤章。

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恢復出籤章者位址(注意這是以太坊本身的機制,所以該EIP並沒有改變籤章演算法)。 authority = ecrecover(keccak(MAGIC || rlp([chain_id, address, nonce])), y_parity, r, s](與之前解籤名得出from地址類似,這裏得出的是針對這個list的局部籤名地址)

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

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

驗證authority籤署者的nonce(防authority的籤名重播)。

設定authority籤署者的程式碼爲0xef0100 || address(用來繞過EIP3607防碰撞策略的)

增加authority籤署者的nonce(防局部籤名重播)。

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

4.3.2 執行操作階段

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

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

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

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

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

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

4.4 EIP-7702有什麼價值?

他對於Web3錢包的全鏈路都會有變化,用戶體驗也因此巨變,因爲EOA發起的普通交易也可以類似合約執行多種邏輯,例如批量transfer。對於CeFi場景會影響交易鑑別,也影響衝提歸集手續費

由於其出現,打破了許多曾經的定勢,例如:

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

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

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

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

打破了EOA地址接受ERC20、721、1155等資產必然成功的現狀(因爲回調機制,可能失敗)

4.5 對比EIP-7702和EIP-4337

1.EIP-7702的優勢

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

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

與Eip4337相比,同樣會有代碼委托執行,也同樣會有兩種方式:

完全委托(Full Delegation)

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

受保護的委托(Protected Delegation)

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

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

2.EIP-7702的缺點

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

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

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

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

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

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

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

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

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

5、 全文總結

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

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

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

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

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

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

聲明:

  1. 本文轉載自[PANews],著作權歸屬原作者[十四君],如對轉載有異議,請聯系Gate Learn團隊,團隊會根據相關流程盡速處理。
  2. 免責聲明:本文所表達的觀點和意見僅代表作者個人觀點,不構成任何投資建議。
  3. 文章其他語言版本由Gate Learn團隊翻譯, 在未提及Gate.io的情況下不得復制、傳播或抄襲經翻譯文章。

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

進階9/12/2024, 1:51:56 AM
本文將從2015年起的首個AA提案出發,系統性地整理目前爲止的Eip提案主要內容,接着比較EIP4337提出之後面臨的市場低迷回饋,再深入分析如今即將被納入下個版本以太坊升級的EIP7702。

前言

本文整體分兩大模組:

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

下半段,着重在比較EIP4337提出之後面臨的市場低迷回饋,再深入分析如今即將被納入下個版本以太坊升級的EIP7702,此提案一旦合並,將全方位改變鏈上應用形態。

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

1、帳號抽象的背景

1.1 帳號抽象的意義定位

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


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

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

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

1.2 帳號抽象的市場現狀

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

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

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


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

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

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

2、帳號抽像是什麼?

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

所以破局之道在於實現帳戶抽象,將所有權(Owner)和籤章權(Signer)解耦(Decoupling),以便逐一解決上述問題。

其實歷史的方案很多,最後都會匯集到兩種路線

3、AA歷史提案脈絡梳理

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

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

早在2015年11月15日,圍繞EIP-101,Vitalik 就提出以合約作爲帳戶的新結構。將地址改爲只有程式碼和儲存空間,改變手續費支援由ERC20支付,透過預編譯合約將原生代幣改爲類ERC20來存餘額(可具備代扣授權等功能),將交易欄位精簡到只有to、 startgas、data和code。

現在看來,簡直是大躍進式變革,會大幅改動底層設計,讓每個帳戶位址都擁有自己的「代碼」邏輯(其實也正是現在EIP-7702要做到的效果)。

還能衍生出其他的功能,例如

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

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

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

提升帳號的自訂空間,相容於社交恢復、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-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 中加入兩個新的OpCodesAUTH和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的邏輯,是面對惡意的Bundler透過建立資金罰款背書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, //鏈ID,用於防止重播攻擊。

nonce, // 交易計數器,確保交易唯一性。

max_priority_fee_per_gas, //1559交易費用

max_fee_per_gas, //1559交易費用

gas_limit,

destination, //交易目標位址

value,

data,

access_list, //存取列表,用於EIP-2929中的Gas最佳化。

authorization_list,

signature_y_parity, // 3個籤章參數,用來驗證交易籤章。

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恢復出籤章者位址(注意這是以太坊本身的機制,所以該EIP並沒有改變籤章演算法)。 authority = ecrecover(keccak(MAGIC || rlp([chain_id, address, nonce])), y_parity, r, s](與之前解籤名得出from地址類似,這裏得出的是針對這個list的局部籤名地址)

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

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

驗證authority籤署者的nonce(防authority的籤名重播)。

設定authority籤署者的程式碼爲0xef0100 || address(用來繞過EIP3607防碰撞策略的)

增加authority籤署者的nonce(防局部籤名重播)。

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

4.3.2 執行操作階段

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

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

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

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

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

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

4.4 EIP-7702有什麼價值?

他對於Web3錢包的全鏈路都會有變化,用戶體驗也因此巨變,因爲EOA發起的普通交易也可以類似合約執行多種邏輯,例如批量transfer。對於CeFi場景會影響交易鑑別,也影響衝提歸集手續費

由於其出現,打破了許多曾經的定勢,例如:

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

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

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

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

打破了EOA地址接受ERC20、721、1155等資產必然成功的現狀(因爲回調機制,可能失敗)

4.5 對比EIP-7702和EIP-4337

1.EIP-7702的優勢

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

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

與Eip4337相比,同樣會有代碼委托執行,也同樣會有兩種方式:

完全委托(Full Delegation)

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

受保護的委托(Protected Delegation)

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

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

2.EIP-7702的缺點

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

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

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

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

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

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

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

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

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

5、 全文總結

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

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

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

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

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

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

聲明:

  1. 本文轉載自[PANews],著作權歸屬原作者[十四君],如對轉載有異議,請聯系Gate Learn團隊,團隊會根據相關流程盡速處理。
  2. 免責聲明:本文所表達的觀點和意見僅代表作者個人觀點,不構成任何投資建議。
  3. 文章其他語言版本由Gate Learn團隊翻譯, 在未提及Gate.io的情況下不得復制、傳播或抄襲經翻譯文章。
即刻開始交易
註冊並交易即可獲得
$100
和價值
$5500
理財體驗金獎勵!
It seems that you are attempting to access our services from a Restricted Location where Gate.io is unable to provide services. We apologize for any inconvenience this may cause. Currently, the Restricted Locations include but not limited to: the United States of America, Canada, Cambodia, Cuba, Iran, North Korea and so on. For more information regarding the Restricted Locations, please refer to the User Agreement. Should you have any other questions, please contact our Customer Support Team.