比特幣交易所 比特幣交易所
Ctrl+D 比特幣交易所
ads
首頁 > Uniswap > Info

萬物研究院:全面解讀賬戶抽象與EIP4337的技術和應用_ERA

Author:

Time:1900/1/1 0:00:00

作者:SteveWang

萬物研究院研究員,沃頓商學院在讀,前端&合約工程師

推特:@SteveIsEmployed?

簡介

以太坊改進提案4337定義的賬戶抽象是一組協議層的接口。它不僅集成了web2用戶熟悉的交互形式,如多因素認證,還給web3特有的用戶痛點提出了解決方案,如無需手續費的交易。作為引入下十億用戶的協議接口,用戶體驗是賬戶抽象最關注的重點。

雖然許多現有的文章很好地解釋了賬戶抽象,但是大多偏科普向,也有少數十分深入于技術細節。本文旨在融合兩者:既提供關于賬戶抽象概念的全面技術解讀,也分類剖析現有應用和基礎設施的案例。因此本文分為三部分:在第一部分,我們將探討EIP4337的起源,并深入了解其技術細節,包括用戶操作、打包器、入口點合約、代付合約、錢包工廠和簽名聚合器。在第二部分,我們將分析現有的市場玩家,包括智能合約錢包和第三方基礎設施提供商。在第三部分,我們將討論賬戶抽象的發展方向,包括該領域的創新展望和預測。

本文篇幅較長,第一部分主要為賬戶抽象的技術解讀,只對賬戶抽象的應用場景感興趣的讀者可以直接跳到第二部分。

第一部分:EIP4337的全面技術分析

首先來簡要回顧一下基礎知識,以太坊有兩種類型的賬戶:外部擁有的賬戶和合約賬戶。

EOA是用戶控制的賬戶,可以發送交易。EOA通過其私鑰控制賬戶的所有權,可以通過簽名執行交易,從而改變EOA的內部狀態或外部合約賬戶的狀態。由于私鑰是EOA所有權的唯一代表,EOA不適合定義復雜的所有權或交易邏輯,如使用社交媒體賬戶登錄和多方簽名的交易。EOA的局限性導致用戶體驗不佳:一些冗雜的步驟,如私鑰和種子短語管理,更是直接阻礙了Web2用戶進入Web3。大多數最受歡迎的錢包,如MetaMask,都是基于EOA的賬戶模型。

合約賬戶可以托管任意的Solidity代碼,因此可以發揮EVM全部的圖靈完備特性。遺憾的是,合約賬戶不能發送交易,因此它們的功能必須由EOA觸發。智能合約錢包是一種合約賬戶,通過錢包提供商的EOA網絡間接地被其用戶觸發,無論是通過中繼器還是打包器。

圖:EOA與合約賬戶

智能合約錢包早在EIP4337之前就已存在。EIP4337的提出是為了標準化設計智能合約錢包及其相關基礎設施的通用功能。EIP4337遵循以下幾個設計原則:

總體而言,所有的技術實現都在頂層,從而避免觸及共識層和執行層等底層基礎設施。賬號模型這種基本設計如果在底層改動會成為像以太坊PoS主網合并一樣的重要升級。因為開發人員的精力有限,只能采用合約層實現的輕量級技術路線。

協議接口的設計應該是模塊化的,這樣用戶可以自定義選項,包括交易打包處理、gas代付和簽名聚合。

理想情況下,上述每項服務都將成為一個具有競爭性的開放市場。用戶可以根據提供商的價格和聲譽選擇最佳的服務。

EIP4337為標準化智能合約錢包定義了六個合約接口:

首先,智能合約錢包本身,會通過打包器觸發入口合約來間接觸發,在鏈下驗證交易,然后在鏈上執行。

其次,打包器,用于批量驗證和執行用戶操作。

第三,入口合約是在以太坊只存在一份的全局合約,用于標準化交易執行并防止打包器受到惡意交易的DoS攻擊。

第四,代付合約,用于代表錢包用戶處理gas支付。

第五,合約工廠,用于標準化錢包創建的參數和流程。

第六,簽名聚合器,用于將多個交易的簽名聚合為字節,以便更快地驗證和執行交易。

下面我將詳細介紹用戶操作和上述的六個合約接口,是對官方EIP4337文檔和DavidPhilipson@Alchemy賬戶抽象系列的解讀。

1.賬戶操作

UserOperation本質上和普通交易相同,只是基于EIP4337的合約接口定義了額外的參數。這里回顧一下,一個EOA觸發的普通以太坊交易有交易目標地址、轉賬以太坊數量、gas數量和gas價格等參數。

此外,考慮到EIP4337合約接口的模塊化設計,UserOperation包括以下主要參數用于定義接口的觸發:

calldata:定義要在智能合約錢包上調用的函數簽名和輸入參數,calldata在普通交易中也有

signature:驗證交易確實來自某智能合約錢包地址,signature在普通交易中也有

nonce:防止重放攻擊,在普通交易中也有

sender:指定執行UserOperation的智能合約錢包地址

paymasterAndData:用于交易手續費抽象,包含代付合約地址和gas支付的具體參數

initCode:用于錢包創建,包含錢包工廠合約地址和創建智能合約錢包的參數,如錢包的合約代碼

除了需要額外的參數以外,UserOperation的工作流程與普通交易類似:它們都被廣播到mempool中進行驗證、執行并最終完成出塊。UserOperation的驗證和執行由打包器觸發,我將在下文中解釋。

圖:官方EIP4337文檔對UserOperation參數的定義

2.打包器

Bundler是一個外部賬戶,代表用戶在智能合約錢包上驗證和執行UserOperation交易,因為在以太坊上,所有交易都必須由EOA觸發。Bundler使用戶不用創建和記憶EOA的私鑰就可以觸發智能合約錢包交易,這也是智能合約錢包存在的初衷。

雖然Bundler具有很強的公共物品屬性,他們也可以獲得經濟上的利益,因為:

Bundler可以在執行UserOperation后將最大優先gas費與實際gas花費之間的差額收入囊中

與普通交易的中繼器類似,Bundler可以通過排序捆綁交易中的UserOperation來獲取MEV

