跳至內容
0%

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

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

使用帳戶抽象化(Account Abstraction,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 的主要智能合約錢包是 SafeArgent

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

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

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

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

合約帳戶(Contract Accounts,CAs)與外部擁有帳戶(Externally Owned Accounts,EOAs)在運作方式上有何不同?

智能合約帳戶與 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 錢包,會由使用者的錢包或 Paymaster 償還其代為支付的 ETH
顯示 UserOps 如何被打包、驗證及執行的示意圖。
顯示 UserOps 如何被打包、驗證及執行的示意圖。

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

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

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

  1. UserOps、Bundler 與 EntryPoint 合約
  2. 使用 Paymaster 贊助 Gas
  3. 建立智能合約錢包
  4. 聚合簽章

常見問題

什麼是智能合約錢包?

智能合約錢包使用智能合約來儲存和管理加密貨幣與 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 開發者產品與工具,並提供資源、社群與卓越的支援。