跳至内容
0%

ERC-4337 智能合约钱包是如何运作的?

发布于 2024年2月5日2 分钟阅读

使用账户抽象(ERC-4337)的智能合约钱包创建的是由智能合约管理的钱包,而不是像 EOA 钱包(外部拥有账户)那样由单一私钥管理的钱包。

智能合约钱包的可编程特性使得开发大量新用例成为可能。通过在不牺牲安全性或匿名性的前提下降低复杂度,智能合约钱包将有助于推动下一波区块链用户的入门。

想在你的应用中加入嵌入式智能合约钱包?使用我们企业级的 Embedded Accounts 和垂直整合的 AA 基础设施,让用户无需助记词、无需 gas、无摩擦地完成入门。

什么是智能合约钱包?

智能合约钱包使用智能合约来存储和管理数字资产(例如加密货币、NFT 等)。智能合约钱包是账户抽象的基础:这一过程通过将账户控制权从网络中“抽象”出来并用智能合约定义,将 Ethereum 的各种账户类型统一为单一类型。

一些使用 ERC-4337 的智能合约钱包示例:

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

不使用 ERC-4337 的两个主要智能合约钱包是 Safe 和 Argent。

什么是合约账户(cas)?

合约账户也称为智能合约,包含用于管理各方之间信息交换的代码。合约账户被用于每一个 DeFi 协议、NFT 合集或 ERC-20 代币中。

合约的所有业务逻辑和状态变量都存储在链上。由于智能合约的状态和代码存储在链上,部署它的外部拥有账户必须支付费用。

注意:在 web3 编程中存在一种“智能合约工厂”模式,即一个合约可以通过预定义的接口部署其他合约。即便在这种情况下,发起该操作的交易也必须来自 EOA,并由其支付费用。

合约账户与**外部拥有账户(eoas)**在工作方式上有何不同?

智能合约账户与 EOA 账户之间的主要区别在于智能合约账户可以包含逻辑。由于只有 EOA 账户能够发起交易,智能合约账户依赖 Bundler 的 EOA 账户将用户操作打包成一笔交易并发布到区块链上。

在当前的 Ethereum 协议下,EOA 是唯一能够发起交易的账户类型,无论是合约调用还是价值转移。即使是一个合约账户调用另一个合约账户的情况,交易的发起方也始终来自外部拥有账户。

下面是合约账户与 EOA 账户的对比:

EOA
CONTRACTS

由人类通过私钥控制

没有私钥。由自身代码管理

可以发起交易

永远不能作为交易发起的源头

不包含代码

包含代码和状态,存储在 storage 中

链下免费创建

链上创建,由部署者承担费用

那么,如果智能合约钱包不能自行发起交易,它们又是如何执行交易的呢?

ERC-4337 智能合约钱包的工作原理

由于智能合约钱包无法发起交易,它们必须由 EOA 钱包来调用。这一过程由多个账户抽象基础设施提供方(例如 Bundler)以及智能合约(例如 EntryPoint)共同支持。

智能合约钱包交易的典型流程如下:

  1. 用户想要执行一个 UserOperation
  2. UserOperation 被发送到一个“备用内存池”
  3. 拥有 EOA 钱包的 Bundler 将所有 UserOperation 打包并发送到 EntryPoint 合约
  4. EntryPoint 合约验证并执行所有 UserOperation
  5. 打包这些 UserOperation 的 EOA 钱包会由用户的钱包或 Paymaster 偿还其代为支付的 ETH
展示 UserOps 如何被打包、验证和执行的示意图
展示 UserOps 如何被打包、验证和执行的示意图

尽管从技术角度理解智能合约钱包的工作原理可能有一定难度,但对终端用户而言,相比 EOA 钱包,智能合约钱包提供了许多改进,例如可编程性以及社交恢复等功能。

了解智能合约钱包工作原理的更多资源

关于账户抽象各组成部分如何运作的更多信息,请阅读由 David Philipson(Alchemy 账户抽象基础设施工程团队成员)撰写的系列文章《You Could Have Invented Account Abstraction》。

  1. UserOps、Bundler 与 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 开发者产品和工具与资源、社区及专业支持结合在一起。