盡管用戶付出了成本,但Bundlers對于節省gas是有好處的,因為每執行一筆交易都需要21,000gas的固定成本,而執行捆綁交易可以把一筆交易的固定成本分攤給捆綁交易里的多UserOperation,從而節省gas成本。此外,在同一筆交易中多次修改storage,每次額外操作的gas費都會邊際遞減。

MXC抹茶將派送“萬物生長”計劃入圍項目PURE(Pureswap)資產:據官方公告,MXC抹茶將派送,入圍“萬物生長”計劃第一期項目PURE(Pureswap)資產,用戶可通過以下三種方式獲得:1.4月5日0:00—20日23:59,任意5天幣幣賬戶USDT持倉不低于500枚,且幣幣及ETF交易不低于5次;2.4月15日0:00—30日23:59,任意5天MX持倉不低于1000枚;3.4月15日—6月15日,可于APP首頁“MX DeFi”,通過ETH、BTC、MX挖礦獲得。

資料顯示,MXC抹茶于此前開啟“萬物生長”計劃,旨在拓展MX更多鏈上場景,Pureswap為第一期入圍項目。[2021/4/5 19:46:08]

需要注意的是,盡管以太坊上的交易是線性執行以避免狀態沖突,多個UserOperations可以放在一個捆綁交易里執行,因為Bundlers可以設置同一智能合約錢包地址最多包含一個UserOperation,這樣捆綁交易在修改狀態時不會相互沖突。

除了這些差異之外,Bundlers與區塊構建者類似,因為它們都將經過驗證的UserOperation廣播到公共或私有的mempool中。接下來,我們將介紹入口點合約,Bundler需要與之交互來執行UserOperation。

3.入口點合約

入口點合約是一個全局單例合約,所有Bundlers都需要調用它來執行UserOperation。它充當了Bundler與智能合約錢包之間的中間人:

一方面,Bundlers調用入口點合約的handleOp函數,該函數接受一個UserOperation作為輸入參數。handleOp負責根據UserOperation的calldata驗證并執行智能合約錢包的函數

handleOp首先在鏈上驗證UserOperation,檢查它是否由指定的智能合約錢包地址簽名,以及錢包是否擁有足夠的gas來補償Bundler

如果驗證成功,handleOp將根據UserOperation的calldata中定義的函數簽名和輸入參數執行智能合約錢包函數

另一方面,智能合約錢包需要向入口點合約存入代幣用于支付gas費用給Bundlers。當Bundler使用EOA觸發handleOp函數時,會產生gas費用。

除此之外,智能合約錢包也可以用自己的賬戶余額支付gas費用給Bundler,也可以請求代付合約代為支付,我們稍后會詳細解釋

沒有足夠gas的UserOperation在目標智能合約錢包中無法通過驗證步驟,因此在執行之前就會失敗

即使有足夠的gas,UserOperation在執行步驟中仍可能失敗,例如runtimeerror

無論執行是否成功,入口點合約都將支付gas費用給Bundler觸發handleOp函數

入口點合約提供了智能合約錢包添加或提取代幣抵押的函數

圖:官方EIP4337文檔中的入口點合約工作流程

4.智能合約錢包主合約

智能合約錢包主合約將UserOperation的驗證和執行步驟分開:

驗證步驟在validateOp函數中定義。此函數會被調用兩次:第一次是Bundler在鏈下模擬驗證,驗簽UserOperation中的簽名,并確保智能合約錢包有足夠的gas余額;第二次是入口點合約在執行UserOperation之前進行鏈上驗證

執行步驟在UserOperation的calldata中定義,用于指定智能合約錢包函數的簽名和輸入參數

通過分離UserOperation的驗證和執行,Bundler可以在鏈下驗證UserOperation,從而不需支付gas就可以過濾掉惡意交易。因此validateOp函數也起到了鏈下debugAPI的作用。

5.代付合約

代付合約定義了智能合約錢包的gas抽象的邏輯。Gas抽象的形式包括用ERC20同質化代幣支付以太坊gas和無需gas的交易,兩者都可以由Paymaster來實現。ERC-4337的模塊化設計允許UserOperation通過paymasterAndData參數指定任意的Paymaster地址和輸入參數。Paymaster具有以下功能和要求:

本質上,Paymaster是由dApp部署的智能合約,可以通過Bundler觸發Paymaster的validatePaymasterOp函數以任意邏輯有選擇性地為合約指定的UserOperation支付gas

Paymaster需要在入口點合約上存入以太坊用于支付UserOperation的gas

除了存入gas外,Paymaster還需要在入口點合約上額外質押以太坊。這個質押不會被slash,但可以防止機器人惡意批量創建Paymaster

Paymaster是一個充滿競爭的開放市場。雖然官方沒有定義Paymaster的鏈上信譽系統,Bundlers可以在鏈下記錄Paymaster的服務質量并停止使用質量較低的Paymaster,從而激勵Paymaster為UserOperation提供可靠的服務。

Paymaster接口定義了兩個函數:

validatePaymasterOp:定義gas抽象邏輯。例如,在一個智能合約錢包以ERC20代幣支付gas的場景中,此函數將確保錢包具有足夠的余額。validatePaymasterOp在執行UserOperation之前被調用,符合將驗證步驟和執行步驟分開的設計邏輯

postOp:在智能合約錢包執行某一函數的最后一步被調用。如果錢包沒有足夠的ERC20余額來支付gas費給Paymaster,postOp會取消函數執行。即使在此步驟中函數執行因為runtimeerror失敗,gas仍然會被扣除。

圖:官方EIP4337文檔中的Paymaster工作流程

圖:官方EIP4337文檔中的Paymaster接口

6.錢包工廠

風險投資家Tim Draper:當萬物復蘇時,拯救世界的將是比特幣:隨著冠狀病爆發,市場持續低迷,加密貨幣仍未能作為對沖這種混亂狀況的避險工具。但是,風險投資家Tim Draper堅信,當萬物復蘇時,拯救世界的將是比特幣,而不是銀行和政府。據悉,Tim Draper是Skype、Tesla、SpaceX和其他初創公司的早期投資者,這些公司最終改變了世界。在最近的采訪中,他還描述了比特幣如何改變保險業。他稱,我可以用精算師人工智能(AI)創辦一家保險公司,以確定欺詐行為,并使用比特幣簽訂智能合約,然后把這些都放到區塊鏈上。(UToday)[2020/3/17]

