如何讓账戶抽象賦能基礎設施 服務十億級用戶?

2023-06-28 13:49 MarsBit


作者:Albert He, BlockPI Cheif Scientist;編譯:MarsBit,MK

無論是牛市還是熊市,以太坊生態系統一直在持續建設,並不斷自我優化。其中,账戶抽象(AA)在近年來已經成爲非常重要的進步,並且已經滲透到以太坊生態系統的各個組成部分,包括應用、基礎設施、用戶和开發者。

我們可以預見到,廣泛採用 AA 可以降低區塊鏈使用案例的門檻,從而將 web2 用戶體驗引入到 web3 行業。

爲了迎接形成一個價值數十億的 AA 市場的可能性,BlockPI 計劃將資源投入到將 AA 整合到其基礎設施服務中。通過構建 AA 的整合,我們的目標是爲 AA 用戶提供更便利、更高效的方式來與他們在區塊鏈上的合約錢包账戶進行交互,同時也將 BlockPI 定位爲行業的領導者。

在這篇文章中,我將深入探討我們對 AA 的理解,並從基礎設施服務提供商的角度分享思考。

EOA 和智能合約錢包

AA 的概念源於 EOA 账戶的限制。EOA 账戶(外部擁有账戶)是以太坊中的典型用戶账戶,由公鑰(區塊鏈地址)表示,可通過私鑰訪問。它是以太坊生態系統的主要組成部分,允許用戶與智能合約交互並在網絡上執行交易。然而,使用 EOA 對人們來說可能具有挑战性,某些不便可能會影響用戶體驗。

EOA 的第一個不便之處與 Gas 的使用有關。每筆交易都會花費用戶大量的 ETH 作爲 Gas 費用(Gas 價格 25 Gwei 的簡單 ETH 轉账費用爲 0.5 美元,合約交互或 Gas 價格更高的費用更多)。這使得小額交易的交易費用非常昂貴,尤其是在網絡擁堵高峰期。此外,只有 ETH 可以用來支付 Gas,這意味着用戶必須在他們的錢包中擁有 ETH,對許多用戶來說,這是一個重要的入門障礙。

EOA 的第二個不便之處是無法進行條件交易,除非使用其他智能合約來實現某些邏輯。例如,如果用戶想設置定時周期轉账,他們必須將 ETH 轉移到具有此功能的第三方智能合約中來實現此功能。

EOA 的第三個不便之處是籤名加密算法。以太坊網絡使用一種特定的數字籤名算法,稱爲 secp 256 k 1 ,以確保交易的真實性和安全性。這是硬編碼到系統中的,用戶無法選擇使用其他算法。

因此,從這些問題出發,人們开始嘗試尋找解決方案。智能合約錢包(例如 MetaMaskArgent)是這些努力的產物,通過使用以太坊智能合約來增強用戶账戶功能,解決了許多 EOA 的限制。然而,這樣的解決方案還有一些缺點,主要是需要用戶爲交易支付 Gas 費,以及智能合約錢包的普及問題。

基於這些挑战,以太坊开始嘗試引入一個新的概念,即账戶抽象化。账戶抽象化的目標是在協議級別解決這些問題,而不是依賴於智能合約或者其他中間件。這就是我們現在所說的账戶抽象化(AA)。

這篇文章的剩余部分,我將深入探討账戶抽象化的概念,以及我們如何利用這一概念優化 BlockPI 的基礎設施。

除了上文提到的 EOA 的三個不便之處,公鑰和私鑰之間的綁定關系也是一個問題。私鑰是訪問 EOA 的唯一方式,如果丟失,就沒有辦法恢復私鑰。這意味着如果私鑰丟失,所有與之關聯的資產將無法找回。

此外,EOA 在執行單個交易中的线性任務時也面臨約束。例如,如果用戶希望在一個動作中批准、交換和取消批准代幣,他們需要執行三個單獨的交易,這既不高效又耗時。

好消息是,以上所有的問題都可以通過智能合約錢包解決。智能合約錢包是一種實現 AA 的特殊類型的智能合約。它被設計爲在以太坊網絡上作爲用戶的錢包,並提供更適應和個性化的方式來管理他們的資金。只要以太坊智能合約能夠實現的邏輯,智能合約錢包就可以提供所需的功能。

