menu-icon
anue logo
澳洲房產鉅亨號鉅亨買幣
search icon
區塊鏈

談以太坊的帳戶抽象化與ERC-4337

BlockBeats 律動財經 2022-10-25 19:01

cover image of news article
律動財經圖片

以太坊系統中實際存在兩種類型的帳戶:

· 一種是由私鑰控制的外部帳戶(externally-owned account,EOA),比如我們所使用的錢包中的帳戶,這類帳戶都有自己的餘額。擁有者可以通過創建和簽名一筆交易從自己的外部帳戶發送消息;

· 另一種是由部署到區塊鏈上的代碼控制的合約帳戶(contract account),由儲存在智能合約帳戶(有時也被稱為智能錢包)內的以太坊虛擬機代碼控制。當合約帳戶收到資訊時,其內部代碼就會被激活,並允許它對內部儲存進行讀取和寫入以及創建新合約等操作。按照目前的以太坊協議,只有外部帳戶才可以發起交易,並且僅允許帳戶的所有人修改其帳戶狀態。

什麼是帳戶抽象化?

帳戶抽象是對以上兩種帳戶的一種改進,嘗試模糊二者之間的界限,變成一種包含複雜邏輯的通用性帳戶,使帳戶可以同時擁有合約帳戶和外部帳戶的功能。

這種做法相當於讓用戶按照合約帳戶的格式來定義外部帳戶,用戶可以在智能合約錢包中包含任何邏輯驗證。由密鑰控制的帳戶也可以獲得代碼的支持。





帳戶抽象化的各種方案

一直以來,實現帳戶抽象化都是以太坊開發者社區的願景。社區也提出了各種各樣的方案,如:EIP-86,EIP-2938 等。

EIP-86 是為帳戶抽象做技術準備,它定義了一種新的帳戶類型,允許用戶創建基於智能合約的帳戶。

以太坊協議本身要求將所有內容打包到源自 ECDSA 安全的外部帳戶 (EOA) 的交易中,每個用戶操作都需要由來自 EOA 的事務包裝,這會產生 21000 gas 的費用。用戶需要在單獨的 EOA 中擁有 ETH 來支付 gas。

EIP-86 提出的帳戶抽象帶來新類型的事務,與傳統事務必須有一個 EOA 作為發送者相比,這些事務沒有發送者。這種事務破壞了事務哈希的唯一性。EIP-86 原計劃於 Metropolis 階段升級,但由於前面所說的問題,開發者決定在 Metropolis 中暫緩引入。

EIP-2938 提供了一種帳戶抽象化解決方案,通過更改一部分以太坊協議,允許合約帳戶與外部帳戶一樣可以發起交易。但是由於這個方案需要在共識層進行以太坊協議的更改,所以並沒有得到廣泛的接受。

後來提出的新的協議 ERC-4337 則提供了一種無需更改共識協議的方案試圖達到與 EIP2938 同樣的效果,這種安全性更高的實現方式目前在社區中得到了更多的關注。

ERC-4337 如何實現?

ERC-4337 沒有試圖修改協議共識,而是在系統中複製了 mempool 的功能。

用戶發送一個用戶操作(UserOperation)對象,這個對象中包括了用戶的意圖、簽名和其他數據。

用戶操作有一個單獨的 mempool 儲存池,連接到這個儲存池的節點會進行 ERC-4337 特定的驗證,以過濾操作來確保他們只收到支付費用的操作。

由礦工或使用 Flashbots 服務的打包者批量收集這些用戶操作,打包成單筆捆綁交易(bundle transaction),並納入以太坊區塊中。打包者為以太坊中的捆綁交易支付 gas fee,並收取每個單獨的 UserOperation 所支付的費用進行補償。打包者將使用費用優先級邏輯選擇包含哪些 UserOperation 對象。  



其中的用戶操作 UserOperation 看起來像一個事務,但它是一個 ABI 編碼的結構,包括了以下字段:



1、發件人:進行操作的錢包;



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



3、initCode:如果錢包尚不存在,則用於創建錢包的初始化代碼;



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



而每一個錢包都是一個智能合約,必須包括兩個功能函數:

1、validateUserOp,它接受一個 UserOperation 作為輸入。這個函數應該驗證 UserOperation 里的簽名和 nonce,如果驗證成功則支付費用並增加 nonce,如果驗證失敗則拋出異常;



2、op 執行函數,將 calldata 解析成錢包執行操作的一個或多個指令。  





ERC-4337 帶來的變化



