基礎設施如何通過賬戶抽象為數十億用戶提供支持?

無論是牛市還是熊市,以太坊生態系統一直在不斷地建設和自我優化。其中,賬戶抽象(Account Abstraction,AA)近年來取得了重要的進展,並已滲透到以太坊生態系統的各個部分,包括應用、基礎設施、用戶和開發者。我們可以預見,AA 的大規模採用將從整體上降低區塊鏈使用的門檻,並將web2 的用戶體驗引入web3 行業。

為了抓住數十億美元潛在價值的AA 市場的機會,BlockPI 計劃將AA 融入其基礎設施服務。通過在AA 領域進行整合創新,BlockPI 致力於為AA 用戶提供更便捷、高效的區塊鏈合約錢包賬戶互動方式,並希望成為該行業的引領者。

在本文中,BlockPI 團隊將深入探討他們對AA 的理解,並從基礎設施服務提供商的角度分享思考。

EOA 和合約錢包

AA 的概念源於EOA 賬戶的局限性。 EOA 賬戶(external owned account)是以太坊中的用戶賬戶,由公鑰(區塊鏈地址)表示,通過私鑰訪問。它是以太坊生態系統的主要組成部分,允許用戶在區塊鏈上轉賬或與智能合約交互。然而,對很多人來說,使用EOA 本身就是一項充滿挑戰的任務。況且,現在的EOA 賬戶依舊存在一些使用上不便之處,影響用戶體驗。

首先就是Gas 費問題。每筆交易都會花費用戶相當多的ETH 作為Gas 費(以25 Gwei 的Gas price 為例,簡單的ETH 轉賬的Gas 費約為0.5 美元,進行合約交互或當Gas price 更高時則會更貴)。這使得小額交易的手續費顯得非常昂貴,尤其是在網絡擁堵嚴重的時期。此外,只能使用ETH 支付Gas,這意味著用戶必須在錢包中持有ETH,對很多用戶而言,這構成了一個較高的進入門檻。

其次,對於用戶想要實現的某些複雜操作,EOA 必須藉助於其他的智能合約。例如,如果用戶想要設置定時周期性轉賬,則用戶需要將ETH 轉到具有此功能的某個智能合約中來實現該操作。

EOA 的第三個問題是固定的簽名加密算法。以太坊網絡使用一種名為secp256k1 的數字簽名算法,來確保交易的真實性和安全性。該算法被硬編碼到系統中,用戶無法選擇使用其他加密算法。

除了上述的三個問題之外,EOA 的公鑰和私鑰之間的綁定關係也是一個問題。私鑰是用戶訪問EOA 的唯一途徑,如果私鑰丟失,將無法找回。這同時意味著與之關聯的EOA 內的所有資產將無法找回。

同時,在執行某些線性任務時,EOA 也存在限制。例如,如果用戶希望在一個操作中批准(approve)、交換(swap)和取消批准Token(unapprove token),需要執行三個單獨的交易,既低效又耗時。

好消息是,合約錢包可以解決上述的所有問題。合約錢包本質上是一種實施了AA 的特定類型的智能合約賬戶,它可以在以太坊上作為用戶的錢包使用。並且可以給用戶提供更靈活也更個性化的方式來管理資金。只要是以太坊智能合約能夠實現的邏輯,合約錢包就可以實現並提供對應的功能。

具體地說,多個合約錢包操作可以被打包到一筆鏈上交易中,這些操作則可以分攤這一筆交易的Gas 成本。如果第三方願意支付Gas 費用,則對於使用合約錢包的用戶來說不需要支付Gas。合約錢包也可以一次性完成多個線性任務。除此之外,合約錢包還支持自定義簽名的加密算法,並設置錢包恢復的功能等等。

隨著對合約錢包優勢的討論持續進行,以太坊社區實際上早已對合約錢包進行了長期研究。儘管許多EIP 已經探討了賬戶抽象相關問題,但截至2021 年,仍未建立統一標準。以下是幾個具有代表性的EIP。

EIP-86