具體來說,智能合約錢包的交易可以打包成一個鏈上交易共享 Gas 成本,如果有第三方愿意支付,甚至可以沒有 Gas 成本。一個操作可以促進在其智能合約錢包內執行順序任務。智能合約錢包能夠支持任何籤名的加密算法,並設置恢復代碼等。

隨着人們對智能合約錢包的所有好處的討論,以太坊社區實際上從一开始就一直在研究合約錢包。盡管已經提出了許多 EIP 來探索账戶抽象化,但直到 2021 年都還沒有建立統一的標准。以下是幾個最具代表性的提案。

EIP-86 

最初由 Vitalik Buterin 在 2017 年創建。實現了一組變化,爲「抽象化」籤名驗證和 nonce 檢查服務,允許用戶創建執行任何所需籤名 /nonce 檢查的「账戶合約」。

EIP-2938 

創建於 2020 年。這個 EIP 的標題是账戶抽象化。這個 EIP 詳細描述了 AA 的概念。它引入了一種新型的交易,即 AA 交易。這種交易將由 EntryPoint 地址初始化,並調用 AA 錢包合約。通過這樣做,它提供了一個統一的規範,並將 AA 引入到以太坊共識中。更具體地說,它在以太坊共識中添加了兩個新的操作碼、三個全局變量和一個不同的有效負載結構。

EIP-3074 

創建於 2020 年。這個 EIP 引入了兩個 EVM 指令,AUTH 和 AUTHCALL。AUTH 根據 ECDSA 籤名設置一個名爲 authorized 的上下文變量。 AUTHCALL 以被授權的账戶身份發送一個調用。這允許一個智能合約代表 EOA 發送交易。但是這對於 AA 來說還不是一個完美的解決方案。在贊助交易期間進行原生價值轉移方面,EIP-3074 存在一定的限制。如果你失去了對 EOA 的訪問權,你將無法恢復你的資產,如果被盜,所有的資產需要轉移到一個新的账戶。

由於需要在共識層進行改變或者並不全面等主要原因,上述的所有想法都沒有被正式採納到以太坊協議中。因此,以太坊社區繼續探索如何在不改變共識的情況下將 AA 引入到以太坊協議中,最終創建了 EIP 4337 。

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 內存池。通過這樣做,它實際上在一個更高級的系統中復制了交易內存池的功能。用戶不再發送交易,而是提交 UserOperation 對象,這些對象然後可以打包成一個單獨的交易並包含在以太坊鏈中。

以下是官方文檔對 ERC-4337 的更具體的技術解釋,以及一些更好理解的評論。

ERC-4337 的定義和關鍵角色

UserOperation — 描述代表用戶發送的交易的結構。爲避免混淆,它沒有被命名爲「交易」。它被發送給 Bundler 以與其他 UserOperations 打包在一起。然後,該包被作爲一個單一的交易發送給區塊創建者。

Sender — 發送新 UserOperation 的合約账戶。智能合約錢包必須實現 ERC-4337 的 IAccount 接口。

EntryPoint — 執行 UserOperations 包的單例合約。Bundlers/Clients 將支持的 EntryPoint 加入白名單。此合約由 Infinitism 團隊批准並審核,負責處理所有 UserOperations 並連接其他合約,包括 Wallet Factory、Aggregator、Paymaster。它在大多數兼容 EVM 的鏈上都將有相同的地址。

Bundler — 一個從內存池中捆綁多個 UserOperations 並創建 EntryPoint.handleOps() 交易的節點(區塊構建器)。協議層的所有驗證節點不必都是 Bundler。Bundler 服務可以獨立於區塊構建器運行,並使用 RPC 發送打包的 UserOperations。

Aggregator — 由账戶信任的幫助合約,用於驗證聚合籤名。Bundlers/Clients 將支持的聚合器加入白名單。聚合器必須實現 ERC-4337 的 IAggregator 接口。

Paymaster — 一個合約,如果在 EntryPoint 合約中存放了足夠的 ETH,它可以爲 Sender 支付 UserOperation 的 Gas 費用。Paymaster 實現了有效的 Gas 抽象。Paymaster 必須實現 ERC-4337 的 Paymaster 接口。Paymaster 可以有自己的邏輯與 Sender 達成交易。例如,Sender 支付 USDC 給 Paymaster,然後 Paymaster 用 ETH 贊助其 UserOperations。實際上,只要 Paymaster 同意且在技術上可行,任何 ERC 20 代幣甚至其他鏈上的代幣都可以支持。

