以 Cowswap、Uniswap、Anoma 等为例,详解意图如何优化交易体验?
原文标题:An Incomplete Primer on Intents
原文作者:0xemperor.eth
编译:倩雯,ChainCatcher
近期在加密领域的研究讨论中,意图流行起来,各种协议都在利用这一概念,例如 Anoma、Essential 等协议都在借鉴这一概念。
本文旨在对各种观点进行初步介绍,最后介绍用自然语言表达意图时意图解决架构的呈现形式。意图概念若能成功,则有望在各个层面彻底改变应用架构。
意图是什么?
意图允许用户指定某些交易条件或偏好,而无需提供准确的消息调用,从而提高灵活性,降低链上复杂性。
在“基于意图的架构及其风险”一文中,对意图的定义是:意图是一组声明性限制,允许用户将交易创建外包给第三方,而不放弃对交易方的完全控制。
在一期播客中,来自 Anoma 的 Chris Goes 从两个方面对其进行了定义:意图指的是“对某些系统状态偏好的可信承诺”和“对信息流限制的可信承诺”。
关于意图的一种直观理解方式就是,意图基本上代表期望的结果。当你表达一个意图时,你只是定义了你想要的结果,而不是实现目标的过程。
比方说,如果你希望用Tether(USDT)换取ETH,那么你就不需要自己管理整个过程——选择交易所、建立账户/签署交易、处理转账(或清理钱包中的加密货币灰尘)等,只需提交一份意图书,表明我想要用 1 个 ETH 换 2000 个 USDT。另一实体(称为 Solver)会接受你的意图,并找出实现它的方法。Solver 会处理杂乱无章的细节,努力为你优化最佳结果。
关键在于,意图侧重于结果而非过程。用户定义所需的结果,而其他人通过过程进行实现。意图可以让你指定结果,而不用担心步骤,从而大大简化了大多数用户在加密货币中使用的交易流程。
更高纬度的想法是,用户可以定义他们想要的东西,而无需指定他们希望从哪些合约开始交易(我们可以称之为计算路径或简单的交易路径)。用户还可以表明他们更喜欢某些路径或合约,从而对此加以限制。
用例
Cowswap
Cowswap 利用分批拍卖(batch auction)作为其核心价格发现机制。Cowswap 不像 AMM 那样立即执行交易,而是在链外汇总订单并分批结算。这样就能为一批交易中的所有交易确定统一的结算价格,消除了即时执行模式中常见的抢先交易等问题。分批拍卖还能同时结算许多交易,从而优化 gas 费。Solver 之间进行公开竞争,提交订单结算解决方案,确保每批交易的交易方能够利益最大化。最佳解决方案会确定最终统一价格。总体而言,分批拍卖实现了公平、效率和 MEV 保护,而即时执行的模式则无法实现这一点。
Cowswap 分批拍卖模式的一项关键创新是能够在订单之间找到需求重合(coincidences of wants,CoW)。CoW是具有互惠需求的交易之间的直接点对点结算。这种流动性共享意味着无需外部流动性提供商来促进这些交易。CoW 还可同时包含环形交易中的多个资产。通过最大限度地利用 CoW,分批拍卖比孤立的资金池能获得更多的流动性。在允许的情况下,结算将利用 CoW,剩余部分则通过链上流动性来执行。将分批拍卖与 CoW 流动性共享相结合,可为交易者提供更优的定价和执行。
CoWswap 模型与意图模型类似,用户以限价订单的形式表达交易意图,交易意图会被输入订单簿,Solver利用订单簿状态,将它们以环形交易的形式进行匹配,或通过 AMM 进行路由(即用户只提及价格,不提及计算路径或他们想要执行的具体位置)。
Uniswap X
Uniswap X论文提出了一种去中心化交易协议,它使用签署的链外订单,并通过荷兰式拍卖进行链上结算。用户签署订单,指定输入/输出代币、数量和价格界限等参数。这些订单会分发给“填单者”(Filler),由他们竞争最佳执行价格。
Uniswap X 建议通过链外询价系统设定初始荷兰式拍卖价格。用户可以向填写者网络询价,并对最佳报价提供短暂的独占期,以激励诚实的定价,之后订单进入公开荷兰式拍卖。
Uniswap X 和 Cowswap 的相似之处
- 两者都使用链外签署的订单,并在链上分批汇总和结算。与链上订单相比,这可以节省 gas 费用
- 两者都旨在促进流动性提供者之间的竞争,找到最佳的执行价格(流动性提供者在 cowswap 中被称为Solver,在 uniswapX 中被称为 Filler)。
- Cowswap 强调使用 CoW 推动直接的点对点交易,而 Uniswap X 则更侧重于整合链外和链上的流动性来源。
- Uniswap X 中的 RFQ(询价)系统和签署模式(用户表达意图之后让其他用户填写订单)都类似于意图架构。
意图的正式定义
用户只需表达他们的意图,比如“我想用 X 资产换 Y 资产”,Solver 就会找出如何以最佳方式实现该意图,并在幕后处理所有区块链相关的细节。Solver 给出意图已实现的证明,可以参与拍卖等机制,以去中心化的方式实现意图。
该博客探讨了一些定义:
第一个模型:意图 i 被定义为一个元组 (B,E,T) :
- B 表示支持的 “开始” 状态集。
- E 表示支持的 “结束” 状态集。
- T 是一组首选的交易序列。
- 状态转换函数 s:Q×T → T 通过一系列事务 t 从起始状态移动到结束状态。
如果一个意图通过事务序列 t∈T 开始于状态 q0∈B,并在状态 qn∈E 结束,则该意图被视为已实现。
意图清除:如果B、E、T集合有非空的交叉点,则可以清除一组to,…,tm的意图,允许使用这些交叉点创建元意图 t’。
正如我们前面提到的,意图由用户发出,然后由 Solver 解决;无论它以任何格式表示,意图对于 Solver来说都是一个优化问题。通俗地说,用户可能会提出“我想购买价值 4 ETH 的 BTC”这样的意图,Solver通常会找到一个地方来填充或交换这个订单。但意图并不止于此;它们还允许增加“尽可能低的滑点”和“不在禁止美国用户交易的 DEX 上交易”等约束条件,而这些约束条件又成为 Solver 必须牢记的额外约束条件。
挑战包括:
- 需要简化意图表达。
- 特定意图可能对用户福利造成影响,例如 DEX 中的零滑点。
- 由于风险或法律原因,执行跟踪可能需要关注。
目的就是在清楚地捕获用户意图偏好与计算效率和用户体验的实际考虑之间取得平衡。
这里还提到了对意图搜索的拉格朗日解释。
对我来说,意图的表述看起来像是马尔可夫决策过程。不过,马尔可夫决策过程的状态转换是随机的,而这将是一个具有绝对状态转换值的确定性 MDP,可以用值迭代、策略迭代或 MCTS(蒙特卡洛树搜索)来求解(最后一部分也用于求解 Alphago 中围棋的部分)。
意图可以促进用户体验
意图可能是链上用户体验发展的下一个阶段。目前链上用户体验的方式主要围绕事务层面,用户在每笔事务上签名,这也是操作的一部分。因此,链上的每一步都是通过事务来表达的。用非常简单的话来说,意图就是元事务,其中的活动是在非常抽象的层面上表达的,由 Solver 来尽力满足用户的意图需求。这可能包括以 X 的价格购买一些 ETH,想要获得尽可能好的交易,这既可以在以太坊上的 Uniswap 上以单笔巨额掉期交易的形式进行,也可以在 roll-up上进行切分,然后买入 ETH(也要计算费用)。
目前从 USDC 转换到 ETH 的简单掉期交易包括用户批准代币的限额、批准代币类型,然后批准交易,而在以意图为中心的世界中,用户可以从这些细节中抽象出来,只需执行感兴趣的操作即可。在网页设计中有一条非官方的规则,即执行任何操作都不能超过三次点击;目前如果用户要进行掉期交易,他们必须同时选择代币,或许还要调整滑点和交易,这对于一次交易来说工作量看起来不大,但是多次重复之后将是导致十分烦琐的用户体验。
Unibot 以一种非常基本的方式,让人们看到了针对意图的架构呈现的模式。它剔除了交易中的复杂部分,为交易者提供了简单易用的用户体验,但是也对可能的灵活性会有一些限制。尽管该 app 据称存在密钥处理方面的风险,进而可能导致攻击,但是它在收取税费的情况下仍具有稳定的用户群,这表明加密货币世界里用户体验方面的机会尚待发掘。
会话式意图流程
在以意图为中心的区块链世界中,人工智能该如何介入?意图识别的概念在自然语言处理领域已经存在了几十年,并在对话中得到了大量研究。例如,假设用户访问旅游网站并与聊天机器人对话;最初可能是想要预订航班或查看预订或状态,然后用户会提供各种详细信息。如果是预订机票,用户需要提供目的地、时间、日期和感兴趣的机票等级;在某些情况下,用户可能还需要选择机场。在这个例子中,用户的目的就是对话的意图,而用户给出的各种细节就是为实现这一意图而需要填写的空格/细节(slot)。
对话中的有注释的对话状态
意图识别和细节填充的另一个例子是,当你打算播放一首歌曲时,句子中会出现与歌曲相关的各种空格(细节),如歌曲名称和歌曲演唱者。
在对话世界中,意图分类和空格填充是一个非常复杂的问题,因为你的对话可能会跨越多个回合,有时会有全局意图和局部意图,你必须跟踪众多状态。每当你使用 Siri 和谷歌助手安排闹钟或在日历或生日中记录某事时,其背后就是某种程度的意图分类与空格填充。
这与区块链有何关系?当我们从一个以交易为中心的世界转向一个以意图为中心的世界时,我们如何从意图到交易的细节还没有在大众讨论中出现。意图池和内存池之间的接口并不存在。访问链上模型并使用它们进行意图识别和空格填充为意图池和 Solver 提供了一种自然语言接口(在我看来,这是最自然的接口)。
其大体思路是在一个链上访问一组模型,将每个意图还原为一种 DSL(特定领域语言);这种特定领域语言将包括核心意图(买、卖、桥接、借/贷)等细节,并有地址、大小、滑点偏好等其他细节(取决于意图类型)。全局 DSL 允许任何人部署模型,将意图简化为特定的 DSL。在存在多个此类模型的情况下,将在模型集合中采取票选出的模型。
链上模型的可用性有助于我们安全、可证明地开发这个接口,每个意图/解法的计算证明都可以得到证明。在某些情况下,捕捉各种模型多数投票的结果可能会让我们深入了解意图是如何被选择的,在某些个别的情况下,甚至可以帮助 Solver 更好地求解这些意图。
这里使用的链上模型可以是一个标准的深度学习模型,如 BERT,它正是为此目的而训练的,或者在集合中使用大型语言模型推理;这一细节可能取决于不同的参与者或 Solver。在加密意图池的情况下,我们需要使用同态加密或私有推理方法来确保数据隐私,同时还能对其进行计算。每个纪元或每隔几个纪元,都可以在模型为验证者的链上发布一个证明。验证者可以是人类,也可以是另一个模型,发布关于模型有效性的声明。无论模型是否能准确处理意图,最后这部分流程都能确保模型的生命周期得到考虑。有时,当验证者是成熟的参与者时,该参与者可能会发现模型的缺陷,而这些缺陷可以迅速解决,并用一个更新的模型取代。
如下图所示,对于“用我钱包里的稳定币和灰尘进行购买”这个行动/想法,一旦它进入意图池,就会通过各种模型并解析为一个 DSL,其中包含各种细节,如意图、子行动和需要填充的细节。对 DSL 的解析可以尽可能详细,也可以尽可能抽象;意图对话可能会持续几个回合,因为灰尘的阈值可能需要确定。一旦 DSL 就位,Solver 就可以选择最佳路径将这些余额转换为 ETH,然后将交易传递给内存池。
意图解决模型示例
另一种 DSL 架构——Essential
账户抽象将所有账户变成智能合约,使以太坊中的账户与签名者分离。这使得账户可以根据用户需求定制不同的授权逻辑。然而,要实现完全的账户抽象需要对以太坊的核心协议进行重大的调整。
EIP 4337 采用了一种不同的方法,在不改变共识层的情况下实现账户抽象的好处。它引入了“用户操作”——提交到备用内存池的伪交易,并由“捆绑者”(bundler)将其捆绑到调用 EntryPoint 智能合约的交易中。
这就可以实现社交恢复、以任何代币支付费用和分批交易等功能。开发人员可以设立适应不同用例的自定义账户。通过避免协议变更,EIP 4337 可以更快地为以太坊带来这些好处。不过,它也引入了新的复杂性和行为者,如捆绑者和支付者。由此产生的多个内存池、激励机制和透明度之间的动态变化将需要谨慎的管理。
意图允许用户指定一个期望的结果,而不是一个具体的操作。然后,Solver 帮助用户以最佳方式实现这一结果。然而,目前的实现方式存在局限,表现出中心化、缺乏可组合性以及 Solver之间竞争不足。
Essential 公司提出的一项 EIP 计划将改变这种状况。通过 EIP 4337 等举措进行账户抽象,可以实现基于智能合约的账户,而不是传统的外部拥有账户(Externally Owned Accounts,EOA)。这样用户可以提交通用意图而不需要提交单纯的交易。意图代表用户期望的结果,可由 Solver 再进行补充,以最大限度地提高参与者的满意度。
EIP 7521 提出了一个框架,以支持不断发展的意图标准,而无需不断升级智能合约钱包。用户签署“用户意图”,指定由哪个“意图标准”合约来处理该意图。这些意图会提交给 EntryPoint 合约,该合约会像 EIP 4337 中那样处理签名验证。用户意图内存池与 ERC 4337 内存池同时存在,Solver处理意图。
ERC-4337 账户抽象下的用户意图
Anoma
Anoma 是一种以意图为中心的架构,其核心是以编程意图而非事务来构建基础架构层。意图是由用户签署的表达偏好的部分状态变化,而非完全的状态变化交易。这种以意图为中心的设计实现了去中心化的交易对手方发现和解决。Anoma 正尝试从命令式(declarative)范式转向声明式(imperative)范式。
摘自 Adrian Brink 关于以意图为中心的应用的演讲
用户广播意图,意图在意图八卦网络中传播。不同的节点可以根据自己的计算资源和想要服务的意图类型,专门对某些意图进行传播。Solver 观察意图,并尝试将兼容的意图组合成可在链上结算的有效交易。交易使用阈值加密技术提交到加密的内存池,因此无法进行抢先交易。Anoma 还有一个部分意图模型,允许进行意图组合。
Chris 就意图x Rollup - Anoma 部分意图模型发表演讲
Anoma 对隐私的关注点在于“用户层面的选择”,即让用户可以灵活地披露自己的意图信息,并选择要披露的部分。
该架构由多个组件组成。Tiger 执行引擎使用 ZKP 和同态加密技术处理透明、受保护的私有数据。Typhon 是共识算法。编译器栈包括 Juvix 语言、AnomaVM 和 VampIR。
该架构具有同构(homogeneous)协议和异构(heterogeneous)安全模型。它可以作为独立的区块链部署,也可以作为 ZK roll-up 或去中心化订单簿用于实现以太坊上应用程序的去中心化分布。具有不同安全需求的用户可以利用相同的协议,同时根据自己所需进行安全方面的取舍。
与以交易为中心的模式相比,Anoma 让构建去中心化应用程序变得更容易。意图支持运行 rollup、多元易货交易和私有 DAO 等新应用。总之,Anoma 提供了一个灵活的模块化架构,可满足当代去中心化应用的要求。它专注于意图而非交易,从而解决交易对手方发现和协调的问题,同时保护隐私。
Anoma 有一套独特的设计理念,将意图视为“信息流”和“受限/隐私的信息流”,并据此做出了架构和设计选择。这也说明了一个事实,即 Anoma 的意图构成模型带来了广义的意图模型,在隐私限制条件下,这些模型可能在技术上难以解决,因为效率上的取舍会限制可保密的信息量。
小结
意图作为一个研究和工程问题,目前是加密技术中一个非常有趣的领域。
意图领域需要解决的开放式问题:
l 意图的正式定义
l 除 DEX 以外以意图为中心的应用架构是什么样?
l 在解决任何优化问题时,设计隐私与效用之间的取舍时,都要求能够获得尽可能多的信息。如果要实现隐私的意图,就必须披露一定量的信息才能解决意图问题。
l 解决意图问题所需的最基本知识是什么?
l 如果要切断获取其他知识的途径,那么你所要做出的取舍是什么?
l 如何以一种通用的方式来表述这种隐私与效率之间的取舍。
通用意图可能过于庞大导致难以解决,而对于以太坊这样庞大的状态空间来说,这就会演变为难以解决的问题。这就表明,解决意图问题最好有一些限制条件,而且在尝试组合意图时也应受到限制(当存在共同意图时)。在我看来,通用意图在实践中极难实现,而以意图为中心的架构在本质上将是针对应用的。
虽然这些都是研究问题,但实现意图的设计选择也会产生各种工程问题。它可能会导致过度依赖(经许可的)中间商,这就有可能导致基础设施集中在不同的堆栈中(在 UniswapX 的案例中,77% 的交易量是链外库存填充)。它还会巩固受信中间商的地位,提高参与门槛,扼杀创新,这在 MEV 中已经有所体现。任何意图协议的设计都必须在无权限、隐私、透明和去中心化之间取得平衡。