最初由Vitalik Buterin 於2017 年提出。該方案實現了一系列變更,其共同目的是「抽象化」簽名驗證和nonce 檢查,從而使用戶能夠創建能執行任意簽名/nonce 檢查的「賬戶合約」。

EIP-2938

於2020 年提出。這個EIP 的標題是賬戶抽象(Account Abstraction)。 AA 的概念在這個EIP 中有很好的描述。它引入了一種新的交易,即AA 交易。交易由入口點地址(EntryPoint address)發起,並調用AA 合約錢包。 EIP-2938 提供了一個統一的規範並正式將AA 賬戶抽象引入以太坊共識。具體來說,它在以太坊共識中引入了兩個新的操作碼、三個全局變量和一個不同的有效載荷結構。

EIP-3074

於2020 年提出。這個EIP 引入了兩個EVM 指令,AUTH和AUTHCALL。 AUTH根據ECDSA 簽名授權設置環境變量。 AUTHCALL作為授權賬戶發送調用。這允許智能合約代表EOA 發送交易。但這對AA 來說仍然不是一個完美的解決方案。在授權交易過程中,EIP-3074 在原生價值傳輸方面存在一定的限制。並且如果用戶丟失了對EOA 的訪問權限,仍將無法找回他的資產。如果遭遇私鑰洩露,用戶則需要將所有資產轉移到新賬戶中。

由於需要在共識層進行更改或方案不夠全面,上述提案均未被正式納入以太坊協議中。因此,以太坊社區繼續探索如何在不改變共識的前提下,將AA 引入以太坊協議,並最終提出了EIP4337。

ERC-4337

EIP-4337 最初於2021 年9 月提出,並於2023 年3 月獲得授權成為ERC-4337。其作者包括Vitalik Buterin、Yoav Weiss、Kristof Gazso、Namra Patel、Dror Tirosh、Shahaf Nacson 和Tjaden Hess。

EIP-4337 是一項具有顛覆性的提議,能夠在不改變核心以太坊協議的情況下引入AA。 EIP-4337 最終成為了ERC-4337 標準,構建者可利用該標準實現自己的智能合約錢包。同時該標準還引入了一些額外的基礎設施包括「Bundlers」和「UserOperation mempool」。如此一來,它實際上在區塊鏈系統上層複製了一個有相似功能的以太坊mempool。用戶提交的不再是單筆交易,而是UserOperation。這些UserOperations 可以打包成一個單筆交易並發送到以太坊上。

以下是以太坊[官方文檔]中ERC-4337 的詳細技術解釋,以及一些有助於理解的評論。

ERC-4337 的關鍵角色和其定義

  • UserOperation—描述代表用戶發送的交易的結構。為避免混淆,它沒有被命名為「transaction」它會被發送給Bundler,與其他UserOperations一起打包為一個Bundle。接著將Bundle 作為一筆單獨的交易發送到鏈上。

  • Sender—發送UserOperation的合約賬戶。該錢包合約必須遵循ERC-4337 標準配置IAccount接口。

  • EntryPoint—執行UserOperations捆綁包的全局單例合約。 Bundlers/Clients 將支持的EntryPoint列入白名單。該合約由Infinitism 團隊審計並且核准部署,負責處理所有UserOperations,並連接其他角色的合約,包括Wallet Factory、Aggregator、 Paymaster。該合約在EVM 兼容鏈上都是相同的地址。

  • Bundler—從mempool 打包多個UserOperations並創建EntryPoint.handleOps()交易的節點(當前出塊節點)。 Bundler 服務可以獨立於區塊鏈節點運行,並通過RPC 來發送打包好的UserOperations。

  • Aggregator—由賬戶信任的輔助合約,用於驗證聚合簽名。 Bundlers/Clients 將支持的簽名聚合器列入白名單。聚合器必須遵循ERC-4337 標準配置IAggregator 接口。

  • Paymaster—一個可以代付Gas 的智能合約。如果它在EntryPoint合約中存入了足夠的ETH,則可以為發送方支付UserOperation的Gas 費的智能合約, 從而有效地實現Gas 抽象。 Paymaster必須遵循ERC-4337 標準配置Paymaster接口。 Paymaster可以與Sender達成協議。例如,Sender向Paymaster支付USDC,Paymaster用ETH 來支付其發送的UserOperations的Gas。事實上,Paymaster可以選擇支持任何

