前段时间,著名的链上聚合器 1inch 发布了最新功能 Fusion Swap,该功能旨在让客户在交易过程中免除手续费,零滑点并减少用户被 MEV 的风险。根据描述,该功能似乎是 Limit order 和 Private Tx 的结合体。从这方面来看,该功能大大增强了用户体验。为了探究其中的原理与研究其中是否存在一些文档中没提到的用户交互过程中需要注意的地方,本文结合实际体验和官方文档,对这个新功能做一次较为全面的解析。
根据 1inch 官方文档对 Fusion 功能的介绍,Fusion 功能实现上是基于 1inch V5 聚合器合约。不同的是这次 1inch 在此基础上引入了新的概念,名为 resolver。我们首先来看看官方对 resolver 的定义:
从描述上看,不难发现 resolver 是专门用于处理 Fusion Swap 订单的,也就是说针对 Fusion Swap 类型的订单,只有注册的 resolver 才可以处理。为此,1inch 也提供了一份关于如何成为 resolver 的流程:
除了 resolver 之外,描述中同时也提到了另外一个名词—— Dutch Auction,从描述上来看,就是一个兑换率会随着时间不断减少的限价订单。这里似乎有点矛盾。为什么已经是限价订单了,还可以兑换率不断变化?为了弄清楚这个问题,Cobo 安全团队专门去体验了一下。找到了一些关键的信息:
Cobo 安全团队从中摘取了一些关键信息:
明白了这些信息后,结合实际体验过程中的所调用的函数和 resolver 的作用,不难推断出其实 Fusion Swap 功能就是利用限价订单的模式,把兑换率设置为用户可以获得的最低数量的代币反向计算出来的兑换率,然后剩余的浮动部分,也就是用户额外能得到的交给 resolver 来决定。随着时间的推移,用户能得到的部分会越来越少,但是这个“少”仅仅是 resolver 决定的少,而并不体现在链上,毕竟用户签名的订单信息,已经设置了最低的兑换率。
在 1inch 的文档中,有对这部分做了一个详细的图表,我们拿其中一个来进行分析:
通过上面的简单分析,其实我们已经可以对 Fusion Swap 这个功能下一些简单的定义,方便我们后续的一些分析:
产品优缺点分析
通过上面的分析同时结合 Cobo 安全团队的体验来看,Fusion Swap 这个功能的优缺点如下:
优点——手续费
Fusion Swap 本身的订单直接交给 resolver 进行处理,用户本身只需要负责签名,该过程特别适合一些刚好就没了手续费或者以太坊网络突然繁忙导致预留手续费不够的情况,特别是网络繁忙的时候——一般都是市场出现下跌的情况,这种场景下可以零手续费快速交易的场景显然是非常重要的。
优点——MEV Protect
延续 resolver 的话题,由于 resolver 本身来处理交易,在交易超大额(100万 美金 以上),用户可以不考虑可能的被抢跑的风险,相当于交易放进了一个隐私池中,会有 resolver 专门去处理你的交易。
缺点——时间成本
一笔完成的交易需要最长等待 3 分钟的时间来完成,在市场瞬间下跌或者波动比较大的情况,由于 resolver 无法找到合适的兑换率导致用户无法快速成交订单。最终在 10 个区块之后承担大斜率的兑换率下降,严重影响收益。如果同样的兑换场景下, Gas fee 多给一点,只需 12s 就成交了。
缺点——隐含的滑点损耗
通过上面的分析,我们知道 Fusion Swap 这个功能并不是描述所说的零滑点,而是兑换的过程的滑点,即等待的过程中滑点已经产生了。以上面 1inch 给出的图为例,这个滑点最大是 0.1%,50,000 USDC 最差的情况下会损失 50 USDC 左右。但是结合 Cobo 安全团队的多次体验,这个滑点的部分并不能由用户来签名在进行前端交互时决定,用户在签名交易订单的过程中,只能签名设置交易返回的最小值。所以理论上,resolver 可以无视市场真实价格,直接按照用户签名的最低返回数量来撮合用户的交易订单。由于算法本身并不透明,用户无法预估真实的返回额,导致用户需要自行承担这部分的风险。相比之下,使用 1inch 传统的兑换,在网络繁忙的时候交易费也仅为 40 美元,远低于用户需要承受的损失 50 美元。
为了真实还原,Cobo 安全团队也做了适当的模拟,如下:
总结
结合使用体验上,1inch 的 Fusion Swap 功能,除了官方提到的优点之外,用户还需结合自身的场景和使用情况来使用这个功能。在行情波动较大的时候,由于无法预知兑换率的斜率,可能会导致等待时间中用户需要承担较大的损失。从分析来看,等待时间是 Fusion Swap 最大的不可控因素。但是总体来看,该功能适合价格波动较小的时候进行兑换或者进行稳定币之间的兑换,这种情况下就不需要担心因为时间流逝而导致兑换率下降。在市场行情波动较大的情况下,尝试使用 1inch 的传统兑换会是一个较好的选择。