WalletFactory是一個創建智能合約錢包的合約。回顧一下,UserOperation有一個可選的initCode字段。當initCode為空時,UserOperation只是觸發智能合約錢包的功能。當initCode填充了WalletFactory地址和新智能合約錢包的參數時,Bundler將觸發相應的WalletFactory使用指定參數創建智能合約。

WalletFactory在以下方面有助于實現賬戶抽象:

用戶可以通過提交填充了initCode的UserOperation來請求Bundler創建智能合約錢包,而無需擁有EOA來自行創建

用戶可以通過選擇具有特定定制選項的WalletFactory并傳入自己的參數來定制智能合約錢包。此外,因為WalletFactory合約是公開的,而且受歡迎的WalletFactory會經過全面的代碼審計,所以使用WalletFactory創建新錢包對用戶更安全

用戶可以選擇讓Paymaster代付創建錢包的gas或者用任意ERC20代幣支付gas,無需擁有以太坊。此外,Paymaster可以選擇只為其信賴的WalletFactory部署的智能合約錢包支付gas

用戶可以在創建錢包之前通過調用CREATE2函數獲取他們的智能合約錢包地址。該函數使用觸發智能合約錢包創建的EOA地址、一個salt和initCode確定性地生成智能合約地址。用戶在創建錢包時不需要支付gas,只需要在用錢包進行第一筆交易時同時支付創建錢包和交易的gas,從而提高用戶體驗。

WalletFactory還有其他職責。與Paymaster類似,它們需要在入口點合約上抵押ETH并持續性地為UserOperations提供良好的服務,以便從Bundler那里獲得更多流量。

7.簽名聚合器

因為不同的智能合約錢包使用不同的簽名算法,所以需要先將使用相同簽名算法的UserOperations聚合起來,然后分別進行驗證。此外,由于鏈上密碼學計算會消耗大量gas,支持聚合的簽名方案可以在鏈上驗證過程中節省gas。因此我們需要一個名為簽名聚合器的EIP4337智能合約接口。它可以通過實現以下兩個函數來支持特定的簽名算法:

aggregateSignatures:輸入參數為一個UserOperations數組,并使用特定的簽名算法輸出一個聚合簽名

validateSignatures:輸入參數為一個UserOperations數組和一個聚合簽名,用于對數組里的所有UserOperation進行驗簽

與其一次驗證一個UserOperation,Bundler首先會使用多個簽名聚合器合約生成多個聚合簽名。之后,Bundler將UserOperation數組、聚合簽名和聚合器地址傳遞給入口點合約,每個UserOperation數組會調用其對應的簽名聚合器的validateSignature函數。驗證通過后,Bundler就會在智能合約錢包上執行這組UserOperations。

與Paymaster和WalletFactory類似,聚合器也需要在入口點合約上質押以太坊并保持為UserOperations提供良好服務的記錄。

圖:官方EIP4337文檔中的簽名聚合器接口

8.整體工作流程總結

EIP4337的模塊化設計將智能合約錢包的賬戶抽象功能分為多個接口。這些接口的功能合在一起可以總結為如下的工作流程:

用戶向Bundler發送UserOperation

如果UserOperation填寫了initCode參數,Bundler會觸發WalletFactory來創建有確定地址的新錢包

如果UserOperation填寫了paymasterAndData參數,Bundler會收取Paymaster在入口點合約上質押的以太坊來支付gas。如果沒有填寫paymasterAndData,Bundler會收取智能合約錢包在入口點合約上質押的以太坊來支付gas

Bundler可以選擇性地使用簽名聚合器

Bundler會使用validateOp、validatePaymasterOp和validateSignatures函數在鏈下模擬驗證UserOperation,確保簽名正確且UserOperation有足夠的gas

如果鏈下模擬驗證通過,Bundler將使用上述函數在鏈上驗證UserOperation

如果鏈上驗證通過,Bundler將在鏈上執行UserOperation,無論執行是否成功,都會扣除gas

圖:沒有簽名聚合器的賬戶抽象工作流程

圖:帶簽名聚合器的賬戶抽象工作流程

9.其他注意事項

UserOperation在鏈下和鏈上都會觸發validateOp等函數進行交易驗證。為了防止智能錢包合約外部的狀態變化導致鏈下和鏈上的驗證結果不一致,EIP4337禁止驗證函數使用讀取合約外部storage和讀取全局狀態的OpCodes。這種禁止適用于validateOp、validatePaymasterOp和validateSignatures這些驗證函數。

第二部分:賬戶抽象市場參與者

1.智能合約錢包及配套SDK

智能合約錢包是賬戶抽象市場中最大的參與者。為了與EIP4337兼容,它們通常會實現自己的打包器、代付合約、錢包工廠和簽名聚合器。這些錢包還配備了方便dApp集成錢包的SDK。智能合約錢包市場比較擁擠,既有老牌大玩家如多簽錢包GnosisSafe在原有產品基礎上實現賬戶抽象功能,也有市場新人如Candide專注于構建完全兼容EIP4337的智能合約錢包。本節將介紹這些錢包的共同特點以及每個特點中的差異化。

現場 | 國際貨幣研究所研究員王沫凝:我們想實現的是萬物皆可上鏈:金色財經現場報道,12月1日,在三亞舉辦的海南國際離岸創新創業示范區建設暨區塊鏈?數字資產交易技術創新高端論壇上,中國人民大學經濟學博士、國際貨幣研究所研究員王沫凝演講表示,最終我們想實現的是萬物皆可上鏈,數字資產的形成過程源于企業或個人的交易活動、電子支付等行為而產生,還來源于專利、知識產權等科技活動,數字資產的內涵非常廣泛,可能是貨幣電子化、電子貨幣化。數字資產擁有價值和使用價值,交易時即成為商品,在企業使用時,則發揮價值職能。[2019/12/1]

a.社交登錄和社交恢復