代幣

,包括ERC-20

代幣

甚至其他鏈上的

代幣

  • Wallet Factory—可以為ERC-4337 用戶創建合約錢包的智能合約。部署Wallet Factory 是無需許可的。作為鏈上智能合約,其代碼向公眾開放,任何人都可以對其進行審查。一個廣泛使用的Wallet Factory 應當經過專業人士的全面審計。

下圖解釋了EntryPoint合約如何與其他角色交互。

  • Bundlers 調用EntryPoint合約的handleOps函數,該函數接受UserOperation作為輸入。

  • handleOps會在鏈上驗證UserOperation,檢查是否由指定的智能合約錢包地址簽名,並確認錢包是否有足夠的Gas 來補償Bundler。

  • 如果驗證通過,handleOps將根據UserOperation的calldata 中定義的函數和輸入參數執行智能合約錢包函數。

另一方面,當Bundler 使用EOA 觸發handleOps函數時,會產生Gas 費用。智能合約錢包可以從自己的賬戶餘額中向Bundlers 支付Gas 費用,或者請求Paymaster合約代付。 UserOperations在沒有足夠Gas 的情況下無法通過鏈下的驗證步驟,即在鏈上執行交易前失敗。即便具備足夠的Gas,UserOperations在執行過程中仍可能因運行時錯誤等原因失敗。對於一筆UserOperation,無論執行合約成功與否,EntryPoint合約都會向觸發handleOps函數的Bundler 支付Gas 費用。

在ERC-4337 生效後,用戶現在可以通過兩種方式發起區塊鏈交易。一種是傳統方式,即由EOA 直接發起交易。另一種是使用ERC-4337 標準,通過Bundler 發起UserOperation,隨後Bundler 會將其與其他UserOperations打包並發網鏈上。以下流程圖闡述了普通EOA 發送交易與ERC-4337 合約錢包發送UserOperation之間的差異。

道路已經鋪好,但尚無眾多行人

ERC-4337 提供了一個強大的框架,讓用戶和開發者可以在以太坊使用和構建AA。儘管該框架是一個重要的進步,但仍存在一些挑戰和不確定性需要應對和解決。

AA 的採用還處於初級階段。根據Dune ERC-4337 分析面板[ERC-4337 Account Abstraction],鏈上僅執行了65k+ UserOperations,其中90% 來自Polygon。因此,目前執行的UserOperation數量仍然非常少,其中大部分是開發者的測試,而只有很小一部分來自於真實用戶。我們注意到,已經整合了AA 的產品仍處於初期階段。目前,我們可以觀察到,Bundlers 整體仍舊處於虧損狀態,目前虧損約為700 多個MATIC。這主要是因為一些Polygon 上的Bundler 錯誤預估需要的Gas 引起的,導致EntryPoint返回的的Gas 少於提交的Bundle 消耗的gas。這個問題需要在Bundler 客戶端層面解決。

除此之外,還有一些問題需要解決。其中一個問題是Bundlers 如何處理交易失敗。

在將多個UserOperations打包在一起後,Bundlers 首先會模擬交易,檢測是否會出現合約執行失敗,併計算Sender或Paymaster返回的Gas 費用是否大於支付的Gas 費。

