跳到内容

什么是委托工具包,您可以用它构建什么?

了解委托工具包如何帮助您构建具有灵活且可共享权限的去中心化应用

3 分钟
什么是委托工具包,您可以用它构建什么?

以太坊上的账户控制历来较为僵化。外部拥有账户(EOA)简单易用、应用广泛,但功能有限。智能合约账户(SCA)灵活性更强,但直到近期,它们仍无法独立运行——每笔交易的发起和手续费支付都需要依赖 EOA。

这一局面随着 ERC-4337 的出现而改变。SCA 现在可以原生支持 Gas 赞助、交易批处理(将多笔交易合并为一笔)、会话密钥和链抽象等功能,从而带来更好的安全性、灵活性和用户控制权。

尽管如此,EOA 并未退出历史舞台,这是有充分理由的:并非每位用户都需要一个支持任意验证逻辑的账户。现在就切换到 SCA,意义何在?

那么,我们如何确保用户在准备好切换时——或者只是临时使用一项或多项 ERC-4337 账户功能时——不必从头创建新账户类型?如何让 EOA 在特定交易中借助 SCA 的功能,同时保留熟悉的使用方式?

这正是 EIP-7702(Set-EOA-account-code)发挥作用的地方。

作为即将到来的 Pectra 升级的一部分,EIP-7702 将允许 EOA 通过将控制权委托给直接从其地址执行的智能合约代码,临时表现得像 SCA 一样。这意味着用户无需迁移到新账户即可享受这些高级功能,在推动以太坊向前发展的同时,也确保了向后兼容性。

尽管有了这些改进,要真正实现类似 Web2 的体验,仍有一个关键的用户体验环节有待解锁——那就是细粒度、灵活的权限管理:用户能够以受控的方式,在设有严格限制且可随时撤销权限的前提下,轻松授权他人代表自己执行特定操作。

这正是 Delegation Toolkit(委托工具包)所要解决的挑战。但在深入了解它是什么、如何运作之前,让我们先仔细看看推动以太坊账户用户体验进入下一阶段的两个 ERC。

ERC-7710:智能合约委托

ERC-7710 是一项提案,旨在标准化智能合约账户向其他以太坊账户委托特定权限的方式。它引入了一个通用接口,使委托方能够以清晰、可执行的规则向被委托方授予权限。

借助 ERC-7710,开发者可以构建这样的系统:一个账户在特定条件下安全地允许另一个账户代表其行事,例如设置消费限额、时间限制或特定任务的权限,整个过程通过安全、可预期的委托流程来处理。

那么,在这个语境下,"委托"究竟意味着什么?

从宏观角度来看,委托的核心在于将账户所有权与账户执行权分离。委托方仍然拥有资产或逻辑控制权,但可以在不放弃完全控制权的情况下,临时或永久地将特定权力移交给他人。

从网络角度来看,ERC-7710 为账户间权限传递带来了清晰性和可组合性。不再需要每个应用各自实现一套委托逻辑,而是拥有了一个合约和工具可以共同构建的统一基础。

ERC-7715:从钱包授予权限

ERC-7715 是一项提案,旨在简化 DApp 向用户钱包请求权限的方式。它引入了一种权限模型,允许 DApp 请求经过明确范围界定、预先批准的账户访问权限,无需在每次交互时反复确认。

目前,典型的交互流程十分繁琐:DApp 每次发起交易或与合约交互时,钱包都会提示用户进行确认。用户无法指定限额、有效期或缩小 DApp 的操作范围,也没有标准化的方式来查看或撤销这些授权。

ERC-7715 改变了这一现状。它引入了一个新方法 wallet_grantPermissions,允许 DApp 提前请求特定能力。例如,它可以请求在接下来一小时内消费最多 10 USDC 的权限,或在接下来几个会话中与某个特定智能合约交互的权限。用户可以预先审查这些请求,并在完全了解情况的前提下选择批准或拒绝。

对于 DApp 而言,这使得用户引导更加顺畅,并支持基于会话或自动化的体验,不再频繁打断用户。对于钱包而言,它引入了一套清晰、可审计的权限管理结构。对于用户而言,它提供了更好的可见性、更强的控制权,以及更少的烦人弹窗——同时不牺牲安全性。

那么,开发者可以用这些标准构建什么?

以下是结合 ERC-7710 和 ERC-7715 可以解锁的部分功能:

  • 通过 ERC-7710 将固定额度委托给使用更频繁的钱包,从安全钱包设置每日消费限额,同时将大部分资金安全地保持离线状态。

  • 通过使用预设范围的委托自动授予有限权限,让用户无需提前设置钱包或确认交易即可执行铸造或领取奖励等操作,从而简化用户引导流程。

  • 通过 ERC-7710 分配有限的执行权限,让 AI 代理代表您进行交易,并借助 ERC-7715 通过钱包轻松批准这些权限。

  • 通过利用 ERC-7710 委托向 SCA 分配赞助权,让 DApp 为用户承担 Gas 费用,使特定交易无需用户持有 ETH 即可完成。

  • 通过将权限委托给一个代表您调用 approve(0) 的辅助合约,安全地撤销代币授权,使用 ERC-7710 严格限定其操作范围,并确保与任何标准 ERC-20 代币的兼容性。

以及更多功能。

Delegation Toolkit 的定义