社交登錄為智能合約錢包提供了Web2用戶非常熟悉的交互體驗,例如使用已有的Google帳戶創建和登錄錢包。同樣的邏輯也可以延伸到社交恢復上,例如使用郵箱重置智能合約錢包的密碼。社交登錄和社交恢復的邏輯一般在錢包的主合約中定義。

這里我們引入守護者的概念。守護者是指可以授權用戶訪問某賬戶或幫助用戶重制恢復某帳戶的實體。守護者可以是Web2賬號也可以是郵箱地址。這個概念在Web2中已經有了很廣泛的應用,現在也可以通過賬戶抽象的概念在智能合約錢包中實現。

一個智能合約錢包可以有多個守護者。用戶需要在創建錢包過程中或之后設置守護者,并達到一定的守護者驗證閾值,例如3個守護者中的2個,以登錄或恢復錢包。這個過程通常被稱為多因素認證。以下是常見的智能合約錢包守護者類型:

Web2服務提供商:例如錢包用戶的社交媒體帳戶,通常通過實施OAuth標準來實現。該標準允許錢包獲取用戶授權來訪問由另一個Web2應用托管的用戶賬號信息

用戶設備:例如瀏覽器存儲和移動端存儲

電子郵件:例如通過點擊可以發送簽名的電子郵件鏈接進行授權

多簽名:用戶可以設置多個個人擁有的EOA或智能合約錢包作為守護者

MPC:用戶可以將私鑰分割成多個份額,每個份額由MPC網絡中的一個節點控制,且不會泄露完整的密鑰

SWIE

讓我們看看一些市場上玩家對此功能的實現:

Web3Auth是許多高流量智能合約錢包使用的社交登錄和MPC服務,這些錢包包括Biconomy、Etherspot和0xPass。Web3Auth把用戶密鑰分割成多份給社交登錄、用戶設備和其MPC節點網絡等守護者。產品邏輯實現完全在鏈下,且沒有任何一個守護者會存儲完整的私鑰。

BLSWallet和Argent使用多簽技術通過用戶指定的多個EOA地址進行密鑰恢復。

UniPass實現了一種創新的方法,通過電子郵件進行社交恢復。用戶在鏈上提交守護者的郵箱,并通過智能合約在鏈上驗證郵箱的DKIM簽名。DKIM是一種電子郵件身份驗證協議,用于創建數字簽名。郵箱供應商可以使用該數字簽名驗證郵件發送者的身份。UniPass還使用零知識證明對鏈上的用戶信息進行脫敏處理。UniPass也支持郵件之外的社交恢復方法。

SoulWallet在鏈上驗證守護者的郵箱地址以進行社交恢復。

圖:Web3Auth社交登錄和社交恢復,此案例中有三個守護者

b.GasAbstraction

Gasabstraction包含無gas交易和使用任意ERC20代幣支付gas。這些邏輯可以在代付合約中實現,也可以通過中繼器實現。

許多智能合約錢包自己實現了與EIP4337兼容的Paymaster合約,并在入口點合約上質押代幣,幫助用戶支付gas。

Relayer是在EIP4337之前就存在的另一個gasabstraction的解決方案。Relayer是用戶信任的交易轉發者,執行一種稱為“元交易”的特殊類型的無gas交易。元交易是一種以太坊交易,它在原始交易中插入另一個交易。用戶使用私鑰對元交易進行簽名,并將其發送給Relayer,后者對其進行驗證,將其提交給區塊鏈,并代付gas。Relayer只是執行交易,而不改變交易本身。Relayer會獲取經濟上的利益,因為它們會向執行交易的合約收取gas費用加上一小筆利潤。例如,Relayer可以向支持無gas交易的去中心化應用收費。Relayer可以是中心化的可信第三方,也可以是去中心化的網絡。Relayer與代付合約的區別在于以下幾點:

除了支付gas外,Relayer還會對交易進行簽名,類似于EIP4337中的Bundler所做的事情

Relayer不只處理UserOperations類型的交易

Relayer不在入口點合約上質押gas

讓我們看看一些市場上玩家對此功能的實現:

Biconomy不僅自行實現了與EIP4337兼容的Paymaster,還有一個支持任意ERC20代幣支付gas的Relayer網絡。

Argent使用第三方Relayer以元交易的形式支付gas。

Candide自行實現了Paymaster。

UniPass使用自己的Relayer節點支付gas,計劃在未來添加“觀看廣告免gas交易”模式并支持使用跨鏈橋支付gas。

到目前為止,大多數ERC20支付gas的解決方案僅支持非常有限的代幣類型,主要是穩定幣,盡管我預見這在未來會發生變化。

圖:Biconomy使用Paymaster支持無gas交易

圖:Biconomy通過Relayer使用任意ERC20支付gas

c.法幣出入金通道和跨鏈橋

許多現有的錢包,如MetaMask,已經通過和第三方供應商合作的方式把法幣出入金通道和跨鏈橋集合在錢包中。這些出入金通道和跨鏈橋可以進一步與gasabstraction中的代付合約進行集合。

讓我們看看一些市場上玩家對此功能的實現:

Biconomy和0xPass與Transak合作提供法幣通道。Biconomy還提供跨鏈橋和跨鏈通信服務。

ArgentVault與Moonpay、Transak和Wyre合作提供法幣通道,并具有內置的DeFi協議聚合器。

ITC萬物鏈與Hero Node達成戰略合作:ITC萬物鏈官方團隊宣布與Hero Node(HER,跨公鏈DApp開發平臺)建立戰略合作關系。ITC萬物鏈團隊表示,多公鏈時代,跨公鏈DApp(分布式應用)開發的推進,關乎區塊鏈生態大環境的可持續發展。未來雙方將圍繞價值跨鏈、業務跨鏈與架構跨鏈,在安全、數據資產等方面開展合作,共同構建開源、自治的DApp生態環境。[2018/5/10]

Etherspot、UniPass和Braavos支持法幣通道、swap和跨鏈橋。

d.交易批處理

交易批處理是智能合約錢包獨有的功能,允許錢包用戶在一個鏈上交易中執行多個交易。一種實現方法是調用一個multiCall函數,它接受兩個參數:一個calldata數組和一個合約地址數組。multiCall函數中有一個循環并在每次循環里執行一個函數調用。交易批處理可以使多個交易分攤一個以太坊交易的固定gas費,從而減少成本。

