针对 GMX 的 0 滑点招致外部攻击,在取消 0 滑点之前,可能还会有。
撰文:北辰
过去 20 天,GMX 平均每天有 930 名活跃用户交易 1.1 亿美金,可以说是目前最成功的去中心化衍生品交易所。
我们注意到 GMX 的几个竞品的负责人近期针对 GMX 的交易机制展开批评,虽然出发点绝对不中立,但立场只能决定价值判断,而无法左右事实判断。
本文仅针对 GMX 交易机制的事实进行讨论,以作为读者综合判断 GMX 的参考信源。
0 滑点带来外部攻击
GMX 有一个优势,那就是 0 滑点。这意味着你交易 1 美金的代币与交易 1 亿美金的代币的价格是一样的,都是交易时预言机的喂价。
0 滑点对交易者天然具有吸引力,尤其是大额交易者。一个不太恰当但很形象的比喻是,相当于你拥有让时间静止的超能力,然后去跟人打架……
而 GMX 的机制是交易者与 LP 互为对手方,交易者赚钱,意味着 LP 亏钱,因此 LP 是不被保护的。
最早公开怀疑 0 滑点机制潜在风险的是 ZigZag 的创始人 Taureau,这是一个基于 ZK Rollups 的去中心化交易所,他于 9 月 2 日在 Youtube 上表示,GMX 的交易模式有漏洞,他很怀疑这种模式能否长期持续,因为 trader 如果利用漏洞就很容易赚 GLP 代币持有者的钱。
9 月 18 日,GMX 确实遭遇了价格操纵攻击,攻击者利用 GMX 的最小价差和 0 滑点的特性对 AVAX/USD 进行价格操纵,赚取了 56.5 万美元的 AVAX。
价格操纵攻击事件发生后,Joshua Lim 在 Twitter 上分析了攻击的步骤,他是机构数字资产服务商 Genesis 的衍生品交易部门负责人。
根据 Joshua Lim 的分析,攻击者在 GMX 上以预言机的喂价反复开大量多头和空头的头寸(由于 GMX 是 0 滑点,因此预言机的喂价约等于执行价),但是 GMX 上的大额头寸会影响到其它交易所的 AVAX/USD 价格,然后预言机才反应过来并喂价给 GMX,此时攻击者平仓盈利。
这里举一个更夸张的假设可能更形象。
你在 GMX 上做多 10 亿美金的 AVAX,照理说这么大的资金量会拉高你实际交易的价格,但 GMX 的机制是 0 滑点,所以你还是按照预言机的喂价来开仓。但这个体量的交易会拉高其它交易所上 AVAX 的价格,假设涨了 20%,预言机才会把最新的价格反馈到 GMX 上,此时你就可以按 AVAX 涨了 20% 的价格来平仓,并把赚到的 AVAX 提取到其它交易所卖出。你赚到的 AVAX,就是 GLP 持有者亏损的 AVAX。
所以此次攻击是「合理但恶意」地利用 GMX 的交易机制,未来是否还会遇到类似的攻击?目前来看,唯一的避免方式就是取消 0 滑点机制。
不过还有一种修正方式,那就是限额,但只是增加了攻击者的操作步骤(多用几个钱包来开仓),并没有从根本上解决。
Keeper 引出内部作恶?
0 滑点带来外部攻击是已经被事实验证过的,但 GMX 依赖的 keeper 机制来作恶的事件目前并没有发生,我们只能说就 keeper 机制而言,团队的确有作恶的权限。
GMX 的交易流程并不是在你发起交易后,由智能合约按预言机的喂价自动执行,而是所有的交易请求都要经过 keeper 来统一执行,这样确实效率更高,但代价是 keeper 有权限在预言机价格的 0.12% 幅度以内执行。而且最大偏差达到 2.5%才会触发强制执行,价格在 Keeper 的价格和预言机的价格之间。
GMX 为了监督 keeper 不篡改预言机的价格,还有 watcher 节点来验证,但正如上所述,如 0.12% 这种幅度的偏差是完全合规的,因此 keeper 可以非常隐蔽地窃取资产(例如只比公允价格差 0.1%),他可以向交易者窃取,也可以向 LP 窃取,只要偏差足够小,就不会被发现。
当然,这只是一种可能性,并不意味着 keeper 真的会作恶,是否信任 keeper 是一回事,但我们必须要清楚地知道,keeper 的权力并没有关进制度的笼子里。
GMX 的另一个竞品 Deri Protocol 的创始人 0xAlpha 在一篇题为《GMX,一个可能作恶的 AMM》中表示,无法从外部验证他们有没有作恶,但这不重要,重要的是 crypto 世界里最基本价值观也是最大的进步就是从「不作恶」转变为「不能作恶」,所以这种依靠掌权者的善意来运作的系统,不应该属于 crypto 世界。
总结
针对 GMX 的 0 滑点招致外部攻击,在取消 0 滑点之前,可能还会有类似攻击,毕竟 0 滑点意味着交易者在任何时刻都拥有无限流动性。
针对 GMX 的 keeper 机制给团队内部作恶的权限,如果以最坏的恶意去揣测,就是「身怀利器,杀心自起」。
当然,本文不能当作投资意见,因为这只是一种可能性。