如果有利可圖,Bundler 將這批UserOperations作為一個交易提交給出塊節點。然而,交易仍然可能失敗,導致Bundler 支付Gas 費用,但沒有收到EntryPoint返還Gas 的情況。例如,用戶可能向不同的Bundlers 發送操作。如果存在盈利空間並且模擬成功,Bundlers 會將其提交到鏈上。在這種情況下,如果一個UserOperation同時被不同的Bundlers 提交到出塊節點,只有一筆交易會成功,這意味著只有一個Bundler 會收到EntryPoint返回的Gas 費,其他所有Bundler 都會因為上鍊失敗而損失Gas。儘管有人可能認為這種行為應被視為惡意攻擊,並主張Bundler 可以禁掉該Sender地址,拒絕來自該地址的任何未來請求,但這並非一個合理的解決方案,因為用戶可能無意中採取這種行為。這個問題需要在代碼中妥善解決,也許可以通過正在開發中的公共mempool 網絡來實現。此外,即使交易已成功提交且模擬結果顯示存在獲利空間,Bundlers 也可能因為突然的Gas 波動遭受損失。

另一個問題是從AA 中可以獲取的最大可提取價值(MEV)。在以太坊的背景下,MEV 通常指的是礦工或其他交易處理者通過操縱區塊中交易的順序或在區塊中插入他們自己的交易來提取的價值。有人可能會注意到,MEV 的邏輯也可以適用於AA。這是因為在AA 中,Bundlers 可以對UserOps 進行自由排序,這為它們提供了獲取MEV 的可能性。然而,Bundler 是否能提取MEV 取決於是否有足夠多的UserOperations可以打包在一起。現在整個AA 市場仍處於初級階段,因此Bundler MEV 也可以被認為是初級階段。可以遇見到的是,AA 的MEV 可能朝兩個方向發展:一是類似於以太坊主網,有像Flashbots、Ultra Sound 和BloXroute 這樣的參與者參與;另一個方向是形成Bundler 共識來實施公平排序。而後者將完全消除AA 中提取MEV 的可能性。

未來發展

公共mempool

雖然AA 生態系統已經投入運行,但仍有許多開發工作尚待完成。從整個AA 生態系統來看,目前最大的缺失部分是公共mempool。 Etherspot 團隊,Skandha Bundler 客戶端的開發者,目前正在開發公共mempool 的p2p 網絡。預計公共mempool 的p2p 網絡將在今年8 月份推出。

Bundle 算法

在此過程中,以太坊基金會資助了幾個優秀的AA 開發團隊。到目前為止,已經開發了多個目前已經可以使用的Bundler 客戶端。其中,有一些已經非常成熟了。分別是Candide(用Python 編寫的Voltaire Bundler)、Pimlico(用Type 編寫的Alto Bundler)、Etherspot(用Type 編寫的Skandha Bundler)、Stackup(用Go 編寫的Stackup-Bundler)等。

這裡就涉及到了打包策略的問題。目前,由於UserOperations的數量較少,Bundlers 可以採用簡單的打包邏輯,例如固定的時間間隔或每個Bundle 中一定數量的UserOperations。然而,隨著UserOperations數量的增加,特別是在公共mempool 引入之後,選擇和打包UserOperations的策略變得更加複雜。原因很簡單:在AA 生態中,缺乏類似區塊鏈共識協議的機制,Bundler 群體成為了一個黑暗森林,每個Bundler 根據自己的利益優先處理任務,並互相競爭。與公共mempool 相對的,私有mempool 有可能會較早出現。因為當從公共mempool 打包UserOperations無法盈利時,打包私有mempool 中的UserOperations依舊存在盈利的可能。在這種情況下,該Bundler 在打包時相較其他Bundler 更有競爭力。

此外,隨著公共mempool 的逐步普及,其中的UserOperations有各種特性,例如不同的Gas 盈利預期和鏈上執行複雜性。 Bundlers 將進行鏈下模擬,評估各種UserOperations組合的盈利能力,從而建立各自的打包策略。打包更多的UserOperations有可能產生更高的利潤,但同時也增加了驗證失敗的風險。即使驗證通過,鏈上執行失敗的風險仍然存在。相對的,打包較少的UserOperations則相反。

Bundlers 需要設置自己的交易Gas 參數,這將影響出塊節點執行這筆交易的優先級。在不同的預估Gas price 和Gas 波動率條件下,Bundlers 可能有不同的打包策略。同時還要考慮這些驗證和策略計算需要消耗本地硬件計算資源和區塊鏈節點資源的成本。此外,Bundlers 還需要確保為用戶提供良好的用戶體驗,確保用戶在提交UserOperation後不會面臨過長的延遲。