請注意,交易批處理不同于簽名聚合,后者接受一個UserOperations數組作為輸入參數并輸出一個聚合簽名字節以加快多個簽名驗證的速度。而這個數組中的每個UserOperation都可以調用一個multiCall來執行交易批處理。

在EIP4337中實現交易批處理的方式如下:入口點合約調用handleOp函數,然后該函數再調用智能合約錢包主合約內定義的multiCall函數。

讓我們看看一些市場上玩家對此功能的實現:

Biconomy設置了一個MultiCall合約,智能合約錢包可以調用這個合約來批量執行交易。

Argent通過名為TransactionManager的智能合約模塊來批量執行交易,該模塊支持multiCall和用戶會話密鑰。

Etherspot、Candide、Openfort和0xpass都支持交易批處理。

圖:示例MultiCall合約

e.智能合約錢包的模塊化設計

智能合約錢包相對于EOA的一個主要優勢是其模塊化設計。錢包的功能可以通過錢包提供商開發的合約模塊進行擴展。這些模塊提供了EIP4337接口中未定義的功能,并可以由用戶自定義。模塊化設計下,智能合約錢包是可升級的。這種做法在EIP4337發布之前就已經是行業標準,由諸如GnosisSafe之類的產品率先推出。GnosisSafe是一款主要針對商業用戶的多簽名錢包,提供一系列EIP4337沒有定義的功能:

支出限制:限制有簽名權限的帳戶可以從錢包中提取的金額。

定期打款:根據自定義時間自動打款。

角色和授權:為錢包不同的交易和行為定義所需的角色和授權。

組織權限:基于組織內不同角色的權限設置。

白名單和黑名單

同樣的模塊化設計也被EIP4337兼容的錢包繼承,包括Argent、Candide、SoulWallet和zeroDev。

另一種擴展智能合約錢包功能的方法是在錢包里原生地集成去中心化應用。例如,GnosisSafe為dApps提供了一個SDK。使用此SDK的dApp可以直接出現在錢包界面中,等同于為錢包提供了一個內置的應用商店。其他類似解決方案包括WalletConnect。然而,這些前端解決方案并不是協議層的設計,因此超出了本文討論的范圍。

圖:Candide錢包的模塊化設計與Safe類似

2.基礎設施提供商

下面將討論各種Layer2對賬戶抽象的支持以及打包器和代付合約的第三方基礎設施提供商。

a.Layer2上的賬戶抽象

鑒于最近L2的爆炸式增長,許多智能合約錢包已將開發重點轉向L2。許多L2都原生地支持與EIP4337非常相似的賬戶抽象合約標準,本節將對此進行探討。

Optimism

Optimism的第一版通過引入三個EVM不支持的OVMOpCodes來實現賬戶抽象。在Optimism的技術實現中,智能合約是唯一的賬戶類型,因此所有用戶錢包都是智能合約錢包。智能合約錢包還可以通過調用upgrade函數升級合約代碼。

不幸的是,為了與EVM保持完全一致和出于安全方面的考慮,Optimism的第二版移除了這三個OVMOpcodes和對賬戶抽象的支持。

雖然目前有少數智能合約錢包正在Optimism上構建,但是尚無關于支持賬戶抽象的官方聲明。

Arbitrum

雖然目前有少數智能合約錢包正在Arbitrum上構建,但是尚無關于支持賬戶抽象的官方聲明。

Starknet

與以太坊不同,Starknet不區分EOA和合約賬戶。因此,所有Starknet賬戶都是智能合約賬戶。Starknet的賬戶模型受到EIP4337的很大影響,具體表現在以下方面:

所有Starknet智能合約賬戶都必須包含validate和execution函數。validate是必需的函數,通過驗證簽名確保只有賬戶所有者才能發起交易,同時保證交易執行者可以獲得足夠的gas費。用戶可以在validate和execute函數中實現任意邏輯,從而靈活擴展賬戶的各種功能。例如,用戶可以在validate函數中實現不同的驗簽算法。

為了防止交易通過驗證但無法執行,Starknet禁止validate函數調用外部合約的狀態。

Starknet對賬戶抽象的實現和以太坊相比依舊存在顯著的差異:

Starknet不區分常規交易和UserOperations,因為所有交易都是由合約賬戶觸發的。在以太坊中,Bundlers執行UserOperation交易,而在Starknet中,序列器執行所有交易。

Starknet尚未實現類似Paymaster的交易手續費抽象協議。

Starknet要求有代幣余額的賬戶通過調用一個專門的deploy_account函數來創建新的合約賬戶。而在EIP4337中,Bundler通過執行initCode參數不為空的UserOperation交易來部署合約賬戶,部署過程不必須有代幣余額的賬戶,因為gas費可以由Paymaster代付。

ITC萬物鏈亮相《福布斯》:日前,美國知名商業雜志福布斯官方網站《Explaining Directed Acylic Graph (DAG), The Real Blockchain 3.0》一文中指出DAG技術是區塊鏈3.0,并表示基于DAG技術的中國區塊鏈項目“ITC萬物鏈”或許正在成為這個領域的領導者。[2018/1/23]

如果通過驗證的交易在執行步驟失敗,Starknet的序列器將無法抽取任何gas費,而以太坊沒有這個問題。

圖:Starknet沒有EOA賬戶類型,只有合約賬戶

zkSync

zkSync也不區分EOA和合約賬戶,因此原生地支持賬戶抽象。zkSync的賬戶模型與EIP4337十分類似,具體表現在以下方面:

賬戶接口也將validateTransaction和executeTransaction函數分開。

代付合約接口也包括validateAndPayForPaymasterTransaction和postOp函數。前者定義了Paymaster代付交易的邏輯。后者可以確保在交易執行后,Paymaster能夠抽取gas費補償,盡管這部分功能尚未實現。

用戶也通過填寫交易中的paymaster地址和paymasterInput兩個參數來調用Paymaster,類似于EIP4337中的UserOperation。

然而,zkSync實現的賬戶抽象和以太坊也存在顯著差異:

zkSync允許validateTransaction函數調用已部署的外部合約,因為已部署的合約在zkSync中是不可更改的。以太坊禁止驗證函數調用外部合約,以防止狀態更改造成交易驗證通過而交易執行失敗。

zkSync允許validateTransaction調用發出此交易合約賬戶的外部存儲,例如合約賬戶在外部合約上的代幣余額,理由同上。

在交易驗證期間,Paymaster可以調用外部存儲,理由同上。

b.第三方基礎設施提供商

如上所述,賬戶抽象基礎設施包括可以發送UserOperations的客戶端SDK、打包器、代付合約和簽名聚合器。這些基礎設施通常由智能合約錢包自身實現,從而更好地整合產業上下游,但是大多數都不是為第三方使用而設計的。因此市場上需要第三方基礎設施提供商來提供模塊化和可定制的Bundler和Paymaster服務。一些知名的基礎設施玩家比如Alchemy也進入了這個市場。本節會深入探討這些第三方基礎設施提供商。

Stackup

Stackup是一個Bundler和Paymaster的提供商。其Bundler采用Go語言實現,通過了所有EIP4377測試套件的要求,完全開源且免費使用。StackupBundler支持不同的模式:

私有模式:UserOperations進入一個私有內存池,以更慢的交易執行速度換取更好的隱私。UserOperation不會顯示在公共內存池中,從而避免了MEV攻擊。

搜索模式:由以太坊生態的機器人運營者使用,并與諸如Flashbot之類的區塊構建者集成,通過MEV-Boost發送UserOperations,允許searcher為特定的交易排序出價,以供blockbuilder選取MEV最大的交易排序構建區塊。

Stackup還支持兩種類型的Paymaster:

VerificationPaymaster:提供需要鏈下交易的gas抽象。例如,用戶可以選擇使用信用卡訂閱Paymaster服務來支付gas費。用戶也可以定制gas代付的邏輯。Stackup將通過“按需付費”模式向用戶收費。

DepositPaymaster:允許用戶用ERC20代幣支付gas費。

圖:Stackup的基礎設施產品套件

Blocknative

Blocknative主要是一個內存池瀏覽器和可視化工具提供商。得益于其對于內存池較強的理解,Blocknative提供了具有獨特功能的打包器服務,例如:

使用EIP4337交易瀏覽器可視化內存池中UserOperations的狀態,方便錢包和dApp實時監控交易的狀態

Blocknative的核心產品內存池瀏覽器也可以監聽入口點合約中待處理和已確認的Bundler交易

Alchemy

Alchemy目前正在開發其Bundler和Paymaster服務,潛在用戶可以加入waitlist。

圖:Alchemy的EIP4337基礎設施服務還在開發中

eth-infinitism

eth-infinitism是以太坊基金會的官方團隊,目前已經實現了EIP4337標準定義的Bundler和Paymaster。關于該團隊的文檔很少,但是根據Stackup的一篇文章,截至2023年2月,eth-infinitism是通過EIP4337官方測試套件的唯一兩個Bundler之一。

第三部分:賬戶抽象的未來之路

1.歸根結底,賬戶抽象市場的生死存亡取決于生態對EIP4337的采用,而這個市場還非常早期

根據Web3CaffResearch最近的一篇研報,以太坊中所有交易的發起地址去重后的總數約為1.5億。然而,智能合約錢包的總數,以GnosisSafe和Argent賬戶的總和來估算,僅為15萬。

假設在終局,EOA和智能合約錢包的數量相等,我們可以預測智能合約錢包的市場規模有1000倍的潛力。盡管如此,生態對智能合約錢包的采用并不會一帆風順。像MetaMask這樣的EOA錢包巨頭仍未宣布采用EIP4337的計劃。盡管我們不知道他們的意圖,但也不難推斷,主流EOA錢包的巨大利潤并不足以支持其團隊內部采用一個基礎設施都不完善的新標準。UserOperation仍然不是dApps廣泛使用的主流交易類型。雖然如此,我依舊對智能合約錢包市場保持樂觀態度,也可以預見到智能合約錢包對用戶體驗的大幅改善會為賬戶抽象市場帶來的指數級的增長,盡管這種爆發可能還需要一兩年才發生。

2.EIP4337尚未完成,同志仍需努力

盡管EIP4337定義了諸如打包器、代付合約和簽名聚合器等基礎設施的合約接口,以太坊官方并沒有給出很多重要技術問題的解決方案,而這些問題需要項目方反復嘗試不同的技術實現,比如:

目前Bundler主要在私有內存池廣播交易,UserOperation被直接發送給指定的區塊構建者。Bundler網絡是否有可能使用公共內存池?

Bundler能否通過對UserOperations進行排序來抽取MEV?區塊構建者能否通過對捆綁交易進行排序來抽取MEV?MEV將如何在Bundler和區塊構建者之間分配?我們是否應該將Bundler和區塊構建者分開?

考慮到Bundler需要完成大量的鏈下模擬和鏈上驗證,它們能否同時作為可靠的區塊構建者?

UserOperation的內存池和常規交易的內存池應該如何協調以避免狀態沖突?

3.L2采用EIP4337的速度各異

盡管zkSync和Starknet已經原生地支持賬戶抽象,但它們仍未實現所有的EIP4337接口,并且在技術實現上與以太坊存在差異。盡管許多項目團隊正在為Optimism和Arbitrum構建智能合約錢包、打包器和代付合約,但這些L2尚未宣布官方支持EIP4337的計劃,賬戶抽象也并非他們的開發重點。

從純技術的角度來看,L2賬戶抽象基礎設施的實現比L1更為復雜。例如,在驗證步驟中,一個L2智能合約錢包需要同時估算L1和L2的gas費,并分攤給捆綁交易里的每個UserOperation。

4.拋開技術細節,一個優秀的智能合約錢包需要有哪些特點?

盡管錢包市場上有許多創新的功能,大多數智能合約錢包都支持所有上述功能,因為這些功能的技術實現并不困難。因此,智能合約錢包的商業層面與用戶體驗層面同樣重要。重要的商業因素包括:

與dApps合作:與每個L1或L2鏈的流量入口級dApps合作,尤其是基礎設施類的dApps,是吸引用戶的主要途徑

