ERC 4337:無需更改以太坊協議的賬戶抽象
DAOrayaki
2021-12-23 12:42
本文约3840字,阅读全文需要约15分钟
長期以來,賬戶抽像一直是以太坊開發者社區的夢想。

DAOrayaki DAO研究獎金池:

DAOrayaki DAO研究獎金池:

投票進展:DAO Committee 3/7通過

DAOrayaki DAO研究獎金池:

投票進展:DAO Committee 3/7通過

DAOrayaki DAO研究獎金池:

投票進展:DAO Committee 3/7通過

投票進展:DAO Committee 3/7通過

貢獻者: Dewei, DAOctor @DAOrayaki

賞金總量:80USDC

研究種類:DAO, ERC4337, account abstraction, smart wallet

原文作者: Vitalik Buterin

貢獻者: Dewei, DAOctor @DAOrayaki

原文: ERC 4337: account abstraction without Ethereum protocol changes

1、多重簽名和社會恢復

3、後量子安全簽名算法(例如,Lamport、Winternitz)

二級標題

今天可以使用智能合約錢包完成所有這些事情,但以太坊協議本身要求將所有內容打包在源自ECDSA 安全外部賬戶(EOA) 的交易中,但智能合約錢包很難實現這些事情。每個用戶操作都需要由來自EOA 的事務包裝,從而增加了21000 gas 的開銷。用戶需要在單獨的EOA 中擁有ETH 來支付gas,並管理兩個賬戶中的餘額,或者依賴中繼系統,這些系統通常是中心化的。

二級標題

EIP 2938 是解決此問題的一種途徑,通過更改一些以太坊協議,允許頂級以太坊交易從合約而不是EOA 開始。合約本身將有核實和費用支付邏輯,礦工們將進行檢查。然而,當協議開發人員密切關注合併和可伸縮性時,他們需要對協議進行重大更改。在我們的新提案(ERC 4337)中,我們提供了一種在不改變共識層協議的情況下實現相同收益的方法。

二級標題

這個建議是如何運作的?

捆綁者以ETH形式支付捆綁交易的費用,並通過作為所有單個用戶操作執行的一部分支付的費用獲得補償。捆綁商將根據與礦工在現有交易mempool中的操作方式類似的費用優先級邏輯來選擇要包含哪些UserOperation 對象。 UserOperation 看起來像一個事務;它是一個ABI 編碼的結構,其中包括以下字段:

2、nonce 和signature:傳遞給錢包驗證函數的參數,以便錢包可以驗證操作

二級標題

4、callData:用於實際執行步驟調用錢包的數據

其餘領域與gas和fee管理有關,完整的字段列表可以在ERC 4337 規範中找到。

錢包是一個智能合約,需要具備兩個功能:

二級標題

2、op執行功能,將calldata解釋為錢包採取行動的指令。這個函數如何解釋calldata以及它的結果是完全開放的;但我們預計最常見的行為是將calldata解析為錢包撥打一個或多個電話的指令。

為了簡化錢包的邏輯,確保安全所需的大部分複雜智能合約技巧不是在錢包本身中完成的,而是在稱為入口點的全局合約中完成的。 validateUserOp 和執行函數預計將使用require(msg.sender == ENTRY_POINT) 進行門控,因此只有受信任的入口點才能使錢包執行任何操作或支付費用。入口點僅在validateUserOp 之後對錢包進行任意調用,並且攜帶該調用數據的UserOperation 已經成功,因此這足以保護錢包免受攻擊。如果錢包不存在,入口點還負責使用提供的initCode 創建錢包。

運行時的入口點控制流程

二級標題

如果成功模擬了UserOperation 的驗證,則保證UserOperation 是可包含的,直到發件人帳戶發生其他一些內部狀態更改(因為另一個UserOperation 具有相同的發件人或調用發件人的另一個合約;在任何一種情況下,為一個帳戶觸發此條件都需要在鏈條上花費7500+gas)。

二級標題

此外,用戶操作為validateUser 步驟指定了gas 限制,mempool節點和捆綁器將拒絕它,除非此gas 限制非常小(例如,低於200000)。這些限制複製了現有以太坊交易的關鍵屬性,使mempool免受DoS 攻擊。捆綁器和mempool節點可以使用類似於當今以太坊事務處理的邏輯來確定是否包含或轉發UserOperation。

二級標題

與常規的以太坊交易mempool相比,這種設計增加、維護和犧牲了哪些屬性?

維護屬性:

1、沒有中心化的參與者;一切都通過點對點mempool完成

2、DoS 安全(通過模擬檢查的用戶操作保證是可包含的,直到發送方有另一個狀態更改,這將要求攻擊者為每個發送方支付7500+ gas)

3、沒有用戶端錢包設置的複雜性:用戶不必關心他們的錢包合約是否已經“已經發布”;錢包存在於確定性的CREATE2 地址,如果錢包尚不存在,第一個UserOperation 會自動創建它

5、通過付費替換的能力,以比舊操作更高的溢價發送新用戶操作,以替換操作或更快地將其包括在內

缺點

1、驗證邏輯靈活性:validateUserOp函數可以添加任意簽名和nonce驗證邏輯(新的簽名方案,多重簽名……)

缺點

3、錢包可升級性:錢包驗證邏輯可以是有狀態的,因此錢包可以更改其公鑰或(如果使用DELEGATECALL 發布)完全升級其代碼。

缺點

4、執行邏輯靈活性:錢包可以為執行步驟添加自定義邏輯,例如。進行原子多操作(EIP 3074 的一個關鍵目標)

缺點

1、儘管協議盡了最大努力,但DoS漏洞略有增加,這僅僅是因為允許驗證邏輯比單個ECDSA驗證的現狀更複雜。

3、一次一筆交易:賬戶不能排隊並將多筆交易發送到mempool中。但是,執行原子多操作的能力使此功能的必要性大大降低。

贊助交易有許多關鍵用例。最常引用的期望用例是:

二級標題

2.允許用戶以ERC20代幣支付費用,合約作為中介收取ERC20並以ETH支付

該提案可以通過內置的付款管理員機制支持此功能。 UserOperation 可以設置另一個地址作為其付款人。如果設置了付款管理員(即非零),則在驗證步驟期間,入口點還調用付款管理員以驗證付款管理員是否願意為UserOperation 付費。如果是這樣,那麼費用將從在入口點內抵押的付款主管的ETH 中扣除(為了安全起見,提款延遲)而不是錢包。在執行步驟中,錢包會像往常一樣使用UserOperation 中的calldata 調用,但之後會使用postOp 調用paymaster。

上述兩個用例的示例工作流程是:

二級標題

2、付款管理員驗證發件人錢包是否有足夠的ERC20 餘額來支付UserOperation。如果有,paymaster 接受並支付ETH 費用,然後在postOp 中索取ERC20 代幣作為補償(如果postOp 由於UserOperation 耗盡了ERC20 餘額而失敗,則執行將恢復並且postOp 將再次被調用,因此paymaster 總是得到報酬)。請注意,目前,這只能在ERC20 是由付款管理員本身管理的包裝代幣時才能完成。

DAOrayaki
作者文库