最近在回顾一些链上的基建的时候,发现 DEX 的一些应用支持挂单了,虽然之前也听说过 Uniswap 在升级 V3 之后就可以设置 limit order 了,不过自己也没有使用过,这次就利用这个机会体验了一下。
Cetus DEX
这里使用的是 SUI 上的一个 DEX Cetus,应该是 SUI 上用得比较多的一个 DEX,可以理解为 ETH 上的 Uniswap。使用它的一个理由是,正好钱包里面有一点点 SUI,并且在 SUI 上交易的 Gas 比起 ETH 还是便宜一点。
上图是 Cetus 的 Swap 模块,和其他的 Swap DEX 一样,你需要指定转换的 Token,DEX 会自动帮你寻找路径,之后点击 Comfirm 一笔交易就完成了。
除了 Swap 模块,Cetus 还提供 Limit order 的能力:
在 Limit 模块中,用户可以进行挂单的操作,相比于 Swap 这种市价交易的模式,Limit 挂单还需要额外指定成交价格,以及过期时间,到期之后订单会自动取消。
挂单的原理
首先我们需要知道添加流动性的原理。我们知道 DEX 的代币对需要满足 x * y = m 这个公式,在兑换的过程中,某一个币的数量减少,则其对应的价格就会上升,依旧满足上述的公式。
设想一下,假如我们有一个 USDC - SUI 的池子,现在发生了一个极端的情况,大家都用 USDC 来兑换 SUI,一瞬间我们的流动性被掏光,我们的池子只剩下了 SUI。那么这个时候,作为池子的提供者,我们就将我们的 USDC 全部换成了 SUI。
更详细地来说,假设我们认为 SUI 后面价格会突破 10U,目前它的价格可能是 5U,那么我们可以设置一个范围是 9.99 - 10 U 的 SUI/USDC 池子。这样当价格突破 10U 之后,我们的池子就会被完全兑换为 USDC,相当于我们的挂单被成交了。
需要注意的是,这种挂单的方式适用那些支持自定义池子范围的协议,并且在挂单成交之后,需要将池子撤出来,不然价格再次回来之后,你的 USDC 又会被换回 SUI。
尝试一下
我在 Cetus 上尝试挂了一个 10U 的单子,卖出 3 个 SUI。
仔细看了一下对应的交易,手续费在 0.01 SUI 左右。需要注意的是,由于所有的交互都是和链交互,所以取消订单也是需要支付 Gas 费的。
整体的操作下来,和中心化交易所的体验基本没有差距,如果你并不相信中心化的交易所,那么试一下这类的 DEX 也是可行的。