---
title: "什麼是模組化帳戶抽象化（Modular Account Abstraction）？"
description: "了解智能合約帳戶如何透過模組（Modules）與外掛（Plugins）建立新的擴充功能"
---

# 什麼是模組化帳戶抽象化（Modular Account Abstraction）？

Modular AA 是一項旨在推廣模組化智能帳戶的運動。其目標是讓帳戶可依使用者需求客製化，並讓開發者能夠建構具備豐富情境且自足的帳戶功能。

模組化智能合約帳戶（SCAs）讓建構者能夠為帳戶打造[實用的新擴充功能](https://www.alchemy.com/overviews/smart-contract-wallet-benefits)。範例包括：

1. **社交復原（Social Recovery）** - 允許受信任的裝置或朋友協助你在遺失存取權限時復原帳戶
1. **消費額度限制（Spending Limits）** - 允許[應用程式](https://www.alchemy.com/dapps/top/defi-dapps)代表你消費 token，最高不超過指定額度
1. **Passkey 支援** - 使用如 FaceID 之類的生物辨識登入

透過將模組化標準化，可大幅降低交易對手風險，進而帶來簡單且安全的 web3 使用者體驗。

[ERC-4337 標準](https://www.alchemy.com/overviews/what-is-account-abstraction)訂立了基礎設施元件與程式碼標準，實作後可讓使用者以智能合約作為主要帳戶類型，取代私鑰。過去，主要的帳戶類型是 EOA（End User Account），與 SCA 不同的是，EOA 並不具備自訂的驗證與執行邏輯。

本文旨在概述 Modular Account Abstraction，說明它帶來的能力，以及現有的標準與實作方式。

<CalloutBlock>
  透過將[模組化智能帳戶錢包](https://www.alchemy.com/smart-wallets)嵌入你的 web3 應用程式，讓使用者無需助記詞或 gas 即可開始使用，並藉由我們垂直整合的 AA 基礎設施進行擴展。
</CalloutBlock>

## 模組化智能合約帳戶有哪些不同類型？

[智能合約帳戶](https://www.alchemy.com/overviews/what-is-account-abstraction)本質上就是智能合約；它們可升級、可擴充，也可繼承。依照 SCA 的實作方式，可能允許或不允許新增外掛（plugin）／模組。本文將探討兩種不同的模組化 AA 概念：ERC-6900 與 SAFE Modules。

### **1. ERC-6900：模組化智能合約帳戶與外掛**

[ERC-6900](https://eips.ethereum.org/EIPS/eip-6900) 的目標是定義標準 Account 與 Module 實作之間的一組介面。此提案希望能改善開發者體驗、Module 之間的互通性，以及在不同帳戶實作間切換時的資料可攜性。

該標準受到 ERC-2535 啟發，但不要求開發者遵循 Diamond 模式。

#### 什麼是用於模組化智能合約帳戶的 ERC-6900 外掛？

<ExternalVideo
  url="https://youtu.be/YHy_d1pvtsw?si=KyuT9ynLNDm0zRCc"
  provider="youtube"
  providerUid="YHy_d1pvtsw"
/>

#### ERC-6900 定義了哪些類型的外掛？

根據該標準，外掛可分為三種類型：

1. **驗證方案（Validation Schemes）** - 定義模組化智能合約帳戶（MSCA）在何種情況下會代為核准交易
1. **執行邏輯（Execution Logic）** - 執行期間要運行的任意邏輯
1. **Hooks** - Hooks 可在[使用者操作](https://www.alchemy.com/overviews/user-operations)執行前後觸發任意邏輯

<ImageBlock
  src="https://media.alchemy.com/1703864824-erc-6900-module-diagram.jpeg"
  alt="ERC-6900 模組圖"
  width={895}
  height={301}
  caption="ERC-6900 模組圖"
/>

**該標準也定義了：**

1. 如何為 MSCA 實作 Validation、Execution 與 Hook 外掛。
1. 符合規範的帳戶實作應如何新增、移除、更新與檢視外掛。
1. 輔助型別，例如 **FunctionReference**。

<ImageBlock
  src="https://media.alchemy.com/1703864850-transaction-flow-to-erc-6900-sca.jpeg"
  alt="交易如何透過 entry point 流向 ERC-6900 SCA 的示意圖"
  width={2778}
  height={1500}
  caption="交易如何透過 entry point 流向 ERC-6900 SCA 的示意圖"
/>

#### ERC-6900 定義了哪些介面類型？

ERC-6900 規範定義了三個主要介面：IPluginUpdate、IPluginLoupe 與 IStandardExecutor。

##### **1. IPluginUpdate**

IPluginUpdate 介面定義了：

- 外掛操作 **ADD**、**REMOVE** 與 **REPLACE**
- Validator 類型與 Hook 類型
- 使用者自訂的 **struct**，用於更新各種外掛類型
- 標準化的 **updatePlugins** 函式，於更新外掛時呼叫，並在更新後觸發 **ExecutionPluginUpdate** 事件

##### **2. IPluginLoupe**

IPluginLoupe 受 ERC-2535 啟發，ERC-6900 定義了 dapp 或其他合約如何讀取 MSCA 所支援的外掛。

##### **3. IStandardExecutor**

IStandardExecutor 是模組化智能合約帳戶應實作的介面，以支援開放式執行。

### **2. SAFE modules**

所有基於 SAFE 的帳戶皆支援 SAFE Modules。為維持高安全標準，SAFE 團隊採用了關注點分離模式，並實作了不同的模組類型。

- **Modules** - 白名單地址，可代表 Safe 智能帳戶執行交易。
- **Guard** - 可設定的合約，用於對即將執行的交易進行額外檢查。
- **Fallback Handler** - 可設定的合約，用於處理任意傳入的（讀取）呼叫。

更多資訊請參閱 Safe 的[模組化 SCA 架構文章](https://safe.mirror.xyz/t76RZPgEKdRmWNIbEzi75onWPeZrBrwbLRejuj-iPpQ)。

#### **什麼是 SAFE SCA modules？**

SAFE 的 Modules 是個別的智能合約，具有在使用者的 SAFE 智能合約帳戶上執行交易的權限。Modules 可透過 **execTransactionFromModule** 函式在 SAFE 帳戶上執行任意交易。由於 SAFE 帳戶的實作方式由 SAFE 團隊決定，外掛開發者必須遵守其規則與準則。SAFE modules 僅_相容於 SAFE 帳戶_。

模組開發者與使用者之間存在重大的信任假設，因此，經過實戰驗證的模組更有可能持續被採用。

<ImageBlock
  src="https://media.alchemy.com/1703864926-safe-account-module.jpeg"
  alt="SAFE Account Module 示意圖"
  width={1920}
  height={1080}
  caption="SAFE Account Module 示意圖"
/>

#### **什麼是 SAFE SCA guards？**

Guards 是可為 SAFE 帳戶設定的智能合約，用於對傳入的交易執行額外的安全檢查。在交易執行前，會呼叫 Guard 並傳入所有交易參數，若 Guard 沒有 revert，交易才會繼續執行。

執行後也會再次呼叫 Guard，以進行狀態變化檢查或執行任意邏輯。

Guards 也可視為 hooks，因為它們適合用於交易前後的狀態檢查。

<ImageBlock
  src="https://media.alchemy.com/1703864905-safe-sca-guards-protect-accounts.jpeg"
  alt="Safe smart contract account 的 Guards 如何在執行前後檢查交易的示意圖"
  width={1920}
  height={1080}
  caption="SAFE SCA Guards 如何保護帳戶"
/>

#### **什麼是 SAFE SCA fallback handler？**

Fallback Handler 會執行所有傳送至 SAFE 帳戶、且可由其處理的呼叫。這對於遵循如合約簽章（EIP-1271）等業界標準相當有用。根據 SAFE 所述，「外掛與核心 SAFE 合約完全獨立，並維護各自的儲存空間」。

<ImageBlock
  src="https://media.alchemy.com/1703864999-safe-sca-fallback-handler.jpeg"
  alt="SAFE SCA Fallback Handler 運作方式示意圖"
  width={1920}
  height={1080}
  caption="SAFE SCA Fallback Handler 運作方式示意圖"
/>

## **結論**

由 ERC-6900 所描述、並由 Safe Modules 所設計的 Modular Account Abstraction，旨在透過外掛擴展智能合約帳戶的能力——這些外掛可由開發者建構，並由智能合約錢包使用者安全地安裝。

如需更多資訊，歡迎瀏覽我們的 ERC-4337 教育中心，或立即試用我們即插即用的 Embedded Accounts，開始動手建構。
