跳到正文

    按 / 搜索,按 [ 和 ] 前往上一页和下一页。

    深入原理

    定价:BBO 预编译合约

    Exchange 通过 EVM 预编译合约,直接从 Hyperliquid 自己的订单簿读取价格。没有链下预言机,没有定价机器人,也没有价格签名方。

    BBO 预编译合约的技术实现

    永续合约交易所需要价格来完成两件事:撮合成交,以及判断仓位何时被爆仓。在大多数链上,这意味着要么信任预言机运营方,要么使用缓慢且昂贵的去中心化喂价,要么承受这样的风险:负责发布价格的一方只要停止发布,就能让市场冻结。

    HyperEVM 提供了另一种方式。HyperCore 是运行 Hyperliquid 订单簿的那一层,HyperEVM 合约可以通过只读预编译合约读取它:这些是位于固定地址的系统合约,返回实时的 HyperCore 状态,其中包括价格。Exchange 使用位于 0x000000000000000000000000000000000000080e 的 BBO 预编译合约。给定 Hyperliquid 资产编号(在主网上,BTC 为 0,ETH 为 1),它返回该永续合约当前的最优买价和最优卖价:

    (ok, bid, ask) = HyperCore.readBbo(assetIndex, precompileGas)   // a static call with a fixed gas allowance
    require(ok && bid != 0 && ask != 0 && ask >= bid)                // an empty or crossed book reverts
    

    成交价是二者的中点,向下取整,以市场的原始价格单位表示(Hyperliquid 价格乘以各市场的价格倍数):

    price = (bid + ask) / 2
    

    这就是完整的定价流程。同一区块内的所有读取看到的是同一个快照,Exchange 还会在本次调用的剩余部分缓存每个市场的价格,因此同一区块内某个市场的所有开仓、平仓和爆仓都使用同一价格。

    我们放弃了什么,得到了什么

    代价很明显:只有已经在 Hyperliquid 订单簿上交易的市场才能上线。Hyperliquid 没有上线的品种,这里都无法交易。

    作为回报,定价完全没有链下环节。BBO 是 HyperCore 状态,和其账本上的余额一样由 Hyperliquid 的共识验证。没有价格签名方,也没有预言机委员会;Exchange 看到的价格,就是该区块中 Hyperliquid 做市商给出的报价,任何合约都可以读取。

    没有偏离熔断

    有人可能试图在一个区块内推动 Hyperliquid 的订单簿,比如拉大价差或移动最优报价,然后在这里按被扭曲的中间价交易。这是直接使用 BBO 的真实风险。

    在以下情况下读取会让交易回退:预编译合约没有响应、订单簿任一侧为零,或订单簿交叉;买价等于卖价的锁定订单簿可以接受。合约中还包含价格防护:最大价差,以及把中间价与 Hyperliquid 标记价、预言机价比较的价格带。它们在已部署的配置中是关闭的,按设计让成交保持在原始中间价,因此一个被操纵但非零、未交叉的订单簿会被接受。死区、冲击曲线、每侧的未平仓量上限,以及中继对刚开仓位平仓的短暂暂缓(6 秒)可以削减部分获利空间并限制敞口;但它们不能让操纵无利可图,也不能为 LP 的损失设定上限。见风险。

    唯一的实时手段:下架市场

    在价格方面,只有一项管理操作会立即生效:下架市场。守护者调用 pauseMarket(instrumentId),把当前 BBO 保存为冻结的买价和卖价,并将该市场标记为已下架。此后:

    • 该市场的新开仓会回退;
    • 平仓和爆仓仍然可以进行,但使用冻结的订单簿,而不是实时订单簿。

    下架是永久性的:任何人,包括所有者,都不能重新开放这个市场编号。如果已下架的市场可以恢复,持仓者就能在冻结价格和之后的实时价格之间择优,重新开放的时机本身也会成为可以博弈的对象。如果该市场回归,会以新的编号重新上线。冻结价格让运营方可以停止一个市场而不把其中的仓位困住:这些仓位仍可按运营方介入时合理的价格平仓。下架按市场进行,因此一个资产出问题不会影响其他市场。

    如果此时订单簿本身不可用或不可信,守护者可以改为按 Hyperliquid 的标记价或预言机价下架市场(以该价格来源调用 retireMarket);BBO 读取失败时会自动改用标记价。守护者还可以用 setTradingPaused(true) 暂停所有市场的交易,而不冻结价格:平仓和爆仓继续使用实时订单簿,只有所有者才能解除暂停。

    除了市场维护程序负责的未平仓量上限和交易最低额度、非交易时段维护程序在两条派付曲线之间的选择,以及治理多签对构建者的移除之外,其他所有管理操作(手续费、冲击参数、上线市场、维护程序、升级)都是经由时间锁的所有者操作。

    最后更新: