作者:Eden Network,翻譯:金色財經xiaozou
2023年3月1日,ERC-4337上線以太坊主網,增強了智能合約代表用戶進行交易的能力。但實際上,到底發生了什麼變化?
ERC-4337並沒有觸及以太坊所依賴的核心共識層,而是添加了一個層,使開發人員有機會從根本上改變用戶的鏈上交互和交易方式。
本文,我們將研究ERC-4337引入的五個主要技術組件,以及它們是如何協同工作執行用戶交易的。
ERC-4337標準有五個關鍵組件值得關注:UserOperation、Bundler、EntryPoint、Aggregator和Paymaster。
1、UserOperation
簡單來說:UserOperation捕捉用戶的意圖和操作,包括與發送方、有效負載和gas費相關的信息。由於它的設計是為了避免更改共識,以太坊團隊選擇創建一個全新的結構,以獲取代表用戶發送的交易所包含的全部必要元素。
為了避免混淆,他們特意沒有將其稱為“交易”。
更具體地說:智能合約錢包現在可以創建叫做UserOperation(userOp)的偽交易對象,代表用戶所期望的交易意圖,而無需初始化傳統交易。
UserOperation不能訪問任何在模擬和執行之間可能發生變化的信息,例如當前區塊時間、哈希值、區塊號等。這是為了確保它的有效性,並且能夠為其鏈上交易執行支付費用。
UserOperation同樣只允許訪問與發送方地址相關的數據。
與交易類似:UserOperation包含sender、to、calldata、maxFeePerGas、maxPriorityFee、signature和nonce字段。
與交易不同:nonce和signature字段的使用不是由協議定義的,而是由各帳戶實現定義的。
UserOperation內存池
簡單來說:UserOperation內存池是一個等待網絡處理的未執行UserOperations的池。 UserOperations被發往UserOperation內存池,而非傳統的公共內存池。
更具體地說:UserOperation內存池是任一個UserOperation作為真正交易上鍊之前的最後一個“停靠站”,然後,稱為bundler(下文將詳細介紹)的新質押者可以從該內存池裡提取各UserOperation,充當了EOA角色,支付gas費並將UserOperations發送到共識層作為交易執行。
這是一個專用的高級UserOperation內存池,僅供UserOperations使用,也稱為canonical內存池。該內存池遵循並嚴格執行ERC-4337規則。 ERC也允許為UserOperations提供不遵循canonical內存池規則的替代內存池(alt-mempool)。
遵守ERC規則的UserOperations被發送到canonical內存池。那些不遵守ERC規則的可以被發送到其他規則不同的替代內存池。這些替代內存池中的UserOperations僅被發送給該池的參與者。
Bundlers可以通過加入白名單或加入另一個不同ID的替代內存池來應對canonical內存池的異常情況。 Bundlers可以自由加入canonical內存池(他們必須無一例外地遵守ERC規則)及替代池。
注:UserOperations內存池的最終版本尚未完全定義,因此預計會有進一步的變化。然而,一個完全去中心化的內存池對於協議的採用和健康來說是必不可少的。
2、Bundler
簡單來說:Bundler充當著它從canonical內存池和替代內存池中所提取的全部UserOperations的EOA的角色,Bundler將UserOperations發送到EntryPoint合約進行驗證和完整性檢查,然後,最後進入我們在ERC-4337出現之前的世界裡所習慣的交易流程。
更具體地說:Bundler是一個專門的操作員,它監聽UserOperation內存池和所有內存池,提取多個UserOperations,將它們打包在一起,並將交易包發送給EntryPoint合約執行。這看起來非常像從EOA到智能合約的交易,其中UserOperations的執行就如內部交易。 “from”地址將是Bundler,“to”地址將是EntryPoint合約。
Bunders選擇將哪些UserOperations對象包含在他們的打包交易中,基於與今天以太坊的區塊建設者所使用的類似的價值最大化邏輯。
成為Bundler的經濟模型/動機是什麼?
交易上鍊時,Bundler充當“from”地址,正因如此,Bundler將使用ETH為交易包支付gas費。 Bundler作為所有單個UserOperation執行的一部分,隨後會獲得費用補償。
在接收UserOperation之前,Bundler將模擬它來驗證簽名,確保UserOperation可以支付費用,並確保UserOperation在模擬和執行時以相同的方式運行。要靠Bundler來避免包含驗證失敗的UserOperations,避免吸收那些無法支付的gas成本。
注意:在ERC-4337框架中,區塊建設者也可以充當Bundlers角色,以提供更強大的執行保證,但這並不是必需的。如果沒有這種更強大的執行保證,交易包將被發送到公共池,並且有可能發生搶先交易,導致交易包交易失敗。
3、Paymaster
簡單來說:Paymaster是一個可選的質押者,可以為其他用戶的交易支付費用。為什麼? Paymaster可以為以太坊交易帶來許多有趣的新功能,例如:
應用開發者可以很容易地為他們的用戶補貼費用,例如作為一種獲客手段。
用戶可以使用ERC-20代幣或信用卡或其他訂閱服務等鏈下支付方式輕鬆支付gas費。
更具體地說:ERC-4337流程並沒有強制要求必須使用paymaster。 UserOperation使用paymaster通常有以下兩種選擇:
驗證Paymaster:這些paymaster提供與鏈下流程相關聯的gas抽象。例如,它可以讓用戶用信用卡或訂閱服務支付交易費用,而不會損害他們的賬戶託管。
存款Paymaster:這些paymaster提供與鏈上ERC-20代幣相關聯的gas抽象。
Paymaster要么必須限制其存儲使用,要么必須進行質押。
注:為了防止濫用,系統將降低速度或暫時封禁提交大量無效UserOperations的Paymaster。為了防止實體的“女巫攻擊”,全局實體需要在系統中進行質押,這使得拒絕服務(DoS)攻擊的成本很高。該質押不會被罰沒,可隨時提取,但會受延遲限制。不訪問全局存儲的全局實體例外。
4、Aggregator
簡單來說:Aggregator是一類特殊的參與者,利用helper智能合約來處理批量UserOperation簽名,並將它們轉換成一個簽名,也就是將其聚合。
更具體地說:Aggregator是一個受合約帳戶信任的helper智能合約,用於驗證聚合簽名。 UserOperations包由Aggregator在單個步驟中進行驗證,而不是單獨驗證每個簽名。 Aggregator旨在提高大規模交易處理的效率和成本。
當前的現實:ERC-4337的交易量還不夠高,不足以顯現簽名聚合的好處,但交易量正在快速增長,一旦達到臨界值,Aggregator就會成為一個關鍵的利益相關者,促進大規模交易。
壓縮的實現過程超出了本文的討論範圍。然而,它已經整合進ERC-4337的設計中。最流行的壓縮方法就是使用BLS簽名聚合。
從用戶的角度來看,他們看不出有任何不同,但是開發人員需要在智能帳戶中部署BLS簽名邏輯。
5、EntryPoint
簡單來說:EntryPoint合約是一個單例合約,驗證並執行發送給它的UserOperations包。它檢查並確保由bundler發送的提交到鏈上的所有UserOperations都是真實有效的。
更具體地說:EntryPoint合約是所有符合ERC-4337標準的智能合約錢包必須使用的全局入口點,以便在EVM上進行交易。這一概念類似於單個質押存款合約。
EntryPoint的使用簡化了智能合約錢包使用的邏輯,將確保安全所需的更複雜功能推至入口點,而不是錢包本身。其核心目的是防止錢包在進入網絡之前進行不必要或未經授權的操作。
EntryPoint序列
下圖展示了EntryPoint是如何管理Bundler發送的UserOperation包的。通常有兩個階段,但在使用aggregator的情況下,會增加一個階段。
EntryPoint序列相對簡單,有兩個階段:
如果存在aggregator:
如果沒有aggregator:
序列中的每個循環都有自己的角色,如下:
循環1:Aggregator循環
如果一個交易包使用了aggregator,那麼EntryPoint會首先檢查aggregator。由Entry Point來驗證簽名。
循環2:驗證循環
首先,它會檢查合約帳戶是否存在。如果不存在,它就會創建一個。
如果沒有定義paymaster:序列驗證Contract Account在EntryPoint中是否有足夠的存款來支付gas費。如果存款充足,它就會為UserOperation付費。
如果定義了paymaster:序列驗證paymaster在EntryPoint合約中是否有足夠的存款。如果存款充足,那麼合約將驗證UserOperation。
循環3:執行循環
它使用callData調用合約帳戶。
如果定義了paymaster,它將調用paymaster中的自定義費用邏輯。
只有在UserOperation通過序列循環的考驗後,才能最終上鍊。
結論:
雖然為了避免混淆,ERC-4337特意使用了不包含“交易”字眼的用語,但實際上,它可以被視為用戶交易上鍊的替代流程。一旦把所有組成部分連接起來,協議就有能力向現有EOA交易流程引入新的用戶意圖層。
AA(賬戶抽象)錢包的用戶將把他們的意圖傳遞給UserOperations內存池。 Bundlers將這些意圖轉換為網絡可以像以前一樣處理的簽名交易。
雖然對於開發者來說,這看起來像是一個有額外步驟的“交易”,但對於用戶來說,這就是手動輸入用戶名/密碼並將其記在筆記本上以確保安全,或使用OAuth只點擊幾下就可訪問web3應用程序之間的區別。