作者:Bastian Wetzel;编译:深潮 TechFlow
事实证明,在 Web3 中使用当前的各种系统是一项复杂且耗时的工作。它涉及在不同的基础设施之间指定执行路径,这需要全面的理解。因此,用户在实现最终目标时面临持续的挫折,并容易受到更复杂的参与者的利用。
这种情况的出现是因为用户与以太坊进行交互的主流标准方法,需要以特定格式创建和签署交易,该格式提供了以太坊虚拟机(EVM)执行状态转换所需的所有必要信息。
意图(Intents) 的引入旨在减轻用户的负担。本质上,意图是一组声明性约束,允许用户将交易创建委托给专门的第三方参与者网络,同时保留对过程的完全控制。简单来说,如果一个交易指定了"如何”执行一个操作,那么意图定义了该操作的"期望结果是什么”。
这种声明性方法在用户体验和效率方面带来了令人兴奋的进步。通过意图,用户可以轻松地表达他们的期望结果。这与当前的命令式交易形成鲜明对比,其中每个参数都必须由用户明确指定。
Tx(交易) 对终端用户来说是一条死胡同
Web3 中当前基于 Tx 的方法被证明是复杂的,导致用户体验不佳和效率损失,因为用户被迫在没有足够访问信息或使用复杂执行策略的情况下做出决策。
为了说明这种复杂性,考虑以下场景:您希望与 Arbitrum 网络上的去中心化应用(dApp)进行交互,但您的资金目前存储在以太坊区块链上:
访问 dApp 网站
尝试将您的钱包连接到 Arbitrum,但发现没有可用的资金
打开一个新标签页,探索将您的资金跨链的最佳方法
前往跨链桥
将您的钱包连接到另一个区块链(以太坊)
将资金从以太坊转移到 Arbitrum
等待跨链完成
返回原始标签页
将您的钱包切换回 Arbitrum
现在,您终于可以使用在 Arbitrum 上桥接的资金使用 dApp 了。
甚至在用户有机会与 dApp 本身进行交互之前,就已经感到沮丧。在未来百万个 Rollup 的世界中,这些问题变得更加明显。
那么,我们如何从命令式范式转变为声明式范式呢?为了理解基本原理,让我首先简要总结一下基于账户抽象的概念(AA)。
账户抽象简要回顾
在以太坊中,有两种类型的地址:智能合约和外部拥有账户(EOA)。
EOA 有能力发起交易,智能合约不行。因此,今天使用的大多数以太坊钱包都是 EOA。虽然有智能合约钱包(SCW),如 Safe,但它们需要 EOA 触发任何交易,因为智能合约本身无法发起交易。尽管如此,SCW 具有显著的优势,因为它们可以执行复杂逻辑,为钱包提供各种新应用,而 EOA 仅限于签名。
为了满足对 SCW 的需求,而不需要单独的 EOA,ERC-4337 引入了一种称为用户操作(UserOp)的新型交易类型,并引入了一个名为"Bundlers”的新角色。此外,ERC-1271(用于合约的标准签名验证方法)引入了一种标准方法,用于验证给定合约的签名是否有效。这些更新改善了 SCW 的用户体验,为用户提供了更流畅的流程。具体过程如下:
用户签署一个 UserOp,指定所需的操作。UserOp 不直接发送到主要内存池,而是多个用户将其发送到备用内存池。在这里,执行者和 Bundlers 发挥作用,将这些 UserOp 捆绑在一起,并将它们作为捆绑包提交给入口合约。然后,该入口合约与智能合约钱包进行通信。
一旦 SCW 接收到捆绑的 UserOp,它经历一个两步过程。首先,它执行 ValidateOp,这涉及检查适当的签名者、访问控制和速率限制,以确保操作是合法和安全的。验证成功后,SCW 继续使用 ExecuteOp 函数执行操作。这些操作可能包括转移资金、执行交换或购买 NFT 等任务。
账户抽象的一个关键优势是 Gas 抽象,它简化了用户的 Gas 支付过程。这就是支付主体的作用。支付主体合约充当另一个实体。当用户发送交易时,UserOp 被发送到支付主体合约。支付主体验证并确保它将支付交易的 Gas 成本。它将相应数量的原生 Gas 代币退还给 Bundlers,充当退款机制。只有在处理完这笔 Gas 支付后,UserOp 才会经过 ValidateOp 和 ExecuteOp 阶段。
支付主体还允许用户在执行 UserOp 之后执行其他操作,提供了进一步的灵活性和控制。通过利用支付主体和 Gas 抽象,用户可以进行交易而无需担心直接管理 Gas 成本,使流程更加流畅和友好。
AA 的一个限制是它无法支持跨链付款人。让我们考虑这样一个场景:用户在以太坊网络上的 SCW 上拥有 USDC,但希望使用支付主体来支付 Arbitrum 网络上的交易费用。当支付主体在后操作函数期间尝试将 USDC 从用户转移到支付主体时,就会出现问题。USDC 存储在以太坊上,而支付主体合约位于 Arbitrum 上。基本上,账户抽象主要设计用于单域使用,并且缺乏在多个链上无缝操作的内在能力。
特定于 Intents( 意图 ) 的应用程序
账户抽象通常被简化为"无需 Gas 交易”、"无需助记词恢复”和可能的"速率限制”。是的,这些功能确实很有趣,但还不够酷。它们可能无法完全捕捉到 AA 真正引人注目的本质。账户抽象最引人注目的方面在于其架构,它将钱包转化为意图的入口。
那么,什么是意图?
在标准的交易过程中,当验证者收到交易签名时,它们会根据特定状态遵循特定的计算路径。此外,费用作为激励,促使验证者按照这种方式进行操作。然而,使用意图时情况有所不同。意图不规定固定的计算路径,而是允许满足特定条件的任何路径。当用户签署并共享意图时,他们授权接收者代表他们选择计算路径。这种区别使得意图更精确地定义为签名消息,促进从给定起始点开始的一系列状态转换。
值得注意的是,单个交易可以包含多个意图,从而实现重迭意图的匹配。这显著提高了 Gas 和经济效率。例如,在由构建者维护的订单簿中,可以在达到市场之前高效地将两个订单相互抵消。此外,意图允许更灵活的用户 Gas 支付,例如允许第三方赞助 Gas 或接受不同代币的支付。
因此,UserOps 不是意图,因为它们基本上是 Tx。然而,AA 使钱包成为意图的入口,这是通过智能合约钱包内的验证逻辑实现的。这种验证逻辑允许表达和执行与用户账户相关的简单意图。然而,SCW 缺乏对全局状态进行推理的能力。
账户抽象在根本上是为了服务于"特定意图”。在这种情况下,用户可以通过其 SCW 指定和实施简化的意图,只要这些意图满足某些限制性要求:
它们专注于单一领域;
它们只使用和执行与用户账户相关的信息;
它们涉及 Gas 补偿。
特定于意图应用程序的示例
因此,帐户抽象主要迎合以用户为中心的目标。然而,还有许多"意图特定”应用程序的例子可以使用 AA 实现,正如 Paradigm 所强调的:
限价订单:用户可以指定只有在他们收到至少 200 个 Y 代币时,才能从他们的账户中取走 100 个 X 代币。
Gas 赞助:用户可以选择使用 USDC 支付交易费用,而不是 ETH,并在其账户中分配 USDC 以支付付款人的 Gas 费用。
委托:可以以预授权的方式限制与特定账户的交互。例如,ETH 可以指定用于购买 OpenSea 上列出的 NFT,或者特定地址可以限制仅与 Uniswap 和 Sushiswap 进行交互。
交易批处理:用户可以允许将多个意图批处理到单个交易中,以提高 Gas 效率。
聚合器:用户可以指定使用"最佳”价格或收益进行特定操作。这个意图可以通过提供在多个场所执行聚合并选择最佳路径的证明来实现。
虽然 AA 和意图特定应用程序是重大进展,但它们在多链环境中也有其局限性。让我们考虑这样一个场景:我拥有 ETH,并希望通过利用不同 Rollup 上的流动性尽可能多地购买代币 XYZ。使用 AA,我可以轻松快速地在任何 Rollup 上使用我喜欢的 DEX 聚合器。然而,挑战在于我仍然需要手动发现在所有 Rollup 上可用的最佳 DEX 聚合器。
因此,在多链世界中,需要一种全面而灵活的意图语言,能够有效地提升扩展性。
通用解决方案
在以意图为中心的世界中,用户声明或签署他们的偏好,网络依赖第三方参与者(求解器 / 执行者)代表他们执行这些偏好。
需要强调的是,当前基于交易的方法也允许用户外包交易,但不同之处在于第三方是谁。现在,应用程序代表用户构建交易,而且他们这样做并没有为获得最佳结果进行优化。因此,意图的创新不在于将交易创建外包给第三方,而是增加了一个专门的第三方网络,可以提供更好的结果。
这可以提高执行效率,因为这些求解器可以集成更多关于其他链状态的信息,而无需与用户进行通信。
为了说明这一点,让我们回顾一下我拥有 ETH 并且目标是通过利用不同 Rollup 之间的流动性购买尽可能多的 XYZ 币的情景。在以意图为中心的世界中,我可以告知内存池我拥有 ETH,并且希望获得最大可能数量的 XYZ 币。一个高度复杂的求解器,将高效地找到一个解决方案。这些求解器的激励应该导致相当优化的结果。在这种多链环境中,即使是基本任务也变得不切实际,例如一个单一公司运行一个 DEX 聚合器来与所有新的 Rollup 和领域集成。因此,在这样的多链环境中,特定于意图的应用缺乏可扩展性。然而,对于意图而言,一种灵活且通用的语言可以有效地扩展,因为它作为一个无需许可的系统运作。没有必要让一家公司充当涵盖每个链的全链 DEX 聚合器。相反,一组求解器可以竞争为用户提供服务,其中一些专门用于特定的 Rollup 类别,其他一些用于不同的领域。这种方法表明,跨链的意图具有重要的实用性和能力,超越了普通的账户抽象,即使对于简单的用例也是有利的。
表达、传达和执行意图的理想基础设施应该最小化矿工可提取价值(MEV),最大化抗审查性,并针对跨领域交互进行优化。此外,它应该仔细考虑精细用户意图传达和用户体验之间的平衡,因为这个决定对意图协议的架构有重大影响。此外,还有许多未解答的问题,例如如何证明什么是最优的,跨领域意图将在哪里发布,以及求解器将如何确定要搜索什么。
通用解决方案的示例
虽然这个愿景很有前途,但第一步是建立一个意图层,用户可以在其中表达他们的意图,而求解器可以竞争解决这些意图。像 Anoma、SUAVE、Essential 和 CoW Protocol 这样的项目都在争取成为区块链的意图层,采用不同的方法。
然而,由于意图层的概念正在发展,并且其中许多设计原则似乎相互矛盾,因此现在还为时过早来进行比较。建立这样一个层面面临着重大挑战。
Anoma 是一个用于全栈去中心化应用的统一架构。它从头开始设计,用于涉及无限用户、发出无限数量意图的应用,每个意图的复杂性各不相同。Anoma 遵循意图为中心和同质架构 / 异质安全的原则,共同构成了构建去中心化应用的声明性范式。意图被提交给意图传播节点,它们形成意图池。撮合器分析这些池,找到可以组合的意图,当它们组合在一起时可以相互满足。该协议的状态机通过作为用户账户上的不变量的有效谓词,实现了逐步执行和解耦的验证。Anoma 使得构建新颖应用变得简单,这些应用在现有的以太坊(EVM)和类似以太坊的协议上构建起来可能笨重、有限或不可能。
SUAVE 是用于价值表达的统一拍卖协议。SUAVE 试图赋予用户权力,并实现公共区块链的最大去中心化。SUAVE 将内存池和区块构建角色从现有的区块链中解耦,并提供了一个高度专业化和去中心化的即插即用替代方案。共享相同的排序层使得加密货币保持去中心化,区块构建者可以捕获跨领域的 MEV,验证者可以最大化收入,用户可以进行最佳执行的交易,同时减少对每个领域的经济集中压力。SUAVE 是一个集成环境,促进了在表达、执行和结算偏好方面的去中心化协作。核心概念是偏好,用户签署的消息用于表达目标,实现在多个区块链上进行简单转账或复杂序列的功能。求解器竞争提供最佳执行,包括捕获 MEV 和提供去中心化的订单流价值。
Essential 正在开发一系列产品,推动区块链生态系统从价值提取向意图满足的转变。他们正在创建一种用于表达意图的领域特定语言(DSL),一种面向意图的账户抽象的以太坊标准,以及一个模块化的意图层。DSL 允许标准化的意图表达和优化求解,增强了意图为基础的应用的组合性和开发性。面向意图的账户抽象标准赋予求解器根据用户意图构建有效交易的能力,将意图功能引入现有的 EVM 链。模块化的意图层确保了仅意图的架构、聚合的订单流、MEV 抵抗和跨链意图执行的可能性。Essential 的使命是赋予用户权力,消除剥削,促进以用户为中心和公平的区块链未来。
CoW Protocol 技术为交易者和求解器构建了一个网络,实现了无需信任和高效的点对点交易。CoW Protocol 通过将批量拍卖作为一个关键概念,将自己独特地定位为离散时间结算层(如以太坊)的原生交易基础设施,并为用户提供公平和可访问的交易。交易可以直接通过底层的链上 AMM 进行结算,也可以通过 DEX 聚合器进行结算,具体取决于哪个池 / 路径提供最佳价格。因此,它本质上是 Dex Aggregator 的 Dex Aggregator。CoW Protocol 通过 Coincidence of Wants(CoWs)实现批量拍卖,以最大化流动性,并在需要时利用所有可用的链上流动性。协议不断运行批量拍卖,因为求解器,即负责找到最优批量结算的各方,竞争解决它。
意图实验项目概述
下面的插图提供了一份非详尽的意图实验项目概述。然而,需要承认的是,不同类别之间可能存在一些重迭,并且这个展示是简化的。目前引起重大关注的意图特定应用的典型例子是 1inch Fusion 或 UniswapX。由于这个领域还很年轻且快速发展,这个插图可能在短短几个月内发生很大变化。
结束语
对于最终用户来说,Web3 中当前基于 Tx 的方法被证明是复杂且耗时的。它涉及在各种基础设施之间指定执行路径,导致用户体验令人沮丧,并可能被更复杂的参与者利用。基于意图的应用程序提供了从命令式范式到声明式范式的有希望的转变,增强了用户体验并最小化了 MEV。虽然账户抽象(AA)和特定意图的应用程序带来了令人兴奋的进展,但它们也存在一些限制,特别是在多链世界中。
为完全以意图为中心的世界构建一个意图层面面临着重大挑战,因为我们需要克服当前系统的复杂性,并创建一个用户友好、高效和去中心化的基础设施来表达和执行意图。因此,我们离这个范式还有很长的路要走。然而,有几个项目正在致力于这个努力,我们预计未来会有更多项目涌现。
随着意图的采用不断增长(在 ERC4337 的推动下),用户可能会转向替代内存池。谨慎管理至关重要,以防止中心化风险和寻租中介机构的崛起。
来源:金色财经