Wallet Factory — 一個可以被調用以爲 ERC-4337 用戶創建智能合約錢包的合約。部署錢包工廠是無需許可的。作爲鏈上組件,它开放於公衆審計和透明審查。廣泛使用的 Wallet Factory 應由專業人士全面審計。

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

Bundlers 調用 EntryPoint 合約的 handleOps 函數,該函數以 UserOperation 爲輸入。

handleOps 在鏈上驗證 UserOperation,檢查是否由指定的智能合約錢包地址籤名,以及錢包是否有足夠的 Gas 來補償 Bundler。

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

另一方面,當 Bundler 使用 EOA 觸發 handleOps 函數時,會產生 Gas 費用。智能合約錢包可以從自己的账戶余額中支付 Gas 費用給 Bundlers,或者請求 Paymaster 合約代其支付。沒有足夠 Gas 的 UserOperations 無法通過目標智能合約錢包中的驗證過程,從而在執行前失敗。即使有足夠的 Gas,UserOperations 在執行過程中也可能失敗,例如,由於運行時錯誤。無論執行是否成功,EntryPoint 合約都會將 Gas 費用支付給觸發 handleOps 函數的 Bundler。

(來源:官方文檔:https://eips.ethereum.org/EIPS/eip-4337)

在 ERC-4337 生效後,用戶現在有兩種方式來啓動區塊鏈交易。一種是原始的方式,其中 EOA 啓動交易。另一種是使用 ERC-4337 標准通過 Bundler 啓動 UserOperation,然後由 Bundler 將其與其他 UserOperations 打包並在鏈上發起。以下流程圖說明了普通 EOA 發送交易和 ERC-4337 合約錢包發送 UserOperation 的區別。

道路已經鋪好,但乘客還不多

ERC-4337 爲用戶和开發人員在以太坊平台上使用和構建 AA 提供了一個強大的框架。盡管這個框架是一個重要的前進步驟,但仍然需要解決和消除一些挑战和不確定性。

AA 的採用還處於初級階段。根據 Dune ERC-4337 分析面板(ERC-4337 Account Abstraction from @niftytable),只有 65 k+ 的 UserOperations 在鏈上執行,其中 90% 來自 Polygon。因此,此時執行的 UserOperation 數量仍然非常小,其中大部分爲开發者的測試,只有少部分歸因於用戶。我們注意到,已經整合了 AA 的產品仍處於初期階段。同時,可以看到 Bundler 的利潤爲負(以 MATIC 計算爲 -700)。這是因爲 Polygon 上有一些 Bundler 沒有正確計算預驗證 gas。這種驗證算法仍需要優化。

除此之外,還有一些問題需要解決。其中一個問題是 Bundlers 如何處理交易失敗。在 Bundler 將幾個 UserOperations 打包在一起後,Bundler 首先模擬交易以檢查是否會回滾,然後計算由 Sender 或 Paymaster 返回的 Gas 費用是否大於交易支付的 Gas 費用。如果有利可圖,Bundler 就將這批 UserOperations 一起作爲一個交易提交給區塊構建器。然而,交易可能仍然會失敗,導致 Bundler 支付 Gas 費用但沒有從 EntryPoint 收到退回的 Gas。例如,用戶可能向不同的 Bundlers 發送操作。如果任何操作有利可圖並且它們的模擬成功,Bundlers 愿意在鏈上提交它們。這意味着如果一個 UserOperation 同時被不同的 Bundlers 提交。只有一筆交易會成功,只有一個 Bundler 會從 EntryPoint 接收到 Gas 費用,所有其他 Bundlers 都會因鏈上失敗而損失 Gas。雖然有人可能會爭辯說,用戶不應該這樣做,這樣的行爲會被認爲是惡意攻擊,Bundler 可以禁止 Sender 地址,並拒絕來自這個地址的任何未來請求,但這並不是一個合理的方法,因爲用戶可能無意中提交了這個操作。這樣的問題需要在代碼中得到適當的解決,可能通過开發一個未完成的公共 mempool 網絡。此外,由於突然的 Gas 波動,即使交易已經成功提交並被模擬爲有利可圖,Bundlers 也可能面臨損失。

另一件事是從 AA 中提取的最大可提取價值(MEV)。在以太坊的背景下,MEV 通常指的是礦工或其他交易處理器通過在一個區塊中操縱交易的順序或在區塊中包含他們自己的交易所能提取的價值。有人注意到 MEV 的邏輯也可以應用到 AA 上,因爲 Bundlers 可以自由地排序 UserOperations 嗎?然而,這是有條件的,需要有足夠的 UserOperations 被打包在一起,Bundlers 才能提取 MEV。現在整個 AA 市場還處於初期階段,因此 Bundler MEV 也可以被認爲是初期階段。總的來說,AA 行業可能會發展出兩個方向:一個是類似於以太坊主網的,有像 Flashbots,Ultra Sound 和 BloXroute 這樣的參與者參與其中,另一個是形成 Bundler 共識以執行公平的排序。而後者的方式將完全消除 AA 中 MEV 的可能性。

未來的發展

公共 mempool

盡管 AA 生態系統已經在運行,但仍需要完成許多开發工作。觀察整個 AA 生態系統,目前最大的缺口就是公共 mempool。Etherspot 團隊,也就是 Skandha Bundler 客戶端的开發者,目前正在开發公共 mempool 的 p2p 網絡。預計公共 mempool 的 p2p 網絡將在今年 8 月可用。

打包算法

在此過程中,以太坊基金會已經資助了由專注和勤奮的开發人員組成的幾個 AA 开發團隊。到目前爲止,已經开發出多個版本的 Bundler 客戶端,並且現在可用。其中一些在產品成熟度方面處於高度發展階段。他們是 Candide(用 Python 編寫的 Voltaire Bundler),Pimlico(用 Typescript 編寫的 Alto Bundler),Etherspot(用 Typescript 編寫的 Skandha Bundler),Stackup(用 Go 編寫的 Stackup-Bundler)等等。

現在,讓我們深入討論一下更詳細的打包算法。目前,由於 UserOperations 的數量較少,Bundlers 可以採用簡單直接的打包邏輯,例如固定的時間間隔或每個包裹中的 UserOperations 數量。然而,隨着 UserOperations 數量的增加,特別是在公共 mempool 的引入後,選擇和打包 UserOperations 的策略變得更加復雜。原因很簡單:沒有像區塊鏈那樣的共識協議,Bundler 組成了一個黑暗森林,每個 Bundler 都根據自己的利益優先處理工作,並與彼此競爭。私有 mempool,相應地對應公共 mempool,更有可能首先出現。因爲當從公共 mempool 打包 UserOperations 不利可圖時,將私有 mempool 中的 UserOperations 打包在一起就可能變得有利可圖。這樣,Bundler 在打包時就具有競爭優勢。

此外,隨着公共 mempool 逐漸被接納,其中的 UserOperations 將具有不同的特性,例如,不同的 Gas 利潤預期和鏈上執行復雜性。Bundlers 將進行鏈下模擬,以評估各種 UserOperations 組合的利潤性,從而建立他們獨特的打包策略。打包更多的 UserOperations 有可能產生更大的利潤,但也增加了驗證失敗的風險。即使驗證通過,鏈上執行失敗的風險仍然存在。而打包較少的 UserOperations 則正好相反。Bundlers 需要設置自己的交易 Gas 參數,這會影響區塊構建者執行交易的優先級。在不同的市場 Gas 價格和 Gas 波動性條件下,Bundlers 可能會有不同的打包策略。同時,這些驗證和策略計算需要消耗本地硬件計算資源和區塊鏈節點資源。Bundlers 還需要確保用戶有良好的體驗,確保用戶在提交 UserOperation 後不會面臨過長的延遲。

雖然這些挑战的解決方案仍然不確定,但我們可以確信的是,AA 行業的發展和开發者的共同努力最終會找到解決方案。作爲基礎設施構建者,BlockPI 希望能在 AA 行業的發展中解決問題,無論是作爲开發者,還是爲其他开發者提供友好的 AA 基礎設施。

基礎設施必須適應

AA 對鏈上交易行爲中的各種角色進行了抽象,包括發送者、Bundlers、Gas 支付者、合約錢包、籤名者,從而允許用戶在使用區塊鏈時有更高的自由度。而且,AA 內的服務可以分別部署。

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

在 Bundler 服務中,基礎設施提供者可能需要與 Bundlers 一起开發一個私人 mempool,以確保良好的用戶體驗。具體來說,基礎設施提供者需要整合各種 Bundler 客戶端,以確保 Bundler 服務的健壯性。這些 Bundler 客戶端使用不同的編程語言开發,但它們都提供一套由 ERC-4337 核心團隊指定的標准 JSON RPC 方法。目前,可用的方法不多,但未來將會增加更多的方法。基礎設施服務提供商應該爲這些 API 提供持續、完整的支持。

此外,優化和適應 Bundler API 與原始節點客戶端 RPC 之間的關系也非常重要。我們知道,目前的節點客戶端對 AA 的響應性適應性優化並不好。某些 Bundler API 方法需要 AA 的數據索引才能使用。例如,通過哈希查找 UserOperation 需要對所有 UserOperations 進行索引。否則,這個單一請求的硬件消耗將會非常高,請求返回也將花費很長的時間。

除此之外,基礎設施提供者也需要整合不同的 Paymaster 服務,爲客戶提供免 Gas 的用戶體驗,並爲他們提供不同的服務選項。這需要與第三方 Paymaster 服務提供商進行良好的溝通和集成工作,同時,根據市場需求,也可以設計基於現有 Paymaster 服務的更方便的集成解決方案。其他服務,如聚合籤名,錢包工廠等,也是未來發展和集成的可能方向。

目前,BlockPI 實際上正在努力實現以上所有的目標。不僅如此,我們正在與社區中的幾乎所有 Bundler 客戶端和 Paymaster 服務提供商進行溝通,並已經把將 AA 服務集成到 BlockPI Network 作爲我們的首要任務。我們還正在與 AA 錢包开發者進行深入的討論,以了解用戶需求。因此,在我們前進的道路上,我們真誠歡迎與所有的 Bundlers、Paymasters 和錢包進行合作和交流。我們的總體目標是與其他人共同建設和發展 AA 生態系統,以我們最大的努力推動它的增長和發展。通過共同努力,我們希望爲整個 AA 行業做出有意義的貢獻,並支持其持續的發展進程。因爲畢竟,我們的最終使命是作爲行業的先驅,推動 AA 生態系統的發展,從而使 web2 用戶可以無障礙地享受他們的區塊鏈體驗。

總結

從 AA 的角度看,我們處於一個新的歷史時刻。雖然我們在大道上鋪好了路,但還沒有很多乘客。目前,AA 的應用還處於初級階段,ERC-4337 爲用戶和开發者在以太坊平台上使用和構建 AA 提供了強大的框架,然而,仍然有許多挑战和不確定性需要被解決。

AA 的基礎設施提供商需要爲其用戶提供 Bundler 服務和 Paymaster 服務,並且需要整合各種 Bundler 客戶端和 Paymaster 服務提供商,以確保服務的健壯性。爲了優化 API 和節點客戶端之間的響應性,可能需要對 AA 數據進行索引,以減少單個請求的硬件消耗。爲了提供更好的用戶體驗,基礎設施提供商還需要爲用戶提供更多的服務選項。

在未來,隨着 AA 生態系統的不斷發展和公共 mempool 的出現,選擇和打包 UserOperations 的策略將變得更加復雜。每個 Bundler 都會根據自己的利益優先考慮自己的工作,並與其他 Bundler 進行競爭。Bundlers 需要設置自己的交易 Gas 參數,這會影響塊構建器執行交易的優先級。在不同的市場 Gas 價格和 Gas 波動性條件下,Bundlers 可能會有不同的打包策略。

雖然這些挑战的解決方案還不確定,但我們可以確信的是,AA 行業的發展和开發者的共同努力最終將找到解決方案。作爲基礎設施的構建者,BlockPI 希望在 AA 行業的發展中成爲解決問題的人,無論是作爲开發者,還是通過爲其他开發者提供友好的 AA 基礎設施。我們的使命是推動 AA 生態系統的發展,使 Web2 的用戶可以無障礙地享受他們的區塊鏈體驗。

鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播信息之目的,不構成任何投資建議,如有侵權行為,請第一時間聯絡我們修改或刪除,多謝。

標題:如何讓账戶抽象賦能基礎設施 服務十億級用戶?

地址:https://www.sgitmedia.com/article/3550.html

相關閱讀: