基礎設施如何透過帳戶抽象為數十億用戶提供支持

推薦閱讀
2023-06-28 16:15:09
收藏
在本文中,BlockPI團隊將深入探討他們對AA的理解,並從基礎設施服務提供商的角度分享思考。

作者: BlockPI Network

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

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

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

EOA和合約錢包

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

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

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

1. EIP-86

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

2. EIP-2938

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

3. EIP-3074

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

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

4. 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的關鍵角色和其定義

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將支持的簽名聚合器列入白名單。 Aggregator 必須遵循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分析面板,鏈上僅執行了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(用Typescript編寫的Alto Bundler)、Etherspot(用Typescript編寫的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行業的發展和開發者的共同努力將最終解決這些問題。

基礎設施必須要適應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 服務設計更方便的集成解決方案。其他服務,如聚合簽名、錢包工廠等,也是基礎設施未來發展和集成的潛在方向。

鏈捕手ChainCatcher提醒,請廣大讀者理性看待區塊鏈,切實提高風險意識,警惕各類虛擬代幣發行與炒作,站內所有內容僅係市場信息或相關方觀點,不構成任何形式投資建議。如發現站內內容含敏感信息,可點擊“舉報”,我們會及時處理。
banner
ChainCatcher 與創新者共建Web3世界