5月19日晚间,BitMEX出现宕机。距离上一次宕机,3.12暴跌期间,不过短短2个月时间。Bitmex官方表示,宕机原因是由于交易引擎停机,用户资金是安全的,宕机期间不会发生清算;随后21:30左右,BitMEX宣布重新上线。
根据非小号官网数据,BitMEX开设于2014年,目前是全球最大的比特币衍生品交易所,对于比特币类的产品提供1-100倍的杠杆,日成交量高达225,869.57枚比特币,在全球综合排名榜上排名第6,是很多用户心中比较受欢迎的老牌合约交易所。
按理来说,BitMEX实力强劲且运营多年,一个每天成交额近156亿的技术团队,应该不可能解决不了显而易见的技术性宕机问题,但今年以来就出现了近4次宕机事故(3.2宕机12分钟,3.13宕机2次,5.19宕机30分钟),到底发生了什么导致昨晚交易引擎中断?交易所宕机都预示着什么问题?非小号对此进行了深入调查分析。
1.撮合/交易引擎 为什么宕机?
交易撮合引擎,简单来讲是用来撮合交易的软件。交易撮合引擎可以比作是一个黑盒子,承接很多输入和输出。
例如,可能的输入包括:
创建新的委托单(NewOrder):一个新的委托单可以作为交易撮合引擎的输入,引擎会尝试将其与已有的 委托单进行撮合。
取消已有的委托单(CancelOrder):用户也可以取消一个之前输入的委托单,如果它还没有执行的话,即开口订单。
还有其他很多类型的输入,出于简化考虑,我们现在只举例了两个输入。
交易撮合引擎的输出则是一些事件,以便及时通知其他应用处理。
例如,当引擎撮合了一笔交易后,就会触发一个TradesGenerated事件;而当取消了一个已有的委托单后,引擎就会触发rderCancelled。同样,大家可以根据自己的需求来定义引擎的输出,这里也只举例两个。
由多个交易引擎客户端组成的交易系统
现在再来看这次的交易引擎中断事故,从客观上就能很好理解了。Bitmex本身的用户量比较大,一旦突然出现大行情,会有大量用户同时下单撤单(这其中还有大量的套利程序会启动),相当于短时间内大量的输入挤兑了系统,这就会导致“系统过载(system overload)”。
有不少用户此前都诟病过BitMEX系统过载问题,而且一直也没有得到解决。有资深玩家对此给出了建议:尽量使用全仓保证金,同时保存自己的存款地址,即使出现系统过载的情况,照样能够存币进来,降低爆仓价格。因为存款处理的优先级较高,不会受到系统过载的影响。
由以上可知,系统过载状况的发生需要有个大前提:出现行情,大量用户集中操作。
我们截取了昨晚8:30~9:30的行情K线,可以看到在白色线段区域内,宕机前一小时内BTC/USD从10000下跌至9664美元,说明一定程度上,当时的行情确实会引发系统过载而导致宕机。
5月19日晚,OK当季10分K线走势
2.交易所会主动宕机?
在最高交易量期间,通常当交易者需要做出快速决策时,BitMEX订单撮合系统将停止运转,不允许用户在高峰期间访问,或在行情走向与头寸相反的方向时去关闭订单。
所以除了客观原因可能导致的宕机,还有很多人猜测BitMEX是“人为宕机”,以此来阻止比特币暴跌。
北京时间3月13日上午,BitMEX加密交易平台出现了短时宕机,交易暂停。根据BitMEX官网显示,目前其平台比特币永续合约价格停在3715美元左右,自10:15分开始出现交易暂停情况,10:30分左右恢复正常。对此,BitMEX回应称,我们的云服务提供商存在硬件问题,这导致BitMEX请求在10点16分到10点40分之间有所延迟。
而在短短半天后,北京时间3月13日20:56左右,BitMEX再度出现交易宕机的情况。
而本次事件发生后,BitMEX官方的回应称DDoS攻击是导致短时宕机的真正原因,而当天早间的那次宕机也是因为相同的问题所致,并非此前指出的“云服务提供商存在硬件问题”。
明显的前后说法不一,让大家对真正宕机原因存疑。
接着交易员@Lowstrife在推特上指出,BitMEX交易所本身过高的杠杆比重导致在价格开始下跌时,巨量的清算订单吞噬了市场上的订单,而持续的爆仓直接导致了价格的崩盘式下跌,BitMEX这种暂停交易的行为可以理解为是一种把清算的“自动档”切换为“手动档”的操作。
而这种强行终止市场无休止的爆仓处理让市场暂时摆脱了源源不断的卖盘打压,并“帮助”比特币价格实现了企稳反弹。
13 日上午 10 点 15,BitMex 宕机停止交易,10 分钟后,Coinbase 比特币现货价格从3800 美元拉升至5700-5800 美元。
“我们猜测应该是 BitMex 自己把交易给停了,要不然当时直接就可能把它 3 万多个比特币的保险基金全部爆光。那种情况下,对交易所来说最佳的选择就是停下来。在一个没有监管机构和没有熔断机制的市场,由一个当时交易量最大和持仓量最大的交易所完成了一次「自我熔断」,这也拯救了市场。”业内专业人士分析。
我们查询了BitMex官网的保险基金,发现3月12日“黑色星期四”之后,隔天的比特币保险基金急剧减少了2611.922枚BTC。如果没有“手动档”的“自我熔断”,很可能损失会更大,这必然会对交易所造成不小的冲击和风险隐患。
从这个角度来看,BitMex也有动机在发现行情急剧暴跌时,可能会进行人为宕机。3.12的情况适用这样操作,但昨晚的行情似乎没有严重到400美金就得紧急刹车的程度。
3.宕机是为了增加保险基金?
除了上述两个宕机原因,还有一个观点流传较广。
当用户想在在一些明显的价格波动时退出交易,更改止损或更改杠杆,这时候一旦发生宕机,如果BitMEX能够以高于破产价格的方式清算头寸,那么额外的资金将被添加到保险基金中,现在该基金每月稳步增长。如果BitMEX无法以破产价格清算头寸,BitMEX将利用保险基金余额来提交价格更为激进的强平委托。
根据BitMEX官网介绍,对保险基金的规模增长做出了解释,我大致概括一下:为了避免投资者仓位被自动减仓,交易所需要在行情跳水时给用户填补资金,然后交易所会测算这种情况发生,按照当前用户量,需要准备多少资金,这个资金随着用户规模和业务规模变化,即规模增长。
也就是说,交易所需要大量的保险基金余额来保证现有规模下,一旦发生极端行情,能够有足够资金“兜底”和防范更大的风险。说个不恰当的比喻,当中行原油宝因为极端行情穿仓时,中行能够有足够的储备金来偿付。这个保险基金就相当于传统银行的储备金。
BitMEX的保险基金从2019年年初到现在,增加了14681.62枚BTC,因此被一些用户怀疑,这部分增长就是来源于人为宕机或“操纵市场”、交易所内幕狙击后,平台从客损中获取的资金。
“由于平台本身最吸引投资者的,恰好是提供高倍数杠杆服务,因此每一次市场出现短时急涨急跌时,BitMEX平台都会出现巨量的爆仓单。这意味着每一次比特币价格异动时,BitMEX交易所都可以从中获得相当可观的收益。”有用户曾对此发表过意见。
不过我们认为,所有分析宕机原因的观点中,这一类“阴谋论”是最难证伪,也最难证实的,纯粹是一种猜忌。BitMEX未曾公开过这部分保险基金增长的具体来源,我们推测,可能是每个季度的盈利(主要是手续费)按比例计提,也可能是其他业务的收益,会更合理一些。