🎉 Gate xStocks 交易開啓啦,現貨、合約、Alpha齊上線!
📝 在Gate廣場發帖,曬出你的交易體驗或精彩截圖,瓜分$1,000大獎池!
🎁 廣場優質創作者5名,每人獨享$100合約體驗券!
🎉 帖文同步分享到X(推特),瀏覽量前十再得$50獎勵!
參與方式:
1️⃣ 關注 @Gate廣場_Official
2️⃣ 帶 #Gate xStocks 交易体验# ,原創發帖(不少於20字,僅用活動標籤)
3️⃣ 若分享到推特,請將連結提交表單:https://www.gate.com/questionnaire/6854
注:表單可多次提交,發布更多帖文可提升獲獎機會!
📅 7月3日16:00—7月9日24:00(UTC+8)
詳情:https://www.gate.com/announcements/article/45926
每一條體驗,都有機會贏取大獎!快在Gate廣場show出你的操作吧!
EthCC大會探討多鏈帳戶抽象:ERC-4337與原生AA的技術對比
多鏈帳戶抽象:探索加密基礎設施的未來
2024年7月8日至11日,以太坊社區會議(EthCC)在比利時布魯塞爾舉行。作爲歐洲規模最大的以太坊年度活動,本次會議重點關注技術和社區發展。
在本屆以太坊社區會議(EthCC 7)上,超過350名區塊鏈行業一線的意見領袖發表了演講。其中,一位區塊鏈開發者受邀參與,並就"揭示未來:多鏈帳戶抽象解析"這一主題發表了演講。
演講要點概述
帳戶抽象(AA)的核心包括籤名抽象和支付抽象。前者允許用戶選擇任意驗證機制,後者則提供多種交易支付選項。這種靈活性大大提升了安全性和用戶體驗。
ERC-4337和原生AA在驗證階段的入口點函數是固定的,但在執行階段,只有原生AA保持固定入口點。不同實現方式在驗證交易限制和執行交易步驟上各有特點。
在EVM兼容鏈上實施ERC-4337時,主要面臨兩大挑戰:Rollup設計中的協議差異,以及地址計算方式的差異。這些差異導致在L1和L2之間實現ERC-4337時出現一些難以察覺的開發細節。
帳戶抽象簡介
帳戶抽象的定義
帳戶抽象(AA)主要包含兩個關鍵概念:
籤名抽象:用戶可以自由選擇任何喜歡的驗證機制,不再局限於特定的數字籤名算法(如ECDSA)。
支付抽象:用戶可以使用多種方式支付交易費用,例如使用ERC-20代幣代替原生代幣,或由第三方贊助交易。
這種靈活性不僅提高了安全性,還優化了用戶體驗。帳戶抽象的目標是通過多種方式實現這兩個核心概念。
ERC-4337解析
目前,以太坊協議中的外部擁有帳戶(EOA)存在一些限制,如固定的籤名方法和支付設計。ERC-4337通過引入更靈活的帳戶管理和交易處理方法來解決這些問題。
userOp結構:在ERC-4337中,用戶將userOp結構發送到Bundler。Bundler收集多個userOp,並通過調用handleOps函數將它們發送到EntryPoint合約。
EntryPoint合約:該合約像操作系統一樣處理交易,主要功能包括:
原生AA簡介
在以太坊中,帳戶分爲EOA和合約帳戶。然而,在原生AA中,每個帳戶都是一個合約,且交易處理機制直接嵌入到區塊鏈協議中。
各區塊鏈網路中的AA設計:
ERC-4337與原生AA的差異
操作系統角色
AA操作系統需要解決以下問題:
在ERC-4337中,這些角色由Bundler和EntryPoint Contract協同完成。
在原生AA中,用戶將其userOps發送給官方服務器的操作員/排序器,而不是Bundler和EntryPoint Contract。
StarkNet中,Sequencer負責處理所有這些任務。
zkSync Era的主要特點是Operator需要與bootloader(系統合約)配合工作。Bootloader負責開啓新塊,定義塊參數和Gas參數,並接收來自Operator的交易進行驗證。
合約接口
由於存在三個步驟,帳戶合約接口在不同實現中相似,這些入口點函數只能由AA OS調用:
在ERC-4337和原生AA中,"驗證"階段的入口點函數是固定的,而在"執行"階段,只有原生AA中的入口點是固定的。
驗證步驟的限制
由於驗證交易沒有成本限制,攻擊者可能對內存池進行DoS攻擊,從而影響捆綁器(EIP-4337)或運算符/排序器(原生AA)。
EIP-4337定義了禁止的操作碼以及存儲訪問限制。zkSync Era放寬了一些OpCode的使用:
執行步驟的限制
zkSync中,執行系統調用需要確認系統標志的存在。例如,增加nonce需要與NonceHolder交互,部署合約則需要與ContractDeployer交互。
ERC-4337和StarkNet在執行階段沒有特殊限制。
隨機數處理
首次交易部署
zkSync特殊設計
在zkSync中,如果直接將ETH從以太坊EOA轉移,無需部署定制帳戶合約,用戶將收到一個具有相同地址的默認帳戶。該帳戶可以像以太坊EOA一樣工作,並由相應的以太坊EOA私鑰控制。
這種帳戶類型是version None而非version1。用戶無法調用DefaultAccount的函數,因爲它沒有在內核空間部署任何代碼。
L1與L2的4337差異
在EVM兼容鏈上實施ERC-4337主要存在兩個關鍵差異:協議差異和地址差異。
協議差異
Rollup設計中,L2需要將數據上傳到L1以確保安全和結算。在ERC-4337中,與此上傳過程相關的費用(如L1安全費和blob費用)應包括在預驗證Gas中。確定預驗證Gas中適當的上傳費用是一個重大挑戰。
地址差異
zkSync ERA的create函數中的地址編碼方式與以太坊和OP匯總不同。此外,StarkNet使用獨特的哈希函數進行地址計算。
在EVM兼容鏈上的ERC-4337背景下,我們通常假設地址計算在各鏈上是一致的。然而,一個容易被忽視的細節可能導致以太坊和L2中的ERC-4337實現之間的帳戶合約地址不同。
關鍵問題在於硬分叉中添加新的操作碼。例如,如果L2鏈不支持上海硬分叉,且編譯時未指定EVM版本,push0的引入會導致字節碼變化,即使Solidity代碼相同。