跳至內容
0%

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

發布於 2024年2月5日閱讀時間 2 分鐘

使用帳戶抽象(ERC-4337)的智能合約錢包會建立一個以智能合約管理的錢包,而不是像 EOA 錢包(外部持有帳戶,Externally Owned Address)那樣由單一私鑰管理的錢包。

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

想在你的應用程式中加入嵌入式智能合約錢包嗎?使用我們企業級的 Embedded Accounts 及垂直整合的 AA 基礎設施,讓使用者在無需助憶詞、Gas 或摩擦的情況下完成導入。

什麼是智能合約錢包?

智能合約錢包使用智能合約來儲存與管理數位資產(例如加密貨幣、NFT 等)。智能合約錢包是帳戶抽象的基礎:這是一個將各種 Ethereum 帳戶類型統一為單一類型的過程,做法是將帳戶的控制權從網路中「抽象」出來,改由智能合約定義。

以下是一些使用 ERC-4337 的智能合約錢包範例:

  1. Soul Wallet
  2. Candide
  3. UniPass
  4. Castle
  5. Openfort

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

什麼是合約帳戶(Contract Accounts, CAs)?

合約帳戶也稱為智能合約,內含負責管理各方之間資訊交換的程式碼。每個 DeFi 協定、NFT 系列或 ERC-20 代幣都會使用合約帳戶。

合約的所有商業邏輯與狀態變數都儲存在鏈上。由於智能合約的狀態與程式碼都儲存在鏈上,部署它的外部持有帳戶必須支付相應的費用。

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

合約帳戶與**外部持有帳戶(EOA)**的運作方式有何不同?

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

在目前的 Ethereum 協定下,EOA 是唯一能夠發起交易的帳戶類型,無論是合約呼叫還是價值轉移皆是如此。即使是合約帳戶呼叫另一個合約帳戶的情況,交易的起點也永遠來自外部持有帳戶。

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

EOA
CONTRACTS

Controlled by a human, through a private key

No private key. Governed by its own code

Can initiate transactions

Can never be the origin of a transaction initiation

Does not contain code

Contains code and state, stored in storage

Created offchain for free

Created onchain for a cost, incurred by the deployer

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

ERC-4337 智能合約錢包的運作方式

由於智能合約錢包無法自行發起交易,它們必須由 EOA 錢包來呼叫。這個流程由多個帳戶抽象基礎設施提供商(例如 Bundler)與智能合約(例如 EntryPoint)共同支援。

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

  1. 使用者想要執行一筆UserOperation
  2. UserOperation 會被送往「替代記憶池(alternative mempool)」
  3. 擁有 EOA 錢包的 Bundler 會打包所有 UserOperation 並將其傳送至 EntryPoint 合約
  4. EntryPoint 合約會驗證並執行所有 UserOperation
  5. 打包這些 UserOperation 的 EOA 錢包所代墊的 ETH,會由使用者的錢包或 Paymaster 償還
說明 UserOps 如何被打包、驗證及執行的示意圖。
說明 UserOps 如何被打包、驗證及執行的示意圖。

雖然從技術角度理解智能合約錢包的運作方式可能有些困難,但對終端使用者而言,智能合約錢包相較於 EOA 錢包提供了許多改進,例如可程式化性以及社交恢復(social recovery)等功能。

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

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

  1. UserOps、Bundlers 與 EntryPoint 合約
  2. 使用 Paymaster 贊助 Gas
  3. 聚合簽章

常見問題

什麼是智能合約錢包?

智能合約錢包使用智能合約來儲存與管理加密貨幣、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 的智能合約錢包。

Background gradient

打造區塊鏈魔法

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