如果該提議被普遍採用,簽名驗證轉移到了以太坊虛擬機(EVM)上,validateUserOp 函數添加了任意簽名和隨機數驗證邏輯,使驗證邏輯變得更加靈活。

如此一來,簽署交易之時就能採用新的密碼學工具,錢包也可以提供一些新的功能,比如:

1、多重簽名;

2、社交恢復;

3、更高效、更簡單的簽名算法(例如 Schnorr、BLS);

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

5、可升級錢包。

這種方案還打開了各種其他交易許可管理,比如允許交易通過智能合約來支付 gas 費。

在目前,外部錢包要在以太坊上交互的 gas fee 只能通過錢包中的 ETH 來支付,如果你的錢包中只有 ERC-20 Token,沒有 ETH,你將沒有辦法將這些 Token 轉出。當 ERC-4337 採用後,用戶可以使用帳戶中的 ERC-20 Token 來支付費用,由礦工節點用合約作為仲介來代為支付 ETH 上鏈並獲取用戶的 ERC-20 Token 。

抽象化實現後,由外部帳戶的所有者簽名交易並進行廣播將不再是發起交易的唯一方法。這將為以太坊充當元交易的中繼者帶來可能。目前許多以太坊上的應用都需要依靠中繼者在區塊鏈上發布用戶交易,並向中繼者支付費用。如果錢包中可以內置更複雜的合約,有些中繼者就不再有存在的必要,也就不需要向他們支付額外的費用。

雖然有很多優點,但是新方案也同樣面臨一些問題。

最突出的一點就是更高的 Gas 成本,基本的 ERC-4337 操作約需要 42000 gas,而常規交易需要 21000 gas,原因如下:

1、需要支付大量的單個儲存讀/寫成本,在 EOA 的情況下,這些成本會捆綁到一筆 21000 gas 的付款中:

(1)編輯包含 pubkey+nonce (~5000) 的儲存 slot;

(2)用戶操作調用數據成本(約 4500,通過壓縮可減少到約 2500);

(3)ECRECOVER (~3000);

(4)首次訪問錢包本身 (~2600)

(5)首次訪問收款人帳戶 (~2600)

(6)將 ETH 轉入收款人帳戶 (~9000)

(7)編輯儲存以支付費用(~5000)

(8)訪問包含代理 (~2100) 的儲存 slot,然後訪問代理本身 (~2600);

2、除了上述儲存讀/寫成本之外,合約還需要執行「業務邏輯」(解包 UserOperation、對其進行哈希、洗牌變量等)

3、需要消耗 gas 來支付日誌費用(EOA 不發布日誌);

4、一次性合約創建成本(約 32000 gas,加上代理中每個 code byte 200 gas,再加上設置代理地址的 20000 gas)

簡而言之,帳戶抽象地址的每一步都需要計算,需要消耗更多的資源,也增加了額外的費用。

好在這並不是無解的。

由於 Rollup 擅長進行數據壓縮,與數據複雜的帳戶抽象方案具有天然的契合點。

在 Vitalik 最新的提案中,提出了通過 layer 2 來處理帳戶抽象化產生的數據。其改進點在於,將只能分步驟實現的功能打包成批交易,同時用 SNARK 技術來保證交易有效性。  

結語

以太坊重點發展 Layer 2 的格局已定的現在,Vitalik 對以太坊升級的後續計劃開始轉向帳戶抽象。最新的提案中展示了 rollup+帳戶抽象的技術路徑。各個 Rollup 提供商也推出了兼容帳戶抽象的新版本。

今年 6 月,zkSync 發布 V2 更新資訊:增添「帳戶抽象」功能,增加與以太坊 EVM 的兼容性。10 月,ERC-4337 發布了新版本,添加了包括 BLS 簽名算法的簽名聚合功能。簽名聚合能夠讓構建者和批次提交者也能聚合簽名(例如 BLS、SNARKs),大大減少鏈上數據,可為 rollups 降低數據成本。



我們有理由相信,帳戶抽象帶來的變化同樣蘊藏着生態爆發的可能性。隨著 Rollup 的發展,可以與 Rollup 進行結合的帳戶抽象化一定也能發展出更優更精細的方案。

原文連結

暢行幣圈交易全攻略,專家駐群實戰交流

▌立即加入鉅亨買幣實戰交流 LINE 社群(點此入群
不管是新手發問,還是老手交流,只要你想參與虛擬貨幣現貨交易、合約跟單、合約網格、量化交易、理財產品的投資,都歡迎入群討論學習!

前往鉅亨買幣找交易所優惠






Empty