---
title: "Account abstraction（ERC-4337）與 meta transactions（ERC-2771）比較"
description: "了解開發者選擇 Account Abstraction 而非 Meta Transactions 的原因"
---

# Account abstraction（ERC-4337）與 meta transactions（ERC-2771）比較

[Meta Transactions](https://www.alchemy.com/smart-wallets) 與 Account Abstraction 都是用來改善 Ethereum 使用者體驗的技術。Meta Transactions 需要更新智能合約，這也是它正逐漸被淘汰的原因。

## Account Abstraction 與 meta transactions 有何不同？

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

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

## 進一步了解 account abstraction

<ExternalVideo
  url="https://youtu.be/Vpk_MhY-EeE?si=jb8KXjjgr51eiNta"
  provider="youtube"
  providerUid="Vpk_MhY-EeE"
/>

### 什麼是 account abstraction 中的 UserOps？

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

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

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

### 什麼是 account abstraction 中的 paymasters？

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

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

[DAOs](https://www.alchemy.com/dapps/top/daos)、[應用程式](https://www.alchemy.com/dapps/top/defi-dapps)以及其他團隊都可以部署自己客製化的 paymaster，並加入諸如 ERC-20 gas 支付等功能。

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

<CardWithCta
  text="使用 Gas Manager API 贊助交易"
  ctaLabel="立即開始"
  ctaHref="#"
  theme="gradient_blue"
/>

### Relayers 與 paymasters 的比較

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

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

在 Meta Transaction 的情況下，一筆原生交易中只能包含一筆交易；而 Bundlers 則可以將多個 _UserOperations_ 打包成一個 bundle（一筆原生交易）！

<CardWithCta
  text="透過 Bundler API 可靠地將 userOps 上鏈"
  ctaLabel="立即開始"
  ctaHref="#"
  theme="gradient_blue"
/>

## 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](https://www.alchemy.com/docs/reference/how-to-sponsor-gas-on-evm) 提供細緻的控制選項，例如 _每個地址的 Gas 使用量限制_、_可贊助的 UserOperations 數量上限_、_地址白名單、贊助期限，以及網域層級的白名單_！

<ImageBlock
  src="https://media.alchemy.com/1703859980-alchemy-gas-manager-spending-rules.jpeg"
  alt="Alchemy Gas Manager 儀表板：設定 gas 贊助支出規則"
  width={2390}
  height={1028}
  caption="Alchemy Gas Manager 的支出規則介面"
/>

<ImageBlock
  src="https://media.alchemy.com/1703860007-alchemy-gas-manager-ui.jpeg"
  alt="Alchemy Gas Manager 政策設定：贊助額度上限與白名單地址"
  width={2382}
  height={564}
  caption="Gas Manager 介面（續）"
/>

[Gas Manager Admin API](https://www.alchemy.com/docs/wallets/api/gas-manager-admin-api/admin-api-endpoints/create-policy) 讓你能以程式化方式建立、讀取及更新 Gas 政策。除此之外，開發者還能取得一個視覺化儀表板，查看每一筆已贊助的 UserOperation！

<ImageBlock
  src="https://media.alchemy.com/1703860035-alchemy-gas-manager-spending-dashboard.jpeg"
  alt="Gas Manager 支出儀表板 Gas Manager 操作視圖"
  width={2406}
  height={516}
  caption="Gas Manager 支出儀表板 Gas Manager 操作視圖"
/>

### **結論**

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