任何构建过 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.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 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
登链社区是一个 Web3 开发者社区,通过构建高质量技术内容平台和线下空间,助力开发者成为更好的 Web3 Builder。
登链社区网站 : learnblockchain.cn
开发者技能认证 : decert.me
B 站 : space.bilibili.com/581611011
YouTube : www.youtube.com/@upchain
【免责声明】市场有风险,投资需谨慎。本文不构成投资建议,用户应考虑本文中的任何意见、观点或结论是否符合其特定状况。据此投资,责任自负。