Pallet EIP4337技术方案解读

       EIP4337协议作为 Pallet web3聚合工具平台主要技术底层之一,不单为平台的发展提供了技术解决方案,更指引着Pallet的未来发展方向。本文将结合Pallet的开发经验深度解读EIP4337协议构成及产品解决方案。

以太坊改进提案4337(EIP 4337)定义的账户抽象是一组协议层的接口。它不仅集成了web2用户熟悉的交互形式,如多因素认证(multi-factor authentication),还给web3特有的用户痛点提出了解决方案,如代付GAS的交易。作为引入下十亿用户的协议接口,用户体验是4337最关注的重点。

虽然许多现有的文章很好地解释了4337协议,但是大多偏科普向,也有少数十分深入于技术细节。本文旨在融合两者:既提供关于4337协议概念的全面技术解读,也分类剖析现有应用和基础设施的案例。因此本文分为三部分:在第一部分,我们将探讨EIP 4337的起源,并深入了解其技术细节,包括用户操作(UserOperation)、打包器(Bundler)、入口点合约(Entry Point Contract)、代付合约(Paymaster)、钱包工厂(Wallet Factory)和签名聚合器(Signature Aggregator)。在第二部分将分析现有的,包括智能合约钱包和第三方基础设施提供商开发方案。在第三部分,我们将讨论4337的发展方向,包括Pallet在该领域的创新展望和预测。

本文篇幅较长,第一部分主要为4337协议的技术解读,只对4337的应用场景感兴趣的读者可以直接跳到第二部分。

第一部分:EIP 4337的全面技术分析

首先来简要回顾一下基础知识,以太坊有两种类型的账户:外部拥有的账户(externally owned accounts,即EOA)和合约账户。

EOA是用户控制的账户,可以发送交易。EOA通过其私钥控制账户的所有权,可以通过签名执行交易,从而改变EOA的内部状态或外部合约账户的状态。由于私钥(或种子短语)是EOA所有权的唯一代表,EOA不适合定义复杂的所有权或交易逻辑,如使用社交媒体账户登录(social login)和多方签名(multisig)的交易。EOA的局限性导致用户体验不佳:一些冗杂的步骤,如私钥和种子短语管理,更是直接阻碍了Web2用户进入Web3。大多数最受欢迎的钱包,如MetaMask,都是基于EOA的账户模型。

合约账户可以托管任意的Solidity代码,因此可以发挥EVM全部的图灵完备特性。遗憾的是,合约账户不能发送交易,因此它们的功能必须由EOA触发。智能合约钱包是一种合约账户,通过钱包提供商的EOA网络间接地被其用户触发,无论是通过中继器(relayer)还是打包器(Bundler)。

图片

图:EOA与合约账户(来源:Bitcoin Insider)

智能合约钱包早在EIP 4337之前就已存在。EIP 4337的提出是为了标准化设计智能合约钱包及其相关基础设施的通用功能。EIP 4337遵循以下几个设计原则:

总体而言,所有的技术实现都在顶层(智能合约层),从而避免触及共识层和执行层等底层基础设施。账号模型这种基本设计如果在底层改动会成为像以太坊PoS主网合并一样的重要升级。因为开发人员的精力有限,只能采用合约层实现的轻量级技术路线。

协议接口的设计应该是模块化的,这样用户可以自定义选项,包括交易打包处理(Bundler)、gas代付(Paymaster)和签名聚合(Aggregator)。

理想情况下,上述每项服务都将成为一个具有竞争性的开放市场。用户可以根据提供商的价格和声誉选择最佳的服务。

EIP 4337为标准化智能合约钱包定义了六个合约接口:

首先,智能合约钱包本身,会通过打包器触发入口合约来间接触发,在链下验证交易,然后在链上执行。

其次,打包器(Bundler),用于批量验证和执行用户操作(UserOperation,即EIP 4337定义的智能合约钱包的交易类型)。

第三,入口合约(Entry Point Contract)是在以太坊只存在一份的全局合约,用于标准化交易执行并防止打包器受到恶意交易的DoS攻击。

第四,代付合约(Paymaster),用于代表钱包用户处理gas支付。

第五,合约工厂(Wallet Factory),用于标准化钱包创建的参数和流程。

第六,签名聚合器(Signature Aggregator),用于将多个交易的签名聚合为字节,以便更快地验证和执行交易。

下面我将详细介绍用户操作(UserOperation)和上述的六个合约接口,是对官方EIP 4337文档和David Philipson@Alchemy账户抽象系列的解读。

1. 账户操作(UserOperation)

UserOperation本质上和普通交易相同,只是基于EIP 4337的合约接口定义了额外的参数。这里回顾一下,一个EOA触发的普通以太坊交易有交易目标地址、转账以太坊数量、gas数量和gas价格等参数。

此外,考虑到EIP 4337合约接口的模块化设计,UserOperation包括以下主要参数用于定义接口的触发:

calldata:定义要在智能合约钱包上调用的函数签名(function signature)和输入参数,calldata在普通交易中也有

signature:验证交易确实来自某智能合约钱包地址,signature在普通交易中也有

nonce:防止重放攻击,在普通交易中也有

sender:指定执行UserOperation的智能合约钱包地址

paymasterAndData:用于交易手续费抽象(gas abstraction),包含代付合约(Paymaster)地址和gas支付的具体参数

initCode:用于钱包创建,包含钱包工厂(Wallet Factory)合约地址和创建智能合约钱包的参数,如钱包的合约代码

除了需要额外的参数以外,UserOperation的工作流程与普通交易类似:它们都被广播到mempool中进行验证、执行并最终完成出块。UserOperation的验证和执行由打包器(Bundlers)触发,我将在下文中解释。

图片

图:官方EIP 4337文档对UserOperation参数的定义

2. 打包器(Bundler)

Bundler是一个外部账户(EOA),代表用户在智能合约钱包上验证和执行UserOperation交易,因为在以太坊上,所有交易都必须由EOA触发。Bundler使用户不用创建和记忆EOA的私钥就可以触发智能合约钱包交易,这也是智能合约钱包存在的初衷。

虽然Bundler具有很强的公共物品(public goods)属性,他们也可以获得经济上的利益,因为:

Bundler可以在执行UserOperation后将最大优先gas费&

  • 6
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值