打赏

一文彻底解释 EIP-4337

简单来说,EIP-4337 旨在实现“账户抽象”,让智能合约钱包成为用户的默认和主流钱包,从而极大地改善用户体验和安全性。

下面我将从几个方面详细解释 EIP-4337:

1. 核心问题:以太坊的两种账户

在理解 EIP-4337 之前,需要先了解以太坊的现状:

  1. 外部拥有账户:也叫普通钱包,比如 MetaMask。它由私钥控制。

    • 优点:简单,可以发起交易。
    • 缺点
      • 安全性有限:私钥丢失 = 资金永久丢失。
      • 功能单一:只能执行简单的转账和合约调用。
      • 用户体验差:用户必须理解 Gas费、原生代币(ETH)、助记词等复杂概念。
  2. 合约账户:由部署在链上的代码控制的账户。

    • 优点:功能无限可能,可以实现复杂的逻辑,如多重签名、社交恢复、交易限速等。
    • 缺点不能主动发起交易。传统上,合约钱包需要一个EOA来“触发”它,这使它无法成为独立的初始交易发起者。

“账户抽象”的目标就是让合约账户也能像EOA一样主动发起交易,从而让功能强大的智能合约钱包成为用户的首选。

2. EIP-4337 的解决方案:避开共识层修改

之前的账户抽象提案(如 EIP-2938)需要修改以太坊的底层共识协议,这是一个漫长而复杂的过程。EIP-4337 的巧妙之处在于,它完全在更高层的应用层实现了账户抽象,不需要改变以太坊核心协议。

它通过引入一组新的内存池(Mempool)和角色,模拟了一个新的交易流程。

3. EIP-4337 的核心组件与工作流程

它引入了一些新概念:

  1. UserOperation

    • 这不是一个传统的“交易”。你可以把它理解为表达用户意图的“伪交易”对象
    • 它包含了执行动作、签名、Gas参数等信息,但它是发给新的“UserOperation内存池”的。
  2. Bundler(捆绑器)

    • 类似于现在的矿工/验证者。Bundler 监听 UserOperation 内存池,将多个 UserOperation 打包成一个单一的、有效的以太坊交易。
    • 这个交易会调用一个特殊的入口点合约。
    • Bundler 支付这个打包交易的 Gas 费,并从用户那里获得补偿(类似小费)。
  3. Entry Point(入口点合约)

    • 一个全局的、标准化的智能合约。它是整个系统的协调中心。
    • Bundler 的交易就是调用这个合约。
    • Entry Point 负责验证每个 UserOperation 的签名和支付能力,并执行用户的指令。它确保了系统的安全和无信任运行。
  4. Paymaster(支付主管)

    • 一个可选的智能合约,它允许第三方为用户支付Gas费
    • 这开启了“无Gas”交易体验,让dApp项目方可以为用户垫付费用,或者允许用户使用任何ERC-20代币(如USDC)来支付费用,由Paymaster自动兑换成ETH。

工作流程(以“无Gas”交易为例):

  1. 用户发起意图:用户在dApp上点击一个按钮,他的智能合约钱包创建一个 UserOperation,说“我想执行X操作”,并签名。这个操作被发送到专门的 UserOperation 内存池。
  2. Bundler 打包:一个 Bundler 节点从内存池中挑选一批 UserOperation(包括用户的),并将它们打包成一个交易,发送给 Entry Point 合约。
  3. Entry Point 协调
    • Entry Point 合约首先调用用户的智能合约钱包,验证用户的签名是否有效。
    • 然后,它调用 Paymaster 合约,确认该项目方愿意为用户支付Gas费。
  4. 交易执行与支付
    • 验证通过后,Entry Point 执行用户请求的操作(例如,在Uniswap上交换代币)。
    • 交易完成后,Entry PointPaymaster 那里扣除所需的Gas费,并支付给 Bundler。
    • Bundler 赚取了Gas费,用户享受了“无Gas”体验,dApp项目方获得了用户增长。

4. EIP-4337 带来的主要优势

  • 更好的用户体验
    • 无Gas交易:dApp可以为用户付费,用户甚至感觉不到Gas的存在。
    • 任意代币支付Gas:可以用USDT、USDC等支付网络费用。
    • 批量交易:将多个操作合并为一笔交易,只需确认一次。
  • 更强的安全性
    • 社交恢复:如果你丢失了私钥,可以通过你信任的朋友或设备找回你的钱包。
    • 多重签名:为高价值交易设置多个审批人。
    • 交易限制:设置每日交易限额,防止黑客一次性转走所有资产。
    • 恶意软件保护:可以设置交易黑名单,自动拒绝向已知恶意地址转账。
  • 灵活性与创新
    • 开发者可以自由设计各种功能的智能合约钱包,例如订阅制支付、到期账户等。

