跳至內容
0%

Account abstraction(ERC-4337)與 meta transactions(ERC-2771)比較

發布於 2023年10月26日閱讀時間 2 分鐘

Meta Transactions 與 Account Abstraction 都是用來改善 Ethereum 使用者體驗的技術。Meta Transactions 需要更新智能合約,這也是它正逐漸被淘汰的原因。

Account Abstraction 與 meta transactions 有何不同?

Account Abstraction 的目標是抽象化 Ethereum 帳戶中更多的複雜性,而不只是 gas 費用。

從技術角度來看,meta transactions 與 Account Abstraction 的差異在於訊息的結構以及其向下相容性。

進一步了解 account abstraction

什麼是 account abstraction 中的 UserOps?

在 Meta Transactions 的情況下,業界標準是使用基於 EIP712 的訊息,這需要所有智能合約進行升級。

Account Abstraction 則標準化了一種稱為 UserOperations 的特殊交易格式。

UserOperation 包含了判斷使用者意圖執行何種交易所需的全部資訊,包括決定使用哪個 Paymaster 的欄位、使用者願意支付多少費用(在自行贊助的情況下),以及已簽署的 UserOperation。

什麼是 account abstraction 中的 paymasters?

ERC-4337 Account Abstraction 標準中的 Gas 抽象化部分引進了 Paymasters

Paymasters 是具有任意驗證邏輯的鏈上智能合約,可用來定義有效的 gas 贊助方式。這裡的差異在於執行是在鏈上進行的

DAOs應用程式以及其他團隊都可以部署自己客製化的 paymaster,並加入諸如 ERC-20 gas 支付等功能。

這些客製化的 Paymasters 可以使用 ERC-4337,與現有的 Bundler 服務即插即用。這一點與需要 Provider 採用的 Meta Transactions 不同。

使用 Gas Manager API 贊助交易

立即開始

Relayers 與 paymasters 的比較

在 Meta Transaction 概念中,Relayer 是由基礎設施供應商控制的私鑰,而 Account Abstraction 的 Bundlers 則是標準化的節點。在不同 Bundlers 之間切換,就跟更改 API 金鑰和 API URL 一樣簡單。

在 Account Abstraction 中並沒有 MinimalForwarder 這個概念,因為贊助驗證是在鏈上、在 Paymaster 合約內完成的。

在 Meta Transaction 的情況下,一筆原生交易中只能包含一筆交易;而 Bundlers 則可以將多個 UserOperations 打包成一個 bundle(一筆原生交易)!

透過 Bundler API 可靠地將 userOps 上鏈

立即開始

Account abstraction 相較於 meta transactions 的 5 項優點

1. 不需要更改智能合約

Meta Transactions 需要更新所有既有的、要採用它的合約,而 Account Abstraction 則是建立在現有的基礎設施之上。這代表所有智能合約預設就支援 Account Abstraction,使其成為比 Meta Transactions 更好的選擇。

2. Bundler 與 paymaster 服務之間可以無摩擦切換

在 ERC-4337 之下,所有 Bundlers 和 Paymasters 都依循特定標準進行溝通。團隊甚至可以為自己的應用程式建立具備條件邏輯的 Paymasters。

3. 不需要採用專有的 relayers

專有的 Relayers 缺乏一致性;每個 Relayer 都可能為了自己的使用情境使用不同的訊息格式。這導致要相容不同的 Relayer,就必須更改智能合約。

4. 更高的去中心化程度

隨著越來越多供應商提供各自的 Bundler 服務,開發者就能讓自己的交易流程更去中心化。這同時也讓開發者有機會捨棄品質較差的 Bundlers。

5. 不會被開發者工具綁定

使用 Meta Transactions 時,你也必須使用該基礎設施供應商的 SDK。這會導致工具被綁定,增加日後遷移 Relayers 時的摩擦。

在 Account Abstraction 的情況下,所有標準功能都由每個 SDK 支援,讓開發者可以依自己的專業選擇,也能依偏好自由切換!

此外,由於 UserOperation 標準將被每個供應商採用,建構像是 UserOperation Explorer 這類工具也變得可行。

如何把 meta transactions 更新為 account abstraction?

如果你已經為了支援 Meta Transactions 而更改了智能合約,那麼要還原這些更改的遷移過程其實很簡單。

與 Meta Transactions 不同,msg.sender 和 msg.data 在 Account Abstraction 中可以直接沿用。

如果需要客製化的 Paymasters 或 Account Factories,開發這些元件就會是遷移過程中的下一步。

對於標準實作,我們建議使用經過完整審計的現有 AA 供應商,以縮短開發時間並減少自行導入的錯誤。

Alchemy 的 Gas Manager 提供細緻的控制選項,例如 每個地址的 Gas 使用量限制可贊助的 UserOperations 數量上限地址白名單、贊助期限,以及網域層級的白名單

Alchemy Gas Manager 儀表板:設定 gas 贊助支出規則
Alchemy Gas Manager 的支出規則介面
Alchemy Gas Manager 政策設定:贊助額度上限與白名單地址
Gas Manager 介面(續)

Gas Manager Admin API 讓你能以程式化方式建立、讀取及更新 Gas 政策。除此之外,開發者還能取得一個視覺化儀表板,查看每一筆已贊助的 UserOperation!

Gas Manager 支出儀表板 Gas Manager 操作視圖
Gas Manager 支出儀表板 Gas Manager 操作視圖

結論

Account Abstraction(ERC-4337)是一種將無 gas 交易整合進你的應用程式中的新方法,也是更好的方法,其優點包括:無需更改合約層級的程式碼、可無摩擦地切換供應商、能與其他現有基礎設施組合搭配,以及提升去中心化程度。

Background gradient

打造區塊鏈魔法

Alchemy 結合最強大的 Web3 開發者產品與工具,並提供資源、社群與卓越的支援。