基礎設施如何通過帳戶抽象為數十億用戶提供支持?
BlockBeats 律動財經 2023-06-26 12:00
無論是牛市還是熊市,以太坊生態系統一直在不斷地建設和自我優化。其中,帳戶抽象(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`可以選擇支持任何 Token ,包括 ERC-20 Token 甚至其他鏈上的 Token 。
- 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(用 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 行業的發展和開發者的共同努力將最終解決這些問題。作為基礎設施建設者,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 用戶無障礙地體驗區塊鏈技術。
暢行幣圈交易全攻略,專家駐群實戰交流
▌立即加入鉅亨買幣實戰交流 LINE 社群(點此入群)
不管是新手發問,還是老手交流,只要你想參與虛擬貨幣現貨交易、合約跟單、合約網格、量化交易、理財產品的投資,都歡迎入群討論學習!
- 從零開始學合約系列講座熱烈報名中
- 掌握全球財經資訊點我下載APP
文章標籤
上一篇
下一篇