作者:Three Sigma,區塊鏈審計公司來源:X,@threesigmaxyz 翻譯:善歐巴,金色財經
整合ZK Rollup 和帳戶抽象化為Layer 2 解決方案帶來了可擴展性和靈活性方面的新維度。今天,我們將深入研究zkSync 以及他們如何在協議中實現帳戶抽象。
什麼是zkSync
@zkSync 是由@the_matter_labs 開發的用於以太坊上可擴展、低成本交易的去信任協議,利用zk-rollup 技術透過批量處理鏈下執行的交易來緩解擁塞。 zkSync 的架構整合了zk-rollup 和Validium,分別定義為智慧合約的zkEVM 和鏈下資料可用性的zkPorter。
在此處更深入地了解協定架構:
什麼是帳戶抽象
帳戶抽象化是一項技術,透過利用智慧合約作為錢包來消除對EOA(外部擁有帳戶)的需求,從而提供更安全、更佳的用戶體驗,打造卓越的區塊鏈體驗。
在著名的ERC-4337 AA 工作流程中,使用者將操作提交到專用記憶體池。
捆綁者會將這些操作編譯成單一交易,傳送給EntryPoint 合約,該合約會使用「validateUserOp」驗證每個帳戶後執行這些操作。
zkSync 如何利用帳戶抽象化(AA)
zkSync Era 是第一個原生實作帳戶抽象的EVM 相容鏈,它透過引入智慧帳戶和支付方這兩種主要元件,徹底改變了帳戶操作。
智慧帳戶
智慧帳戶由IAccount 介面表示,該介面具有5 種方法:
-
validateTransaction(): 檢查交易是否符合帳戶規則。如果不符合,則會回滾。
-
executeTransaction(): 在扣除費用後執行交易。
-
payForTransaction(): 如果不使用支付方,則直接支付費用。
-
prepareForPaymaster(): 設定支付方支付費用。
-
executeTransactionFromOutside(): 允許從外部發起交易。
您可以在下面看到IACCOUNT程式碼
支付方
與EIP4337 一樣,zkSync 的帳戶抽像也支援支付方,支付方是可以補償其他帳戶交易執行的帳戶。
每個支付方都應該實作IPaymaster 接口,該介麵包含以下兩種方法:
-
validateAndPayForPaymasterTransaction(): 確認支付方是否同意支付交易費用並向操作員發送資金。
-
postTransaction(): 處理交易後的操作,取決於交易的結果和費用退款。
請參閱下面的程式碼:
zkSync 的帳戶抽象化(AA) 協定與EIP4337 非常相似,不過為了提高效率和改善使用者體驗,zkSync 的協定確實存在一些差異。
zkSync 的原生帳戶抽象與以太坊的EIP 4337 之間的關鍵差異:
-
實作: zkSync 將AA 整合到協定中,而EIP4337 避免了協定層級的變更。
-
帳戶類型: zkSync 將智能合約和支付方等同對待;EIP4337 則加以區分。
-
交易處理: zkSync 為所有帳戶使用統一的記憶體池,不同於EIP4337 的分離流程。
-
支付方: zkSync 支援所有帳戶的支付方,EIP4337 則將其限制為智慧合約。
如何在zkSync 上建立智慧帳戶
若要在zkSync 上建立智慧帳戶,請使用IAccount 實作基本方法,並使用IPaymaster 實作依賴支付方的費用支付。
確保您的帳戶支援EIP-1271 進行簽名驗證也非常有用。
完成這些步驟後,只需使用zkSync 的createAccount 方法部署您的帳戶即可!
zkSync 目前整合有2 個智慧合約錢包:
✦ HoldstationW
✦ pier_wallet