實用功能:如錢包內部集成的NFT市場、launchpad或快速集合新的交易對

外部支持:如來自VC或以太坊基金會的官方支持,這些支持可以幫助錢包找到第一批用戶

5.一個優秀的打包器需要有哪些特點?

無需許可且模塊化的Bundler服務是一種公共物品。絕大多數Bundler的開源性質決定它們是非排他性和非競爭性的。任何RPC端點都可以通過復制開源代碼來運行一個Bundler。即使運行Bundler的RPC端點通過API密鑰來收取服務使用費,Bundler服務也比其他基礎設施更難盈利,因為后者可以通過與第三方出入金或DeFi協議聚合器提供商合作輕松賺取費用差價。雖然更難商業化,但是Bundler是一種重要的公共物品,因為UserOperation的驗證和執行需要盡可能多的Bundler參與從而更好地去中心化。因為Stackup和eth-infinitism是目前唯二可用的第三方Bundler服務提供商,所以我們肯定需要更多這樣的Bundler服務提供商。

Bundler服務提供商需要克服許多技術難點:

對鏈下和鏈上的多個驗證步驟進行深入研究,從而確保UserOperation可以成功執行。技術難點包括理解多個UserOperations之間可能出現的狀態沖突。

理解驗證函數對某些OpCode的禁用:

由于讀取可變的外部狀態可能導致交易驗證成功但執行失敗,因此EIP4337禁止驗證函數調用讀取外部狀態的OpCodes。

不同的L2對讀取外部狀態的OpCode有略微不同的禁用,會對多鏈開發造成挑戰。

正在構建Bundler的項目方需要通過traceCall函數來獲取每個函數調用的OpCodes。然而,大多數第三方RPC節點都不支持traceCall,因此Bundler項目方可能需要運行自己的節點,這也存在技術壁壘。

目前大多數Bundler項目方的開發重點都在L2,需要分別計算L1和L2的gas費。

實現私有和公共內存池的P2Pnetwork。私有內存池需要為searcher和dApps提供定制化的服務,例如白名單。公共UserOperation內存池的行業標準尚未完成。

Bundler服務提供商的差異化在于:

Bundler服務是專為錢包構建的,還是第三方基礎設施提供商構建的?

Bundler只是錢包項目方需要構建的眾多事物之一,因此他們更可能專注于為錢包構建一個最基礎的可用的Bundler。

第三方基礎設施提供商需要構建無需許可和模塊化的Bundler,并為不同的場景提供優質的服務。

類似于以太坊節點,Bundler服務采用不同的語言實現。這種語言多樣性可以防止單點故障,對以太坊生態有益。

對私有和公共內存池的支持以及對私有內存池進行定制的選項。

對L1和不同L2鏈的支持,每個鏈在接口實現上略有不同。

6.讓我們聊聊創新

本節將列舉智能合約錢包和賬戶抽象基礎設施中最需要的創新。

無需許可和模塊化的EIP4337基礎設施

讓我們首先設想一下EIP4337基礎設施的終局:

許多打包器、代付合約和簽名聚合器提供商會在一個開放市場上競爭。用戶可以用最低費用獲取高質量服務

市場上既存在無需許可的Bundler、Paymaster和SignatureAggregator公共端點,也存在專門為某個智能合約錢包或dApp部署的端點

智能合約錢包、dApp和個人用戶可以以無需許可、模塊化和用戶友好的方式部署上述的基礎設施。換句話說,第三方基礎設施提供商允許從任意地址快速且可定制地部署Bundler、Paymaster和SignatureAggregator

在當前市場狀態下,許多智能合約錢包已經構建了自己的基礎設施,但是這些基礎設施并未針對第三方的不同使用場景。諸如Stackup之類的第三方基礎設施提供商正在開發模塊化的Bundler和Paymaster,但是它們的部署過程仍然遠未達到無需許可。因為EIP4337尚未完成,這些基礎設施的模塊化功能還沒有被全部定義。此外,由于UserOperation交易量依舊較低,啟用了簽名聚合的錢包仍然不是主流。

EIP4337下游基礎設施

這些包括EIP4337未定義但實現EIP4337基礎設施所需的下游基建,比如可以集成到Paymaster的法幣出入金聚合器和DeFi聚合器。因為這些解決方案已經存在,所以創新最有可能在現有提供商內部發生,提供商只需重新配置它們公開的接口。

dAppSDK和腳手架

盡管現有的智能合約錢包都為了方便dApp集成而構建了自己的客戶端SDK,但市場仍然缺少:

支持賬戶抽象功能的類似于ether.js的dApp開發標準庫,比如對如下功能的封裝:

使用Web2社交媒體賬戶和電子郵件創建錢包和恢復錢包地址

UserOperations的創建、簽名、發送以及的事件監聽

快速部署Paymaster和SignatureAggregator

聚合所有主要智能合約錢包的SDK和UI工具

用于快速前端部署的腳手架工具,以便dApp開發人員可以專注于他們產品的業務邏輯

由賬戶抽象賦能的新型dApp的模板,例如支持gas抽象的游戲

更激進的做法:將賬戶從智能合約錢包分離

EIP4337的智能合約錢包接口只需要一個validateOp函數,將所有的核心業務邏輯,如用戶注冊、權限控制和社交恢復等,留給錢包開發者自由決定。雖然這提供了更多的靈活性,但不同的智能合約錢包會更加割裂以太坊生態,因為一個錢包中的數據不能輕易地轉移到另一個錢包。dApp也可能通過支持某些智能合約錢包而不支持其他錢包加劇這種分裂。

此外,盡管用戶可以通過郵箱或其他在Web2常見的流程登錄智能合約錢包,他們仍需要通過“連接錢包”這類Web2用戶不熟悉的操作流程來登錄dApp。

