原文標題:《賬戶抽象:EIP-4337》
撰文:Yash Kamal Chaturvedi
翻譯:ChinaDeFi
在這篇文章中我們將得到一個關于 EIP-4337 在帳戶抽象中的角色的完整概念,
介紹
該提案包括一些更改,以避免對共識層協議的更改,而不是依賴于更高層的基礎設施,它旨在實現以下目標:
- 帳戶抽象:允許用戶使用包含任意驗證邏輯的智能合約錢包,而不是 EOA 作為他們的主要帳戶。
- 去中心化:允許任何綁定者參與包含帳戶抽象用戶活動的過程。用戶不需要知道任何參與者的直接通信地址,就可以處理跨公共內存池發生的任何活動,
- 無共識更改:為了更快的采用,這個提議避免了共識變更。
- 支付交易費用:使用 ERC-20 代幣支付交易費用,使開發人員能夠為他們的用戶支付費用,以及類似 EIP-3074 的贊助交易用例,
以下是該提案中的一些新特性。所有操作都在對等內存池中進行。用戶不必擔心他們的錢包合約已經發布,因為錢包存在于確定性的 CREATE2 地址,如果錢包不存在,UserOperation 會自動創建它,用戶現在將能夠設置一個固定的費用溢價和最大總費用,并期望它能夠快速包含在內并合理收費。通過模擬檢查的 UserOperation 被保證是可包含的,直到發送者有另一個狀態改變,這將要求攻擊者為每個發送者支付 7500+ gas,
工作
用戶發送 UserOperation 對象,該對象封裝了用戶的目的以及用于驗證的簽名和其他數據。利用 Flashbots 等服務的礦工或綁定者可以將 UserOperation 對象組合成單個捆綁交易,然后將其包含在以太坊區塊中,綁定者為 ETH 中的捆綁交易支付成本,并通過每個單獨執行 UserOperation 所支付的費用進行補償,綁定者將使用費用優先級邏輯選擇包含哪些 UserOperation 對象。
為了簡化錢包的邏輯,維護安全所需的大多數復雜智能合約邏輯都在錢包之外執行,在一個稱為入口點的全局合約中執行,validateUserOp 和執行功能預計將與 門控 require(msg.sender == ENTRY POINT),這樣只有可信的入口點才能觸發錢包進行操作或支付費用,在使用有 calldata 的 UserOperation 驗證 userop 成功之后,入口點對錢包進行任意調用,這樣做是為了保護錢包免受攻擊,
如果成功模擬了 UserOperation 的驗證,則保證 UserOperation 在發送方帳戶的內部狀態更改之前是可包含的,
發起交易
我們可以允許應用開發者代用戶支付費用,并允許用戶用 ERC20 代幣支付費用,通過合約作為中介收取 ERC20 代幣并使用 ETH 支付,
該提案可以通過付款主管機制支持上面的用例,
- 對于用例 1:Paymaster 驗證發起人的簽名包含在 PaymasterData 中,表明發起人已經準備好為 UserOperation 付費。如果簽名有效, Paymaster 接受,UserOperation 費用從發起人的份額中扣除,
- 對于用例 2:Paymaster 檢查發起人錢包是否有足夠的 ERC20 余額來支付 UserOperation。如果是,Paymaster 接受并支付 ETH 費用,然后在 postOp 中申領 ERC20 代幣。
優勢
- 驗證邏輯靈活性:validateUserOp 函數添加了任意簽名和隨機數驗證邏輯。
- 執行邏輯靈活性:錢包將能夠為執行步驟添加自定義邏輯。
- 錢包可升級性:錢包將能夠更改其公鑰或升級其代碼,
缺點
- 增加 DoS 漏洞:驗證邏輯比單個 ECDSA 驗證更復雜。
- 一次一個交易:帳戶不能排隊并將多個交易發送到 Mempool,
- Gas 開銷:與正常交易相比,更多的 gas 開銷,