---
title: "ERC-4337 智慧合約錢包如何運作？"
description: "了解符合 ERC-4337 標準的智慧合約錢包如何運作"
---

# ERC-4337 智慧合約錢包如何運作？

使用[帳戶抽象化（Account Abstraction，ERC-4337）](https://www.alchemy.com/overviews/what-is-account-abstraction)的智能合約錢包，會建立一個由智能合約管理的錢包，而不是像 EOA 錢包（Externally Owned Address，外部擁有帳戶）那樣由單一私鑰管理的錢包。

智能合約錢包的可程式化特性，讓開發出各式各樣的新使用案例成為可能。透過在不犧牲安全性或匿名性的前提下降低複雜度，智能合約錢包將有助於推動下一波區塊鏈使用者的導入。

<CalloutBlock>
  想在你的應用程式中加入[嵌入式智能合約錢包](https://www.alchemy.com/smart-wallets)嗎？使用我們企業級的 Embedded Accounts 及垂直整合的 AA 基礎設施，讓使用者無需助記詞、無需支付 gas、無摩擦地導入。
</CalloutBlock>

## **什麼是智能合約錢包？**

[智能合約錢包](https://www.alchemy.com/dapps/best/smart-contract-wallets)使用智能合約來儲存和管理數位資產（例如加密貨幣、NFT 等）。智能合約錢包是帳戶抽象化的基礎：這是一個將各種 Ethereum 帳戶類型統一為單一類型的過程，將帳戶的控制權從網路「抽象化」出來，改以智能合約來定義。

**一些使用 ERC-4337 的智能合約錢包範例：**

1. Soul Wallet
1. Candide
1. UniPass
1. Castle
1. Openfort

兩個未使用 ERC-4337 的主要智能合約錢包是 **Safe** 和 **Argent**。

## **什麼是合約帳戶（Contract Accounts，CAs）？**

合約帳戶又稱為智能合約，其中包含用於管理各方之間資訊交換的程式碼。合約帳戶被用於每一種 DeFi 協議、NFT 收藏或 ERC-20 代幣中。

合約的所有業務邏輯與狀態變數都儲存在鏈上。由於智能合約的狀態與程式碼都儲存在鏈上，部署它的外部擁有帳戶必須支付一筆費用。

**注意**：在 web3 程式設計中，有一種「智能合約工廠」模式，即一個合約可以透過預先定義的介面部署其他合約。即使在這種情況下，發起交易仍必須源自 EOA，並由其支付費用。

### 合約帳戶（Contract Accounts，CAs）與外部擁有帳戶（Externally Owned Accounts，EOAs）在運作方式上有何不同？

智能合約帳戶與 EOA 帳戶之間的主要差異在於，智能合約帳戶可以包含邏輯。由於只有 EOA 帳戶能夠發起交易，智能合約帳戶必須依賴 Bundler 的 EOA 帳戶，將使用者操作打包成單一交易後發佈到區塊鏈上。

在目前的 Ethereum 協議下，EOA 是唯一能夠發起交易的帳戶類型，無論是合約呼叫還是價值轉移皆然。即使是合約帳戶呼叫另一個合約帳戶的情況，交易的發起來源始終是外部擁有帳戶。

以下是合約帳戶與 EOA 帳戶的比較：

<EmbeddedTable
  table={{
    columns: [
      { key: "1", width: 200, title: "EOA", dataType: "object" },
      { key: "2", width: 200, title: "CONTRACTS", dataType: "object" },
    ],
    data: [
      {
        "1": { title: "<p>Controlled by a human, through a private key</p>", tooltip: "", icon: "" },
        "2": { title: "<p>No private key. Governed by its own code</p>", tooltip: "", icon: "" },
        id: 0,
      },
      {
        "1": { title: "<p>Can initiate transactions</p>", tooltip: "", icon: "" },
        "2": { title: "<p>Can never be the origin of a transaction initiation</p>", tooltip: "", icon: "" },
        id: 1,
      },
      {
        "1": { title: "<p>Does not contain code</p>", tooltip: "", icon: "" },
        "2": { title: "<p>Contains code and state, stored in storage</p>", tooltip: "", icon: "" },
        id: 2,
      },
      {
        "1": { title: "<p>Created offchain for free</p>", tooltip: "", icon: "" },
        "2": { title: "<p>Created onchain for a cost, incurred by the deployer</p>", tooltip: "", icon: "" },
        id: 3,
      },
    ],
  }}
/>

那麼，如果智能合約錢包無法自行發起交易，它們要如何執行交易呢？

## ERC-4337 智能合約錢包如何運作

由於智能合約錢包無法發起交易，它們必須由 EOA 錢包呼叫。這個流程由多個[帳戶抽象化基礎設施提供商](https://www.alchemy.com/account-abstraction)（例如 Bundler）以及智能合約（例如 EntryPoint）共同支援。

<ExternalVideo
  url="https://youtu.be/FjK5rYznJjU?si=0e-DgU5kxxxOwaVg"
  provider="youtube"
  providerUid="FjK5rYznJjU"
/>

**智能合約錢包交易的典型流程如下：**

1. 使用者想要執行一筆 [UserOperation](https://www.alchemy.com/overviews/user-operations)
1. UserOperation 會被送往「替代記憶池（alternative mempool）」
1. 持有 EOA 錢包的 [Bundler](https://www.alchemy.com/overviews/what-is-a-bundler) 將所有 UserOperation 打包，並送往 EntryPoint 合約
1. EntryPoint 合約驗證並執行所有 UserOperation
1. 打包這些 UserOperation 的 EOA 錢包，會由使用者的錢包或 [Paymaster](https://www.alchemy.com/overviews/what-is-a-paymaster) 償還其代為支付的 ETH

<ImageBlock
  src="https://media.alchemy.com/1703265387-how-user-operations-are-bundled-for-4337.jpeg"
  alt="顯示 UserOps 如何被打包、驗證及執行的示意圖。"
  width={960}
  height={540}
  caption="顯示 UserOps 如何被打包、驗證及執行的示意圖。"
/>

雖然從技術角度理解智能合約錢包的運作方式可能有些困難，但對終端使用者而言，[智能合約錢包相較於 EOA 錢包提供了許多改進](https://www.alchemy.com/overviews/smart-contract-wallet-benefits)，例如可程式化性，以及支援社交復原（social recovery）等功能的能力。

### 了解智能合約錢包運作方式的其他資源

若想進一步了解帳戶抽象化各個元件的運作方式，請閱讀由 Alchemy 帳戶抽象化基礎設施工程團隊的 **David Philipson** 所撰寫的系列文章「You Could Have Invented Account Abstraction」。

1. [UserOps、Bundler 與 EntryPoint 合約](https://www.alchemy.com/overviews/what-is-account-abstraction)
1. [使用 Paymaster 贊助 Gas](https://www.alchemy.com/overviews/what-is-account-abstraction-paymasters)
1. [建立智能合約錢包](https://www.alchemy.com/overviews/what-is-account-abstraction-wallet-creation)
1. [聚合簽章](https://www.alchemy.com/overviews/account-abstraction-aggregate-signatures)

## 常見問題

### 什麼是智能合約錢包？

智能合約錢包使用智能合約來儲存和管理加密貨幣與 NFT 等數位資產，而非依賴單一私鑰，是帳戶抽象化的基礎。

### ERC-4337 智能合約錢包如何運作？

ERC-4337 錢包的運作流程是：使用者建立 UserOperation，送往替代記憶池，Bundler 收集後提交給 EntryPoint 合約進行驗證與執行，最後由錢包或 Paymaster 償還費用。

### 智能合約帳戶與 EOA 帳戶有什麼差異？

智能合約帳戶包含可程式化的邏輯，但無法自行發起交易；而 EOA 帳戶可以發起交易，但不具備可程式化的功能。

### 什麼是 UserOperation？

UserOperation 是使用者建立的交易請求，會被送往替代記憶池，由 Bundler 收集後透過 EntryPoint 合約進行處理。

### Bundler 在 ERC-4337 中扮演什麼角色？

Bundler 是持有 EOA 錢包的節點，會從替代記憶池中收集 UserOperation，將其打包後提交給 EntryPoint 合約進行驗證與執行。

### 什麼是 EntryPoint 合約？

EntryPoint 合約是一個鏈上智能合約，負責驗證並執行由 Bundler 提交的打包 UserOperation。

### 智能合約錢包需要支付 gas 費用嗎？

智能合約錢包可以使用 Paymaster 來贊助 gas 費用，實現無 gas 交易，使用者無需直接支付 gas。

### 可以舉例說明 ERC-4337 智能合約錢包嗎？

範例包括 Soul Wallet、Candide、UniPass、Castle 與 Openfort，而 Safe 與 Argent 則是未使用 ERC-4337 的智能合約錢包。
