Time:2023-09-21 Click:116
原文作者:Stephen Monn
原文编译:深潮 TechFlow
在不断发展的区块链和去中心化应用的景观中,越来越多的关注被吸引到用户定义意图而不是纯交易的概念上。这使得用户不必担心导航 DeFi 日益复杂的过程,并解锁了一系列现在才被构思的附加用例。
随着个别应用已经在使用自己不同且不兼容的意图结构,创建一个可以被所有用户、应用、钱包软件、求解器、搜索器等共享和理解的通用意图标准是有意义的。
为了帮助组合性和降低进入门槛,我们提出 ERC-7521 ,这是一项支持智能合约钱包通用意图的标准。
由于这个领域非常新,意图的定义目前有点模糊。 从总体概念来看,这个术语通常用于指用户对期望的链上结果或最终状态的表达。 就本规范而言,意图被定义为由用户设定的一组操作和期望。 这些操作和期望可以与其他意图的操作和期望相结合,以努力满足所有参与方的共同和最大利益。
使所有相关方均感满意的一系列链上操作称为解决方案。 专门的解决器(类似于 ERC-4337 中的捆绑器)将竞相找到能够为用户提供最高满意度的解决方案。 例如,这可以通过找到最佳/最有效的链上路径、利用链下流动性来源、组合不同用户的意图以利用共同需求等方式来实现,甚至包括他们自己的意图。
为了帮助促进这一无缝和允许的升级和扩展过程,ERC-4337 中的 EntryPoint 合约进行了模仿,但也被分成两个不同的部分。第一个部分称为入口点,是提交意图解决方案的主要入口点,负责验证意图签名以及运行高级意图处理逻辑。
意图处理逻辑的具体内容在单独的合约中定义,称为意图标准,这由签名的意图本身指定。入口点调用这些合约来处理一个意图。正是意图标准定义了如何处理附加的意图数据和执行,以及与意图固有的拒绝服务攻击向量相关的基本链下规则,例如如何将消息传递给解决器以及针对意图固有的 DoS 攻击向量的保护机制。
这些意图标准应该自成一体地建立,独立于这个规范。我们预计随着意图格局变得更加成熟,出现优化的利基和新兴的用例,会产生具有额外功能的新意图标准。这些标准的采用和支持将由钱包开发者和意图求解器的社会共识以及最终用户的需求驱动。
为了确保我们提议的 ERC 在早期阶段具有重要的功能,我们已经开发了一个基于资产的意图标准,以支持当前大多数区块链用例。我们将在公开环境中完善这个标准(以及这个 ERC),以适应生态系统的需求。
在执行它们之前,由 Entry Point 合约用来与发送者验证消息的必要验证数据。
由意图指定的 Intent Standard 特定的附加数据。
意图标准数据可以是任何内容,但总是被分解为单独的部分,称为意图段。
Entry Point 合约不明确地理解数据是什么,但确实识别出了对段的划分。 Entry Point 合约调用 Intent Standard 合约一次处理一个段,并强制执行意图的段总是按指定的顺序处理。但是,Entry Point 允许在执行段之间处理其他意图。
这些意图段通常由用户希望处理的操作或者检查某些条件是否得到满足组成。另外,一个 Segment 可以在处理过程中将数据传递给下一个 Segment。这些数据称为意图背景数据,在验证段间发生的更改以及避免重新计算有用数据方面非常有用。同样,充分利用这些数据由 Intent Standard 规范决定。
在意图处理期间,意图能够对任何类型的条件提出不满意,无论是意外的低余额还是意图标准可能正在寻找的任何评估结果为假的条件。发生这种情况时,整个事务都会回滚,包括处理之前可能发生的不相关意图。
只有当一组意图以让所有各方都感到满意的顺序提交和处理时,这些意图才被认为已花费,所产生的状态才被允许在链上持久化。正是这些意图组合构成了解决方案,并传递给 Entry Point 合约进行处理。
然而,仅提交意图列表是不够的,因为不同意图的段可以以不同的顺序排列。因此,一个解决方案还指定了在处理期间应如何对不同意图片段进行排序(如何交错不同的意图段)。
求解过程的一部分通常包括求解器制定一个意图,以帮助满足一组其他意图,从而使它们能够在产生一些利润的同时最大限度地增加用户满意度。
规范的重点是为智能合约钱包定义一个基本框架,以便它们连接并为用户解锁强大的意图表达,即使在格局继续发展的同时。将意图定义为更小的意图段的集合为用户提供了很好的体验,减少了用户需要签名的次数。意图分段和共享的背景数据也有助于在不使用大量 gas 的情况下解锁强大的功能。意图可以信任它们的所有段都将按顺序处理,而无需手动检查。
通用用户意图开辟了一个全新的世界,现在才刚刚开始被开发。从简单的无 gas 代币兑换到更复杂的条件意图来自动化从冷钱包到热钱包的资金转移或通过单个签名消息进行每日币购买等过程,意图的可能性是巨大的!我们对资产基础意图标准的规范是使社区能够利用这一新框架的许多迭代中的第一个。