Delegatable 简介
Delegatable 是一种在以太坊上实现通用委托的工具和框架,也是一组智能合约。通常情况下,在以太坊上执行操作需要支付 gas ,而 Delegatable 的目标之一是使用户能够委托他人代表他们执行操作,而无需支付 gas 或进行交易。用户可以将操作委托给其他用户或智能合约,这些代理将负责实际执行操作。代理对交易的批处理操作,从而降低 gas,并提高效率。
举两个例子更直观的感受一下 Delegatable 的用处:
1)Alice 想要加入friend tech,但她不熟悉注册流程。 Delegatable 使她能够委托她的朋友 Bob 帮助她完成注册过程。Alice 创建了一个委托,授予 Bob 代表她执行注册操作的权限。Bob 代表 Alice 完成了注册过程。
2)假设一个 DApp 需要用户签署多个交易来完成某项任务,这些交易都需要gas。使用 Delegatable,DApp 可以允许用户委托一个特定的代理,该代理可以代表用户执行这些操作,而用户只需进行一次委托操作即可,不再需要为每个交易支付 gas,也不必自己执行繁琐的交易步骤。
精细意图的挑战
早在 2 个月前我们就已经对意图的概念进行过介绍,如今 Intent-centric 相关话题已成为市场讨论的热点。Delegatable 框架与意图结合会产生什么样的火花呢?
用户的意图可以分为显式意图和隐式意图,显式意图是关于如何执行声明性事务的明确指示,可以在一个执行周期内完成,而不需要过去/未来状态引用。隐式意图是模糊的指示,涉及及复杂的条件和逻辑,需要在未来的一段时间内监测特定的状态变化,才能决定是否执行相关的操作。
这些隐式意图涉及的一些操作可能需要引用外部数据或特定状态,以便做出决策。然而传统的智能合约通常只能在预定的条件下执行,而且对于复杂的条件和意图难以准确表达。这就导致了用户往往需要依赖第三方来执行他们的交易,从而失去了自主性和可控性。同时,由于智能合约一旦部署就难以修改,用户很难在后续调整他们的交易意图。Delegatable 提供了一种可编程的方式来管理这些复杂的执行条件,以及在执行之前对它们进行验证的机制。用户将决策的权力委托给 Delegatable 框架下的智能合约,以便合约根据用户的意图自动执行特定的操作,而无需用户实时干预。简单来说,就是你把仅靠目前的智能合约做不到的事情委托给 Delegatable 框架下的去中心化协议,由它去判断你设置的条件,等满足时提交出去。
Delegatable 框架中的核心概念是「执行器」(Enforcer)。执行器是一种智能合约模块,用于约束 EVM 的运行时执行。每个执行器负责测量特定的 EVM 状态位置,例如特定时间的时间戳或特定合约的状态变化。执行器的作用类似于一个规则引擎,它可以对交易的执行进行限制,确保交易满足用户设定的意图和要求。
执行器可以看作是一个个盒子,其中包含了关于如何以及何时执行交易的规则。这些盒子可以堆叠在一起。用户根据他们的需求选择使用哪些执行器,以达到他们的交易执行意图。例如,BlockNumberAfterEnforcers 执行器使用区块编号作为操作比较,限制交易的执行时间。用户可以签署一个引用 BlockNumberAfterEnforcers 模块的链外调用,并创建「我只想让这笔交易在区块 420 之后有效」的声明。BlockNumberAfterEnforcers 还可以与 DistrictUniswapV3TwapAboveEnforcer 结合使用,创建「我只想让这笔交易在区块 420 之后,且 A 代币的时间加权平均价格高于 Y 值时有效」的声明。
与其他 EVM 规则框架、Uniswap V4 钩子和安全模块不同,Delegatable 不需要在运行层安装新功能。对于在链上新部署的 Enforcer,任何使用了 Delegatable 框架的智能合约都可以立即使用。此外,使用 Delegatable 框架部署的智能合约,用户不必一成不变地在合约部署时就决定好所有的交易条件,可以表达隐式意图,当某个状态满足时才交易,也可以在交易满足条件前撤回。
流程:
用户创建委托:用户在 Delegatable 框架下的智能合约中创建一个委托,授予特定的权限和操作。用户选择使用执行器来定义一些细节,如允许的方法、时间限制、数量限制等。还可以选择是否允许委托的撤销,以及是否允许代理从委托中继续创建其他委托。
签署委托: 用户将委托消息签署,并生成一个签名,存储在链下。这个签名是用户授权委托的凭证,用于验证用户的身份和授权。
代理执行操作: 用户将生成的签名传递给代理,代理可以是其他用户、去中心化协议等。当委托的交易条件满足时,代理人使用委托签名来授权交易的执行。也就是说代理人可以在用户的授权下执行交易,而不需要知道用户的私钥。
Delegatable 框架拓展了意图管理的维度。它不仅使交易更加精确和个性化,还为用户提供了更大的自主权和控制权。Delegatable + 意图有望推动更广泛的应用场景以及降低区块链门槛。除了精细的意图外,设想一下另外一个应用场景 Telegram Bot 使用 Delegatable 框架,会不会因为不需要知道用户私钥更加完全可信呢?