5. 现状与生态

EIP-4337 已于 2023 年 3 月在以太坊主网上线。目前已经形成了一个活跃的生态:

  • 智能合约钱包Safe(原Gnosis Safe)StackupBiconomyArgent 等都已支持 4337 标准。
  • Bundler 服务:Stackup、Pimlico、Alchemy 等提供 Bundler 基础设施。
  • Paymaster 服务:许多项目提供灵活的 Paymaster 服务,帮助 dApp 实现无Gas交易。
  • SDK 与工具:有成熟的开发者工具来帮助集成。

总结

EIP-4337 是通往下一代区块链大规模应用的关键基石之一。 它通过一种巧妙的、无需分叉的方式,将区块链钱包从“技术专家的工具”转变为“普通用户可用的产品”,极大地降低了使用门槛,并为安全和创新打开了新的大门。它正在推动以太坊从“可编程货币”向“可编程账户”演进。

UserOperation Mempool(用户操作内存池!这是理解 EIP-4337 工作原理最核心也最精妙的一点。

在传统的区块链中,内存池 是指一个用于暂存尚未被矿工(或验证者)打包进区块的“交易”的公共区域。所有用户发送的签名交易都会先在这里广播和等待。

而 EIP-4337 引入的 UserOperation Mempool(用户操作内存池) 是一个并行的、专门的全新内存池,它不存储传统的“交易”,而是存储一种新的对象——UserOperation

为了让你一目了然,下面这个表格清晰地展示了两者的区别:

特性 传统交易内存池 EIP-4337 UserOperation 内存池
存储的对象 传统的区块链交易 UserOperation(用户操作)
对象本质 最终可执行的交易指令 表达用户意图的声明
核心参与者 用户、矿工/验证者 用户、Bundler(捆绑器)
验证方式 通过ECDSA签名和账户余额进行链下验证 通过智能合约的 validateUserOp 函数进行模拟验证
Gas费支付 必须由发送交易的EOA支付原生代币 可由Paymaster代付,或用户使用任意ERC-20代币支付

🔄 深入理解 UserOperation 内存池的工作流程

让我们结合 EIP-4337 的架构,看看这个新的内存池是如何运作的:

  1. 用户提交意图

    • 用户不再创建一笔传统的交易。相反,他创建一个 UserOperation 对象,其中包含了他想执行的操作(例如“调用合约A的方法X”)、他的签名、以及其他参数(如Paymaster地址)。
    • 用户将这个 UserOperation 发送到专有的 UserOperation 内存池中。
  2. Bundler 监听与模拟

    • Bundler(可以理解为 EIP-4337 系统里的“特殊矿工”)会监听这个 UserOperation 内存池。
    • 为了确保自己不会亏钱,Bundler 会在本地模拟执行这个 UserOperation。核心是调用 EntryPoint 合约的 simulateValidation 方法,该方法会运行智能账户的 validateUserOp 函数,以确保签名有效且账户有足够的资金(或Paymaster愿意赞助)来支付手续费。
    • 只有通过模拟验证的 UserOperation 才会被Bundler认为有效,并保留在内存池中等待打包。
  3. 打包与上链

    • Bundler 从内存池中挑选一批有效的 UserOperation,将它们打包成一个单一的、传统的以太坊交易
    • 这个交易的目标地址是 Entry Point 合约
    • Bundler 支付这笔打包交易的Gas费,并将其发送到传统的交易内存池中,由标准的矿工/验证者最终将其纳入区块。
  4. Entry Point 最终执行

    • 当打包交易上链后,Entry Point 合约会逐一处理每个 UserOperation,再次进行验证并执行用户请求的实际操作。

💡 为什么这个设计如此巧妙?

  • 避免共识层修改:通过创建一个并行的、应用层的“意图内存池”,整个系统巧妙地绕开了对以太坊核心协议的修改。它利用现有的交易类型,承载了全新的账户抽象功能。
  • 保护 Bundler:通过要求 UserOperation 必须先通过模拟验证,确保了 Bundler 在支付真金白银的Gas费之前,就能确定这笔操作是有效且能支付手续费的,从而避免了经济损失。
  • 解锁新功能:正是这个独立的内存池和 UserOperation 对象,使得会话密钥无Gas交易批量操作等复杂逻辑成为可能,因为它将用户的“意图”与最终“交易的执行”分离开来。

总结一下:

EIP-4337 中的 内存池是一个专为 UserOperation 设计的、与传统交易内存池并行的等待区域。它由 Bundler 负责维护,并通过模拟验证来确保其中操作的有效性,是整个账户抽象流程能够安全、高效运行的基石。

posted @ 2025-10-24 13:00  gyc567  阅读(10)  评论(0)    收藏  举报