解決這些問題的一個激進方案是通過創建新的賬戶標準,將賬戶與智能合約錢包分離,例如Hexlink倡導的EIP6662。EIP6662定義了一個IAccountMetadata的賬號接口,使用戶可以自定義自己賬號的認證方法,從而將認證邏輯從錢包主合約轉移到單獨的賬戶接口。支持此接口的智能合約錢包可以允許用戶將其賬戶數據轉移到另一個錢包。支持此接口的dApp可以允許用戶使用賬戶接口中定義的Web2認證方法登錄他們的Web3賬戶。dApp可以驗證來自Web2認證方法的簽名,以此查詢Web3賬戶地址,向Web2賬戶推送通知,并連接到Web3賬戶。用戶不需要為不同的dApp創建其支持的不同的錢包。相反,dApp會自動連接到與用戶Web2認證方式關聯的Web3賬戶。用戶賬戶和錢包不再是一體也不再受制于錢包,錢包本質上成為了用戶可以登錄賬戶來進行資產管理的dApp。

結論

EIP4337將智能合約錢包及其相關基礎設施標準化為六個合約接口:智能合約錢包主合約、打包器、入口點合約、代付合約、錢包工廠和簽名聚合器。UserOperation是EIP4337支持的新交易類型。

賬戶抽象市場有兩類參與者:

具有社交登錄、社交恢復、gas抽象、交易批處理,以及集成和聚合第三方服務等功能的智能合約錢包。

基礎設施的第三方提供商,專注于模塊化設計。

我對賬戶抽象市場有如下預測:

智能合約錢包市場競爭激烈,因為競品的功能類似,技術壁壘也較低。

Bundler是一種盈利較難但是生態十分需要的公共物品。

賬戶抽象仍然是一個非常早期的市場,因為采用率仍然很低,EIP4337尚未完成,許多L2尚未實現對賬戶抽象的支持。

賬戶抽象市場需要許多創新,如:無需許可的模塊化基礎設施、與現有法幣和DeFi服務的集成、dAppSDK以及潛在的獨立帳戶層。

鳴謝與免責

在撰寫本文時向幾位行業專家和朋友進行了請教交流,特別在此感謝陳劍Jason、PlanckerDAO的王奕翔Aaron、獨立研究員菠菜菠菜、Hexlink團隊、AntAlphaVentures的CircleFang、Skyhigh等各位的交流探討!

因本人認知有限,調研時間有限,可能會出現錯誤和疏忽。如有不同意見,歡迎交流指正,非常感謝!研究為個人興趣,與文章里提到的所有項目都不存在經濟利益關系,但也不作為投資建議。

歡迎大家關注我的推特@SteveIsEmployed,如果你想深入探討交流,也可以添加微信clairvoyant_98。

參考文獻

https://ethereum.org/en/roadmap/account-abstraction/

https://eips.ethereum.org/EIPS/eip-4337

https://antalphaventures.notion.site/2edc5e36f69a44fe9a27dad0ef6ac3fb?v=a0fad60e889a4b2f831a2349d92ca11b

https://www.stackup.sh/blog/a-guide-to-the-top-erc-4337-bundlers-features-performance-and-more

https://github.com/PaymagicXYZ/awesome-account-abstraction

https://camiinthisthang.substack.com/p/account-abstraction-for-everyone

https://research.web3caff.com/zh/archives/4660

https://research.web3caff.com/zh/archives/3212

https://www.alchemy.com/blog/account-abstraction

https://www.alchemy.com/blog/account-abstraction-paymasters

https://www.alchemy.com/blog/account-abstraction-wallet-creation

https://www.alchemy.com/blog/account-abstraction-aggregate-signatures

https://docs.starknet.io/documentation/architecture_and_concepts/Account_Abstraction/approach/

https://era.zksync.io/docs/dev/developer-guides/aa.html#example-of-using-the-library

https://www.alchemy.com/account-abstraction

https://docs.zerodev.app/

https://eips.ethereum.org/EIPS/eip-4361

https://beta-docs.0xpass.io/

https://braavos.notion.site/Public-Docs-d98f625edb2e4399acab2e30d060ef8e

https://github.com/proofofsoulprotocol/soul-wallet-contract

https://docs.wallet.unipass.id/introduction/intro

https://docs.blocknative.com/4337-tools/blocknative-bundler

https://docs.candidewallet.com/develop/getting-started

https://docs.stackup.sh/docs/packages/bundler/introduction

https://github.com/web3well/bls-wallet

https://docs.etherspot.dev/

https://biconomy.gitbook.io/sdk/introduction/overview

Tags:IONERONDLERAGenesis VisionVERO幣Bundles Financetera幣放棄

Uniswap
Bankless:一覽五大新興L2項目 如何進行早期交互?_BAS

原文作者:Bankless原文編譯:MaryLiu,比推BitpushNews一年前,以太坊第二層(L2)擴展解決方案賽道的「四大」領頭羊是:Arbitrum、Optimism、zkSync和S.

1900/1/1 0:00:00
首份監管文件來了 AIGC管理辦法征求意見劍指何方?釋放哪些信號?_ATG

新興產業的立法速度正不斷加快,在多國政府注意到ChatGPT風險時,生成式人工智能產業也在國內迎來首份監管文件.

1900/1/1 0:00:00
解讀港交所報告:ETF與全球金融市場虛擬資產生態圈的發展_ETF

2023年4月,香港交易所官方發布了一份名為《ETF與全球金融市場虛擬資產生態圈的發展》的研究報告.

1900/1/1 0:00:00
LK Venture研報:ZK Bridge能否成就「跨鏈大戰終局」?_DGE

如今,以太坊占據著區塊鏈行業基礎設施的半壁江山,但是其主網的統治地位正在被許多后來者挑戰。行業普遍的共識之一是,未來或將是多鏈共存的格局,跨鏈甚至全鏈則是多鏈生態中最關鍵的一環.

1900/1/1 0:00:00
歐盟數字金融監管新規MiCA來了,你最需要了解什麼?_ICA

歐洲議會于?4?月?20?日通過了歐洲加密資產市場法規。據悉,歐盟是世界上第一個引入全面加密法的主要司法管轄區,通過沒多久后,美國國會派遣十幾名國會工作人員負責了解歐盟新的加密法律框架.

1900/1/1 0:00:00
盤點9個模塊化區塊鏈平臺的特點和最新動態_CEL

JessicaFarago2023-04-2016:212023年,隨著以太坊合并成功、Layer2Rollups生態爆發,以太坊系統轉向了模塊化架構.

1900/1/1 0:00:00
ads