描述 Delegation Toolkit 最简单的方式,是将其视为一套包含两个主要软件包的工具集:

  1. Delegation Core SDK —— 一个使开发者能够创建符合 ERC-4337 标准的智能合约账户(委托方账户)的软件包,可充分利用 ERC-4337 账户抽象所引入的所有功能。

  2. Delegation Framework(委托框架) —— 一个允许智能合约账户通过 ERC-7710 标准向其他以太坊账户委托权限的系统,同时允许网站、DApp 或最终任何实体通过 ERC-7715 向您的账户请求权限(即将推出)。

简而言之,Delegation Toolkit 使构建支持 ERC-4337 智能合约账户(SCA)的 DApp 成为可能,可将权限委托给其他 SCA 或 EOA,并使 DApp 能够请求这些权限——无论是来自智能账户,还是在 Pectra 升级后来自 EOA。

如果您熟悉智能合约账户的工作原理,您已经知道 Delegation Core VIEM 软件包能带来什么。如果还不熟悉,欢迎查阅官方文档深入了解。在本文的其余部分,我们将重点介绍 Delegation Framework 本身,并着重说明使其如此强大的几项关键原则。

链下委托

委托无需存储在链上即可生效。一旦账户 A 为账户 B 签署了委托,它可以存储在任何地方——IPFS、浏览器缓存、云存储,甚至本地下载——因为它经过密码学保护,只能由预定的被委托方使用。这使整个系统更具可扩展性和灵活性。

例如,B 可以在需要时获取已签名的委托,并在交易中使用,无需任何链上存储或预付 Gas 费用。

可撤销权限

委托并非永久有效。原始委托方(例如账户 A)可以撤销其已发出的任何有效委托,即使该委托已通过传递性委托向下传递(参见下文"传递性或链式委托"部分)。一旦撤销,委托管理器将拒绝任何兑换该委托的尝试,包括依赖于它的所有子委托。这对安全性至关重要。

如果账户 A 怀疑账户遭到入侵,或希望更新权限,可以立即切断访问权限,使整条信任链失效。这就像随时可以拔掉插头,无需追踪所有相关方。

范围限定委托

使用 Delegation Toolkit 时,委托通常被限定给特定的被委托方。这意味着如果账户 A 向账户 B 签署了委托,只有 B 才能兑换它。即使其他人获得了已签名的委托,对他们来说也毫无用处,因为它在密码学上绑定于 B。

不过,系统也支持开放委托。这类委托不预先指定被委托方,任何账户都可以兑换。开放委托在尚不知道被委托方是谁时非常有用,但应谨慎使用以避免滥用。您可以通过将 delegate 字段设置为特殊常量 ANY_BENEFICIARY(0x0000000000000000000000000000000000000a11)来创建开放委托。

如果账户 B 之后希望将某项范围限定的权限传递给账户 C,必须明确创建一个从 B 到 C 的新委托。这确保了权限边界始终清晰且有意为之,即使在使用开放委托或传递性委托流程时也是如此。

附加条件(Caveats)

Caveats 是定义委托使用方式的规则,可以将其理解为委托方附加在委托上的自定义条件。例如,如果账户 A 委托给账户 B,可能会附加一个条件,规定 B 在接下来 24 小时内只能转移最多 1 ETH,或只能与特定合约交互。

Caveats 在运行时通过专用的 caveat enforcer 合约强制执行,在任何操作执行之前检查规则是否得到遵守。因此,即使 B 拥有行动权,它仍在 A 设定的明确边界内运作。完整的支持条件列表请参见此处,或了解如何创建您自己的自定义条件。

传递性或链式委托

Delegation Framework 最强大的功能之一是委托不必止步于单次移交。通过传递性委托,接收权限的账户(例如账户 B)可以将全部或部分权限进一步委托给另一个账户,从而形成一条源自同一账户的委托链。

链中的每个环节都经过密码学签名,并附有各自的条件,这意味着权限可以在每个层级被缩小或重新定义。换言之,这些子委托可以是原始委托的子集,具有更严格的约束或更有限的能力。

重要的是,原始委托方仍保有完全控制权,可以随时撤销初始委托,这将自动使链中所有下游委托失效,从而形成一条灵活而安全的信任链——非常适合 DAO 和共享钱包等复杂权限设置场景。

下一步是什么?

Delegation Toolkit 为您提供了所需的工具,让您能够为 DApp 构建更安全、更智能、更灵活的权限系统。无论您希望实现委托消费、Gas 赞助、自动化工作流,还是无缝的用户引导,现在都无需重新造轮子即可实现。

在接下来的文章中,我们将进入实操环节,首先从"邀请好友"功能的构建教程开始——这是委托机制在实际场景中的典型示例。敬请关注系列后续内容,我们将介绍更多您今天就可以实现的功能。

如果您对深入探索这些想法感到兴奋,请留意即将举办的四月 Gator Hackathon,届时您将有机会与其他开发者一起使用 Delegation Toolkit 进行构建。

AI 翻译。可能包含错误。请务必核实信息。

评价此翻译

本文作者:

  • Kingsley Okonkwo

    Kingsley 是一位经认证的以太坊区块链开发者,现任 Consensys 技术写作工程师,专注于开发者工具领域。加入 Consensys 之前,Kingsley 曾在 Gigster 和 Braintrust 等多个平台担任自由职业后端开发者。他拥有 5 年软件开发经验,熟练掌握 JavaScript(Node.js 和 React)、GoLang、SQL 及 Docker 等技术工具。Kingsley 擅长撰写分步教程和操作指南,善用最新 Web3 技术帮助开发者构建更优质的 dapp。他目前定居迪拜,业余时间喜欢打篮球和踢足球。

    阅读所有文章