一文看懂ERC-4337账戶抽象
在OpenZeppelin最近的審計之後,ERC-4337的“Entry Point”合約在主網上线,你可以在身邊的EVM上使用帳戶抽象了。
但是什么是帳戶抽象呢?為什么账戶抽象很重要?
首先,介紹一點背景知識。如今,以太坊上有兩種類型的账戶:
外部账戶(EOA)。外部账戶是以太坊用戶最熟悉的账戶,它們被用於發送交易、與DeFi應用程序交互、或买賣NFT。MetaMask、CoinBase和其他錢包應用程序等產品向用戶提供了可使用的EOA。這些帳戶發起交易,並擁有授權交易的私鑰(通過產生ECDSA籤名)。
合約账戶。這些是不受私鑰控制的智能合約账戶。它們具有關聯代碼,當用戶發送有效的交易時,代碼將執行交易。合約账戶不能自己發起交易。為了向區塊鏈寫入數據,必須籤署交易,而合約帳戶不能這樣做,因為它們沒有私鑰。
帳戶抽象的目的是不需要使用EOA發起交易,而是允許用戶使用合約帳戶執行交易,开啓帳戶的設計空間和可定制性。
用戶可以為他們的抽象帳戶實施任何授權邏輯。
多重籤名
非ECDSA驗證
優化的隱私解決方案
想要提款限制?可以!
想要帳戶恢復以防丟失私鑰?可以!
想要使用你選擇的ERC20代幣支付交易?可以!
帳戶抽象概念至少在2017年就已經出現了,並且已經有了一些實現嘗試。
EIP-86
EIP-2938
EIP-3074
然而,上述每一個協議都需要共識改變,一些現有的關於可擴展性的共識層更新是優先事項(Danksharding)。因此,我們只有繼續沿着這個方向繼續走下去才能看到協議級別的帳戶抽象。
然而,EIP-4337(現在是ERC-4337)沒有共識層變化。相反,4337引入了一個智能合約系統和一個名為“UserOperations”的僞交易。
UserOperations
UserOperations由用戶提交到UserOperation內存池,並由“Bundlers”(捆綁者)收集到“捆綁交易”中。這些Bundlers可以是選擇處理這些交易的區塊提議者或區塊建設者。像Stackup、Alchemy、Biconomy、Blocknative、Etherspot和Candide Wallet這樣的實體已經進行了Bundlers的建設和部署。
捆綁交易被發送到名為“EntryPoint”的智能合約,該智能合約通過指定的智能合約錢包驗證每個UserOperation。這些錢包必須實現兩個功能:
validateUserOps(驗證UserOps)
execute(執行)
EntryPoint合約將調用每個智能合約錢包的validateUserOps來確定交易是否有效。智能合約可以隨心所欲地實現這個功能,支持上述的一些可定制性。
或者,EntryPoint合約可以使用籤名聚合器。抽象帳戶信任此合約以創建UserOperation籤名,該合約還被Bundlers用於創建一個“aggregateSignsignature”(聚合籤名),它是多個UserOperation的籤名。這將衆多籤名轉換為一個值,壓縮驗證所需的數據。這對於佔用大部分數據成本的rollup來說尤其有用。
EntryPoint合約將在“handleOps()”進程中使用該聚合器合約來驗證聚合籤名。
如果UserOperation有效,EntryPoint將調用抽象帳戶上的execute來執行所需操作。請注意,這些“抽象账戶”就是智能合約。
Entry Point合約
Entry Point合約只有一個,這就是為什么Openzepplin的審計是重磅新聞。該合約將作為所有這些抽象帳戶的中央信任錨點。
Entry Point合約分離了交易(UserOp)驗證和執行的過程。該合約使用兩條路徑來驗證用戶操作。
handleOPs
handleAggregatedOps
以上兩個函數都將使用UserOp提供的參數創建一個帳戶(如無账戶),並使用指定的抽象帳戶驗證UserOp。
最後,Entry Point合約將通過在帳戶上調用“execute”來執行UserOp,並將UserOp的calldata作為參數傳入。然後,該帳戶使用給定的參數執行所編程的任何操作。
基於Entry Point的方法清晰地分離了驗證和執行過程,允許帳戶處理執行。所有這些使用戶能夠以一種可預測且精妙的方式與帳戶交互,而不需要帳戶所有者發起交易。
Paymasters
ERC還推出了“paymaster”概念。這是一個合約,將通過支付ETH來支持用戶的交易。作為交換,用戶通過向Paymaster發送預先指定的ERC-20代幣來支付他們的交易。
以上是對ERC-4337細節的綜述。還有很多很酷的細節,我們沒有時間進行討論,比如:模擬、捆綁規範和首次帳戶創建等。
結論
對以太坊用戶來說,這是一個巨大的用戶體驗改進。dApp可以支付用戶的gas費,這對非加密原生用戶來說是一個很好的進入加密世界的工具,交易可以批量處理(不再有“10次點擊交易”),還有“payment sessions”,這樣你就不再需要批准每一筆交易了。
帳戶抽象可以提高隱私工具的效用,允許用戶使用他們想要的任何代幣支付交易,並允許用戶與區塊鏈交互而無需處理私鑰。今天你若丟失了私鑰則意味着你的錢也丟失了。
而在一個账戶抽象的世界裏,丟失私鑰並不意味着失去一切。
請特別注意圍繞Visa的興奮之情。他們的團隊通過使用pull-based交易和自我托管錢包,發布了一種自動支付的設計。對於那些希望使用區塊鏈進行經常性支付以補充服務的公司來說,這一直是一個巨大的問題。
以前,付款必須由付款人發起,但通過帳戶抽象,服務提供商可以為他們的服務收費,而無需你自己進行交易。就像自動支付信用卡账單一樣。帳戶甚至可以被編程為在任何時間內接收發票,因此你可以設置訂閱服務的時間限制。
錢包可以進行配置,這樣你就可以有備份账戶了,還可允許某些服務的更改。用戶甚至可以在不知情的情況下與區塊鏈進行交互。帳戶創建可以由帳戶發起人處理,所有用戶所要做的就是使用web2類型的用戶體驗來管理自己的錢包。
簡而言之,帳戶抽象為以太坊的安全性和去中心化增加了效用。這是個大工程,而我們才剛起步。
鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播信息之目的,不構成任何投資建議,如有侵權行為,請第一時間聯絡我們修改或刪除,多謝。
區塊鏈愛好者
文章數量
34524粉絲數
0