zkSync 如何在協定中實作帳戶抽象

作者: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」驗證每個帳戶後執行這些操作。

sVCoKNNL3gBgPez362m7hBtEu0dPsvZ9WH1BJqKB.png

zkSync 如何利用帳戶抽象化(AA)

zkSync Era 是第一個原生實作帳戶抽象的EVM 相容鏈,它透過引入智慧帳戶和支付方這兩種主要元件,徹底改變了帳戶操作。

智慧帳戶

智慧帳戶由IAccount 介面表示,該介面具有5 種方法:

  • validateTransaction(): 檢查交易是否符合帳戶規則。如果不符合,則會回滾。

  • executeTransaction(): 在扣除費用後執行交易。

  • payForTransaction(): 如果不使用支付方,則直接支付費用。

  • prepareForPaymaster(): 設定支付方支付費用。

  • executeTransactionFromOutside(): 允許從外部發起交易。

您可以在下面看到IACCOUNT程式碼

jeUYpzUdy7dPpBkwP7qgAVWcxuWrItDzDmWrcYSM.png

支付方

與EIP4337 一樣,zkSync 的帳戶抽像也支援支付方,支付方是可以補償其他帳戶交易執行的帳戶。

每個支付方都應該實作IPaymaster 接口,該介麵包含以下兩種方法:

  • validateAndPayForPaymasterTransaction(): 確認支付方是否同意支付交易費用並向操作員發送資金。

  • postTransaction(): 處理交易後的操作,取決於交易的結果和費用退款。

請參閱下面的程式碼:

H1Aadfm24aX8XrJZogkahVWaVu76DVBF2y8As4Hm.png

zkSync 的帳戶抽象化(AA) 協定與EIP4337 非常相似,不過為了提高效率和改善使用者體驗,zkSync 的協定確實存在一些差異。

zkSync 的原生帳戶抽象與以太坊的EIP 4337 之間的關鍵差異:

  1. 實作: zkSync 將AA 整合到協定中,而EIP4337 避免了協定層級的變更。

  2. 帳戶類型: zkSync 將智能合約和支付方等同對待;EIP4337 則加以區分。

  3. 交易處理: zkSync 為所有帳戶使用統一的記憶體池,不同於EIP4337 的分離流程。

  4. 支付方: zkSync 支援所有帳戶的支付方,EIP4337 則將其限制為智慧合約。

如何在zkSync 上建立智慧帳戶

若要在zkSync 上建立智慧帳戶,請使用IAccount 實作基本方法,並使用IPaymaster 實作依賴支付方的費用支付。

確保您的帳戶支援EIP-1271 進行簽名驗證也非常有用。

完成這些步驟後,只需使用zkSync 的createAccount 方法部署您的帳戶即可!

zkSync 目前整合有2 個智慧合約錢包:

✦ HoldstationW

✦ pier_wallet

Total
0
Shares
Related Posts