儘管這些挑戰的解決方案仍然不明朗,但我們可以有信心地說,AA 行業的發展和開發者的共同努力將最終解決這些問題。作為基礎設施建設者,BlockPI 希望在AA 行業的發展中充當問題解決者的角色,無論是作為開發者還是為其他開發者提供AA 友好的基礎設施。

*基礎設施必須要適應AA

AA 將鏈上交易行為中涉及的各種角色抽像出來,包括Sender、Bundlers、Gas payers、合約錢包、Signers,從而使用戶在使用區塊鏈時具有更高的自由度。同時,基礎設施供應商可以根據自己對市場的判斷,獨立部署這些服務。

為了適應AA 的大規模採用,基礎設施提供商首先需要提供至少兩個基本服務:Bundler 服務和Paymaster服務。

在Bundler 服務中,基礎設施提供商可能需要與Bundlers 一起開發私有mempool,以提供良好的用戶體驗。具體來說,基礎設施提供商需要集成多種Bundler 客戶端,以確保Bundler 服務的穩定。這些Bundler 客戶端目前向用戶提供幾種標準的JSON RPC 方法,這些方法是ERC-4337 核心開發組提供的。可以預見以後會有更多的RPC 方法可供用戶使用。基礎設施服務商需要在這個過程中及時更新對這些方法的支持。

此外,在Bundler API 和原始節點客戶端RPC 之間進行優化也非常重要。目前的節點客戶端沒有針對AA 進行過優化。一些Bundler API 方法需要針對為AA 提供的數據索引。例如,現在的客戶端在通過哈希查找UserOperation時,需要掃描所有區塊中的EntryPoint合約日誌。若缺乏數據索引,這個單一請求的硬件資源消耗將會相當巨大,同時請求的返回時間也將變得很長。

除此之外,為了給用戶提供免Gas 的用戶體驗以及多樣化的服務,基礎設施提供商需要不同的Paymaster服務提供商達成合作,從而集成不同的Paymaster服務。同時根據市場需求,基礎設施提供商還可以基於現有Paymaster服務設計更方便的集成解決方案。其他服務,如聚合簽名、錢包工廠等,也是基礎設施未來發展和集成的潛在方向。

總之,為了適應AA 的大規模應用,基礎設施提供商需要不斷完善和擴展其服務。這包括優化Bundler 服務,與不同的Paymaster服務提供商合作,集成各種API 接口,以及開發其他潛在的服務。隨著AA 行業的不斷發展,這些努力將有助於提供更高效、安全和便捷的區塊鏈使用體驗。

目前,BlockPI 正在為了實現上述目標而努力。不僅如此,我們已經與社區中幾乎所有的Bundler 客戶端和Paymaster服務提供商進行了溝通,並將整合AA 到BlockPI 網絡作為我們的首要開發任務。同時,我們還與AA 錢包開發者進行了深入的溝通,以了解用戶需求。我們真誠地歡迎所有Bundlers、Paymasters和錢包與我們進行溝通並達成合作。

BlockPI 的目標是與社區共同建設並發展AA 生態系統,竭盡所能推動AA 生態的進步與繁榮。我們希望通過與社區的合作,以行業領先者的身份為整個AA 行業做出貢獻,並支持其後續的發展進程,從而讓Web2 用戶無障礙地體驗區塊鏈技術。

查看原文
本頁面內容僅供參考,非招攬或要約,也不提供投資、稅務或法律諮詢。詳見聲明了解更多風險披露。
  • 讚賞
  • 留言
  • 分享
留言
0/400
暫無留言
交易,隨時隨地
qrCode
掃碼下載 Gate.io APP
社群列表
繁體中文
  • 简体中文
  • English
  • Tiếng Việt
  • 繁體中文
  • Español
  • Русский
  • Français (Afrique)
  • Português (Portugal)
  • Indonesia
  • 日本語
  • بالعربية
  • Українська
  • Português (Brasil)