EIP-7702 是一个旨在改善区块链用户体验的以太坊改进提案,允许用户将外部拥有账户(EOA)的执行委托给智能合约,同时保持原有的区块链地址和身份。 并提出了应用程序如何利用其特性的方法。
任何构建过dApp的人都知道,区块链用户体验存在显著的摩擦。用户必须为简单操作签署多个交易,必须仅使用原生代币支付手续费,并且管理完全访问其账户的私钥。这些限制源于外部拥有账户(EOAs)的基本结构——以太坊上的标准用户账户。
EIP-7702旨在通过允许EOAs将其执行委托给智能合约来解决这些用户体验问题,有效地赋予它们可编程能力,而无需用户迁移到全新的钱包。
虽然智能账户提供了更优越的功能,但让用户从现有的EOAs迁移到智能账户面临几个重要原因的挑战:
智能账户要求用户:
当用户迁移到智能账户时:
EOAs在钱包之间具有通用的可移植性:
智能账户具有有限的可移植性:
这些迁移障碍解释了尽管智能账户的好处,大多数用户仍然继续使用EOAs。EIP-7702试图通过在现有EOAs上引入智能账户功能,来缩小这一差距,而无需用户更改地址或迁移资金。
在深入EIP-7702之前,让我们回顾一下当前的以太坊账户类型:
问题在于大多数用户的EOAs来自MetaMask等钱包,迁移到智能账户需要额外的步骤和教育。EIP-7702通过增强EOAs以引入一些智能账户功能,提供了一条中间道路。
EIP-7702引入了一种新的交易类型,其中包含一个“授权”字段。该字段允许EOA所有者将其账户的执行委托给智能合约。简单来说,你的EOA可以说:“当我接收到交易时,请运行这个智能合约代码。”
msg.sender
保持为EOA的地址这不同于代理合约,因为委托发生在协议层面——没有为每个用户部署单独的合约。相反,EOA似乎具有直接附加的代码。
EIP-7702为EOAs启用三种主要增强功能:
目前,像“批准代币和交换”这样的常见操作需要两个独立的交易。利用EIP-7702,这些可以合并为一个原子交易。例如,一个DEX可以允许用户在一个交易中批准并交换代币,从而降低手续费并改善用户体验。
更高级的批处理可能包括这样的操作:一个步骤的输出作为下一个步骤的输入。
EIP-7702启用了第三方费用支付场景。例如:
用户可以创建具有限制权限的子密钥,例如:
尽管有这些好处,EIP-7702有一些关键限制,使其不同于完全的智能账户:
chain_id
设置为0
的授权,这将在所有链上有效。然而,只有当用户的EOA在所有链上具有相同的nonce时,这种方法才有效,而在实践中这很少发生。这个限制可能导致在多链工作时出现同步问题。这点很重要:EIP-7702由钱包控制,而不是应用程序。
虽然从技术上讲,任何实体都可以创建EIP-7702授权,但钱包提供商已明确表示,他们将拒绝应用程序中包含授权字段的交易。相反,钱包将自行管理EIP-7702的授权,将用户升级到钱包所选择的智能账户实现。
这意味着:
嵌入式钱包,如Privy、Dynamic、Web3Auth、Magic等,代表了一个独特的类别,可能具有不同的EIP-7702实现策略。与独立钱包不同,嵌入式钱包提供商可能允许开发者委托到自定义智能合约账户实现。
根据与嵌入式钱包开发者的对话,他们似乎计划建立合理的默认配置,并在需要时允许开发者覆盖这些默认设置。这将为应用程序开发者在如何利用EIP-7702功能方面提供更多灵活性。
这些实施策略的具体细节尚待揭晓,因为嵌入式钱包提供商尚未公开宣布他们对EIP-7702的支持计划。随着这些提供商发布他们的官方实现,将会有更多信息可用。
由于应用程序无法直接控制EIP-7702授权,那么它们如何从这些功能中受益呢?几种方法正在逐渐出现:
此方法将EIP-7702与另外两个标准结合:
wallet_grantPermissions
,应用程序可以用它向钱包请求权限。流程如下:
应用程序可以选择:
此方法利用ERC-5792中定义的wallet_sendCalls
JSON-RPC方法:
wallet_sendCalls
将多个函数调用发送到钱包该方法对于单链上简单的批处理场景特别有用,例如将代币批准和兑换操作结合起来。钱包处理所有打包交易的复杂性,应用程序不需要知道钱包如何实现此功能。
ERC-5792仅用于批量执行。对于复杂于此的任何操作,你需要使用ERC-7710/ERC-7715。
Biconomy的解决方案利用他们所称的“伴随账户”——特定应用的智能账户,充当中介。流程如下:
这种方法允许每个应用程序实现所需的确切智能账户功能。例如:
鉴于并非所有钱包最初都会支持EIP-7710/7715,Biconomy创建了一种称为“融合执行”的回退机制,可以与任何钱包一起使用:
这使得即使在不支持较新标准的钱包中,也能实现复杂操作。
EIP-7702的一个经常被忽视的特性是,它使开发者能够以比以前便宜高达80%的成本为用户部署新的智能账户。它通过利用EIP-7702代理只需12500 gas的事实来实现。通过使用一些巧妙的密码学技巧——例如Nick的方法和签名打包——开发者可以仅通过EIP-7702部署完全功能的智能账户(支持资源锁定、时间锁和多重签名)。
这种方法的部署成本节省使伴随账户在以太坊主网上的使用成为可行(伴随账户的部署成本在$0.2 - $0.5范围内),并在rollups上基本免费。此外,对以智能账户为优先的(无EOA)钱包来说,使得新用户的上手成本同样可负担。
在我们的详细指南中了解更多。
如果你是应用程序开发者,这里有你需要知道的:
对于开发者来说,导航EIP-7702生态系统可能是一个挑战。实施钱包兼容性检查以支持ERC-7710/ERC-7715/ERC-5792,部署伴随智能账户以及处理各种编码要求可能迅速导致复杂的条件逻辑和难以维护的代码。
为了解决这些挑战,Biconomy提供了AbstractJS——一个基于viem
构建的全面TypeScript SDK,简化了EIP-7702的集成。这个工具包将钱包功能检测、伴随账户部署和交易编码的复杂性抽象到一个干净的开发者接口上。
Biconomy正在积极增强AbstractJS以支持所有EIP-7702功能,计划在Pectra合并时(预计在2025年4月左右)实现生产就绪的实现。
EIP-7702代表了区块链用户体验演进中的重要一步,但它并不是最终形式。该标准本身只是更广泛的生态系统改进的一部分,包括EIP-7710、EIP-7715、ERC-4337等。
最有趣的进展可能来自这些标准的结合,以创造新的用户体验。例如,将EIP-7702的委托与基于意图的系统结合,可能允许用户表述他们想要实现的目标(例如,“在所有DEX上以最佳价格交换X为Y”),而不是指定确切的交易参数。
虽然在钱包实施不同的方法时会有分化和成长的痛苦,但整体方向是更用户友好的区块链交互,隐藏复杂性而不牺牲安全或控制。
EOA(外部拥有账户):以太坊上的标准用户账户,由私钥控制。
EIP-7702:一个以太坊改进提案,允许EOAs将其执行委托给智能合约。
ERC-7710:一个标准接口,用于智能合约将权限委托给另一个合约。
ERC-7715:一个标准,引入了一种新的JSON-RPC方法,应用程序可以用它向钱包请求权限。
ERC-5792:一个标准,定义了一个“钱包调用API”,允许应用程序发送多个调用以由钱包打包。
ERC-4337:一个“账户抽象”标准,使得智能合约钱包无需对以太坊协议进行更改。
智能账户标准:包括ERC-7579和ERC-6900在内的各种智能合约账户标准,为模块化、可编程用户账户提供框架。
伴随账户:一个特定于应用的智能账户,作为用户与应用间的中介。
融合执行:Biconomy的方法,启用智能账户功能而无需钱包支持较新标准。
MEE(模块化执行环境):一个高级执行系统,可以处理复杂的交易流,包括多链操作。
- 原文链接: blog.biconomy.io/a-compr...
- 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!